From 4a72a6b9fc5109e77ec41eaba7746e7e88b853c5 Mon Sep 17 00:00:00 2001 From: Alexandre FLAMENT Date: Sat, 27 Aug 2022 06:48:30 +0000 Subject: [PATCH 1/2] Theme: fix autocompletion with the POST method With the POST method, autocomplete.js does not URL encode the values. For example "1+1" is sent as "1+1" which is read as "1 1" since space are URL encoded with a plus. There is no clean way to fix the bug since autocomplete.js seems abandoned. The commit monkey patches the ajax function of autocomplete.js Related to #1695 --- .../themes/simple/src/js/main/search.js | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/searx/static/themes/simple/src/js/main/search.js b/searx/static/themes/simple/src/js/main/search.js index 97c9ea541..9ba3914be 100644 --- a/searx/static/themes/simple/src/js/main/search.js +++ b/searx/static/themes/simple/src/js/main/search.js @@ -68,6 +68,43 @@ }, "#" + qinput_id); } + /* + Monkey patch autocomplete.js to fix a bug + With the POST method, the values are not URL encoded: query like "1 + 1" are sent as "1 1" since space are URL encoded as plus. + See HTML specifications: + * HTML5: https://url.spec.whatwg.org/#concept-urlencoded-serializer + * HTML4: https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 + + autocomplete.js does not URL encode the name and values: + https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/src/autocomplete.ts#L665 + + The monkey patch overrides the compiled version of the ajax function. + See https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/dist/autocomplete.js#L143-L158 + The patch changes only the line 156 from + params.Request.send(params._QueryArg() + "=" + params._Pre()); + to + params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); + + Related to: + * https://github.com/autocompletejs/autocomplete.js/issues/78 + * https://github.com/searxng/searxng/issues/1695 + */ + AutoComplete.prototype.ajax = function (params, request, timeout) { + if (timeout === void 0) { timeout = true; } + if (params.$AjaxTimer) { + window.clearTimeout(params.$AjaxTimer); + } + if (timeout === true) { + params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay); + } else { + if (params.Request) { + params.Request.abort(); + } + params.Request = request; + params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); + } + }; + if (!isMobile && document.querySelector('.index_endpoint')) { qinput.focus(); } From 268fa7e036653b1bb52e1359738283b5487ac913 Mon Sep 17 00:00:00 2001 From: Alexandre FLAMENT Date: Sat, 27 Aug 2022 06:52:20 +0000 Subject: [PATCH 2/2] [build] /static --- searx/static/themes/simple/js/searxng.min.js | Bin 24761 -> 25114 bytes .../themes/simple/js/searxng.min.js.map | Bin 83314 -> 85568 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/searx/static/themes/simple/js/searxng.min.js b/searx/static/themes/simple/js/searxng.min.js index e63c1afcffcf98a4988b6b58c2addedef3f171f4..43b7ebe4e692ec19fba8ae25d21854189d42d8d1 100644 GIT binary patch delta 2059 zcmZ`)TWB0r7-n`&W8H1qT${_)fchYry`|-D2Tp@B2*f`*-dP<`0{hke>?y6 zJ0D*XUcW4y`c|MHUYivJ#`|489u~CaC8Ap-OZhQZT%i0XR|v97_p5Fer2GT-xWIBN z?h?U6<*cDt#7Ih%R~H?D>KjEO=;uWzK*!cS-NIC=%n*A}C$q$``xbU5B~y;jX^E+- zYGia>&O(L%vaY6@!IRx<+a{gL*hCU(QVc?u@h!zwUZyZZXIfIV!RRfnQ2(nn zP;3|Fr3h7~SaLzp(rLujpQ3tFVuhUic)F4C<>Kc1STGjne+j38!u3y9<;3+j zg)*upSt8@a8=2QkzlHdgx@vjYvlCj(^MaSbTh6rNl`1a^v;4=(UBYZms`9xI>a?6S ziJdVGKc8Dy!4oxa7rNM3#T!CJT&xvgH(2{-8&z~-%-E@j9th;S64T@P0%TBZHa(5* z>}TmbC!uBnjF6+yP5I*HBe{ zuP){9`?eHeEMk;@<7@IdC)h7JQ?pzrBi!c?R`6(DQ!P{GGQ?ciM|6^~nJI~>PQNC~ zi;IkB>lljja~*Y6Fx3nYC81MvbcE2El#MA)HOOw(V=Vg{c&?#Tpg7c-A-X#Gg}&PX z!->x7VF5>8#6m`Z@@9WGLOA3f0zKnDi%O3+770R%?-lofbyge({Z*_+SBsklLC2c9 z`)EKFdu(k=Cs8pnjZh0Ov_;^2t?rgncZaX3MvTR*c%l5dYGGFxztXg2bHR-n6_*O9 zB)n06tEm>xR5ph}hnhQv^RjS8cZANnVLPvf$Zqb?_NXxrt zD%KH~^Fw3YEop~@_el!;%}F~D_ccQgLf@Iz%pd2G_e>$1EAEJWKWf3`ccktx%_H49PY zS1I>t_enSM*{wR@WT@vwrdly0u4c*MG&5~$N7gY12Ypl$ny#bNJEJ}*$D*|xS&%8K zioryX=8i{*zTE#6N=x~nflfR_l!wW}6w}P)7%&=u zVa3e2GB}R~&4TTs;=~o52*NECep;zu>7d~ z=^-bRD?<$WH{Inftohh*3aksmefI;y@Eb^Uc|?L(9tnaT7!k{ynb498`)ti7s@m1k z!uYX~+Ni^}(r7=4*wUTLonHhW5KJ;wRPAbO!$0VhHL{AdEcgA$yx?LgzcEzB=l1x} z>yvw)amwKxKaQzsEZ>?u z3QPHsGbnTJ>%HmqfXFudh64xv70iJSZ}LOv7EI32>6oa=sQz1}omiuU3DSP#1c{6>Y zGy>e|(i`@U?6=3L3w?qFM2KPtWhdb4sGM10jJ4mf;YvmdBXdxcBWpKJGWX-n|< z9FXdwnAee+(=|U`E~=)<`U`d!=ZAf?#oG#ZM!l~^h@>KI$xKJpK)~)uTus=I&q1Nd z;v#hB2+7)#q?`+2TIK7Jv8+iNI=y}j0Mnp{$kxOc`fUa@ zmYFet15EG2AuT{?o4*gjAM=j^-SA)J($-Xqi{mo%Fh2*Pi~KmyyL=sVv$%B>=)u;$ zVG@w}0aIB}QH+l+LaK!bktjIduDQW#&g6=$#c|w76iTnk2J8r?U$i#W6x`@Be!ak@ zz#E}|wR#~;ZCe=VSXCj1~x8ee6wmT4TE(_CD6`;9$gtcDKXJ)4Sj5$`o=pFyJ|neR+T6VNjqKY&^d9IAt90icL3 z=Cq`ViRMQFj3~?ly%`vWyEVbE8;fFIMW(%w)4^-tt0Gjy)}k)lSC3(ab(B?=BoffS z;099qRJakI^iudX=fEntgSv&Hb6$N z&Bg#+4xfZkJau>jifToUWJ>_qBJhE2B>dHwZN2uu-k~_A-zK^tblI^whX?zy=GVkL alCn7?E#!|XY7X^dIxt@kCP(M5bN>K97?qs> diff --git a/searx/static/themes/simple/js/searxng.min.js.map b/searx/static/themes/simple/js/searxng.min.js.map index e3223dedcd7d6935b638906d1934c5db5c904a37..0677e07b5c27cf7fe4ccada8453693b106077146 100644 GIT binary patch delta 5541 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