logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git
commit: c8cf95aa56590800c4f2d39a39d0a70537e7382e
parent cc7f3cb61798463036a886ae5f0ccd06aca5e625
Author: Thomas Pointhuber <thomas.pointhuber@gmx.at>
Date:   Fri, 21 Mar 2014 11:11:31 +0100

deactivate autocompleter by default

Diffstat:

Msearx/settings.yml3+++
Msearx/static/js/searx.js32+++++++++++++++++---------------
Msearx/templates/base.html6++++++
Msearx/templates/opensearch.xml4++++
Msearx/webapp.py21+++++++++++++++------
5 files changed, 45 insertions(+), 21 deletions(-)

diff --git a/searx/settings.yml b/searx/settings.yml @@ -5,6 +5,9 @@ server: request_timeout : 2.0 # seconds base_url : False +client: + autocompleter : False # only for developers, no real results yet + engines: - name : wikipedia engine : wikipedia diff --git a/searx/static/js/searx.js b/searx/static/js/searx.js @@ -1,18 +1,20 @@ -window.addEvent('domready', function() { - new Autocompleter.Request.JSON('q', '/autocompleter', { - postVar:'q', - postData:{ - 'format': 'json' - }, - ajaxOptions:{ - timeout: 5 // Correct option? - }, - 'minLength': 4, - 'selectMode': 'type-ahead', - cache: true, - delay: 300 - }); -}); +if(searx.autocompleter) { + window.addEvent('domready', function() { + new Autocompleter.Request.JSON('q', '/autocompleter', { + postVar:'q', + postData:{ + 'format': 'json' + }, + ajaxOptions:{ + timeout: 5 // Correct option? + }, + 'minLength': 4, + 'selectMode': 'type-ahead', + cache: true, + delay: 300 + }); + }); +} (function (w, d) { 'use strict'; diff --git a/searx/templates/base.html b/searx/templates/base.html @@ -13,13 +13,19 @@ {% block head %} <link title="searx" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> {% endblock %} + <script type="text/javascript"> + searx = {}; + searx.autocompleter = {% if client.autocompleter %}true{% else %}false{% endif %}; + </script> </head> <body> <div id="container"> {% block content %} {% endblock %} +{% if client.autocompleter %} <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script> <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script> +{% endif %} <script src="{{ url_for('static', filename='js/searx.js') }}" ></script> </div> </body> diff --git a/searx/templates/opensearch.xml b/searx/templates/opensearch.xml @@ -6,18 +6,22 @@ <LongName>searx metasearch</LongName> {% if method == 'get' %} <Url type="text/html" method="get" template="{{ host }}?q={searchTerms}"/> + {% if client.autocompleter %} <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter"> <Param name="format" value="x-suggestions" /> <Param name="q" value="{searchTerms}" /> </Url> + {% endif %} {% else %} <Url type="text/html" method="post" template="{{ host }}"> <Param name="q" value="{searchTerms}" /> </Url> + {% if client.autocompleter %} <!-- TODO, POST REQUEST doesn't work --> <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter"> <Param name="format" value="x-suggestions" /> <Param name="q" value="{searchTerms}" /> </Url> + {% endif %} {% endif %} </OpenSearchDescription> diff --git a/searx/webapp.py b/searx/webapp.py @@ -120,12 +120,18 @@ def index(): """ if not request.args and not request.form: - return render('index.html') + return render( + 'index.html', + client=settings['client'] + ) try: search = Search(request) except: - return render('index.html') + return render( + 'index.html', + client=settings['client'] + ) # TODO moar refactor - do_search integration into Search class search.results, search.suggestions = do_search(search.query, @@ -206,6 +212,7 @@ def index(): return render( 'results.html', results=search.results, + client=settings['client'], q=search.request_data['q'], selected_categories=search.categories, paging=search.paging, @@ -231,12 +238,14 @@ def autocompleter(): else: request_data = request.args - # TODO fix XSS-vulnerability, remove test code + # TODO fix XSS-vulnerability autocompleter.querry = request_data.get('q') autocompleter.results = [] - if autocompleter.querry: - autocompleter.results = [autocompleter.querry + "-searx",autocompleter.querry + " asfded",autocompleter.querry + " asdf"] + if settings['client']['autocompleter']: + #TODO remove test code and add real autocompletion + if autocompleter.querry: + autocompleter.results = [autocompleter.querry + " result-1",autocompleter.querry + " result-2",autocompleter.querry + " result-3",autocompleter.querry + " result-4"] if request_data.get('format') == 'x-suggestions': return Response(json.dumps([autocompleter.querry,autocompleter.results]), @@ -344,7 +353,7 @@ def opensearch(): # chrome/chromium only supports HTTP GET.... if request.headers.get('User-Agent', '').lower().find('webkit') >= 0: method = 'get' - ret = render('opensearch.xml', method=method, host=get_base_url()) + ret = render('opensearch.xml', method=method, host=get_base_url(),client=settings['client']) resp = Response(response=ret, status=200, mimetype="application/xml")