diff options
| author | Alexandre Flament <alex@al-f.net> | 2016-10-22 14:25:50 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-22 14:25:50 +0200 |
| commit | a88768efd8ee6b832febda8508cb1ba3c8778b94 (patch) | |
| tree | a42f1078ce421a69edb7088c642461b6c05f7022 /searx | |
| parent | f90eb428c679d3852d9738f6279d045283340562 (diff) | |
| parent | 85c7237a4f26cea523d5c3b8a863058e459ca07a (diff) | |
Merge branch 'master' into http1.1
Diffstat (limited to 'searx')
| -rw-r--r-- | searx/engines/__init__.py | 12 | ||||
| -rw-r--r-- | searx/engines/digbt.py | 2 | ||||
| -rw-r--r-- | searx/engines/kickass.py | 46 | ||||
| -rw-r--r-- | searx/engines/pdbe.py | 109 | ||||
| -rw-r--r-- | searx/engines/seedpeer.py | 78 | ||||
| -rw-r--r-- | searx/settings.yml | 27 | ||||
| -rw-r--r-- | searx/settings_robot.yml | 6 | ||||
| -rw-r--r-- | searx/static/themes/legacy/css/style-rtl.css (renamed from searx/static/themes/default/css/style-rtl.css) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/css/style.css (renamed from searx/static/themes/default/css/style.css) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/img/favicon.png (renamed from searx/static/themes/default/img/favicon.png) | bin | 2060 -> 2060 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/github_ribbon.png (renamed from searx/static/themes/default/img/github_ribbon.png) | bin | 5213 -> 5213 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_500px.ico (renamed from searx/static/themes/default/img/icons/icon_500px.ico) | bin | 8348 -> 8348 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_bing.ico (renamed from searx/static/themes/default/img/icons/icon_bing.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_dailymotion.ico (renamed from searx/static/themes/default/img/icons/icon_dailymotion.ico) | bin | 4286 -> 4286 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_deezer.ico (renamed from searx/static/themes/default/img/icons/icon_deezer.ico) | bin | 4286 -> 4286 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_deviantart.ico (renamed from searx/static/themes/default/img/icons/icon_deviantart.ico) | bin | 4286 -> 4286 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_digg.ico (renamed from searx/static/themes/default/img/icons/icon_digg.ico) | bin | 2868 -> 2868 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_duckduckgo.ico (renamed from searx/static/themes/default/img/icons/icon_duckduckgo.ico) | bin | 32988 -> 32988 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_flickr.ico (renamed from searx/static/themes/default/img/icons/icon_flickr.ico) | bin | 6518 -> 6518 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_github.ico (renamed from searx/static/themes/default/img/icons/icon_github.ico) | bin | 6518 -> 6518 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_google play apps.ico (renamed from searx/static/themes/default/img/icons/icon_google play apps.ico) | bin | 5430 -> 5430 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_google play movies.ico (renamed from searx/static/themes/default/img/icons/icon_google play movies.ico) | bin | 5430 -> 5430 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_google play music.ico (renamed from searx/static/themes/default/img/icons/icon_google play music.ico) | bin | 5430 -> 5430 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_google.ico (renamed from searx/static/themes/default/img/icons/icon_google.ico) | bin | 5430 -> 5430 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_kickass.ico (renamed from searx/static/themes/default/img/icons/icon_kickass.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_openstreetmap.ico (renamed from searx/static/themes/default/img/icons/icon_openstreetmap.ico) | bin | 1406 -> 1406 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_searchcode code.ico (renamed from searx/static/themes/default/img/icons/icon_searchcode code.ico) | bin | 4094 -> 4094 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_searchcode doc.ico (renamed from searx/static/themes/default/img/icons/icon_searchcode doc.ico) | bin | 4094 -> 4094 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_searchcode.ico (renamed from searx/static/themes/default/img/icons/icon_searchcode.ico) | bin | 4094 -> 4094 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_soundcloud.ico (renamed from searx/static/themes/default/img/icons/icon_soundcloud.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_stackoverflow.ico (renamed from searx/static/themes/default/img/icons/icon_stackoverflow.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_startpage.ico (renamed from searx/static/themes/default/img/icons/icon_startpage.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico (renamed from searx/static/themes/default/img/icons/icon_subtitleseeker.ico) | bin | 1406 -> 1406 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_twitter.ico (renamed from searx/static/themes/default/img/icons/icon_twitter.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_vimeo.ico (renamed from searx/static/themes/default/img/icons/icon_vimeo.ico) | bin | 6518 -> 6518 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_wikipedia.ico (renamed from searx/static/themes/default/img/icons/icon_wikipedia.ico) | bin | 2734 -> 2734 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_yahoo.ico (renamed from searx/static/themes/default/img/icons/icon_yahoo.ico) | bin | 5430 -> 5430 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/icons/icon_youtube.ico (renamed from searx/static/themes/default/img/icons/icon_youtube.ico) | bin | 1150 -> 1150 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/preference-icon.png (renamed from searx/static/themes/default/img/preference-icon.png) | bin | 532 -> 532 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/search-icon.png (renamed from searx/static/themes/default/img/search-icon.png) | bin | 2329 -> 2329 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/searx.png (renamed from searx/static/themes/default/img/searx.png) | bin | 3902 -> 3902 bytes | |||
| -rw-r--r-- | searx/static/themes/legacy/img/searx_logo.svg (renamed from searx/static/themes/default/img/searx_logo.svg) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/js/searx.js (renamed from searx/static/themes/default/js/searx.js) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/autocompleter.less (renamed from searx/static/themes/default/less/autocompleter.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/code.less (renamed from searx/static/themes/default/less/code.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/definitions.less (renamed from searx/static/themes/default/less/definitions.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/mixins.less (renamed from searx/static/themes/default/less/mixins.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/search.less (renamed from searx/static/themes/default/less/search.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/style-rtl.less (renamed from searx/static/themes/default/less/style-rtl.less) | 0 | ||||
| -rw-r--r-- | searx/static/themes/legacy/less/style.less (renamed from searx/static/themes/default/less/style.less) | 0 | ||||
| -rw-r--r-- | searx/templates/courgette/base.html | 2 | ||||
| -rw-r--r-- | searx/templates/legacy/404.html (renamed from searx/templates/default/404.html) | 2 | ||||
| -rw-r--r-- | searx/templates/legacy/about.html (renamed from searx/templates/default/about.html) | 4 | ||||
| -rw-r--r-- | searx/templates/legacy/base.html (renamed from searx/templates/default/base.html) | 2 | ||||
| -rw-r--r-- | searx/templates/legacy/categories.html (renamed from searx/templates/default/categories.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/github_ribbon.html (renamed from searx/templates/default/github_ribbon.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/index.html (renamed from searx/templates/default/index.html) | 6 | ||||
| -rw-r--r-- | searx/templates/legacy/infobox.html (renamed from searx/templates/default/infobox.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/opensearch.xml (renamed from searx/templates/default/opensearch.xml) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/opensearch_response_rss.xml (renamed from searx/templates/default/opensearch_response_rss.xml) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/preferences.html (renamed from searx/templates/default/preferences.html) | 4 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/code.html (renamed from searx/templates/default/result_templates/code.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/default.html (renamed from searx/templates/default/result_templates/default.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/images.html (renamed from searx/templates/default/result_templates/images.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/map.html (renamed from searx/templates/default/result_templates/map.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/torrent.html (renamed from searx/templates/default/result_templates/torrent.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/result_templates/videos.html (renamed from searx/templates/default/result_templates/videos.html) | 0 | ||||
| -rw-r--r-- | searx/templates/legacy/results.html (renamed from searx/templates/default/results.html) | 10 | ||||
| -rw-r--r-- | searx/templates/legacy/search.html (renamed from searx/templates/default/search.html) | 2 | ||||
| -rw-r--r-- | searx/templates/legacy/stats.html (renamed from searx/templates/default/stats.html) | 2 | ||||
| -rw-r--r-- | searx/templates/oscar/macros.html | 6 | ||||
| -rw-r--r-- | searx/templates/pix-art/preferences.html | 2 | ||||
| -rw-r--r-- | searx/templates/pix-art/stats.html | 2 | ||||
| -rw-r--r-- | searx/utils.py | 15 | ||||
| -rw-r--r-- | searx/webapp.py | 27 |
75 files changed, 299 insertions, 67 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 782b622b0..14376c31f 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -57,11 +57,17 @@ def load_module(filename): def load_engine(engine_data): - engine_name = engine_data['engine'] + + if '_' in engine_data['name']: + logger.error('Engine name conains underscore: "{}"'.format(engine_data['name'])) + sys.exit(1) + + engine_module = engine_data['engine'] + try: - engine = load_module(engine_name + '.py') + engine = load_module(engine_module + '.py') except: - logger.exception('Cannot load engine "{}"'.format(engine_name)) + logger.exception('Cannot load engine "{}"'.format(engine_module)) return None for param_name in engine_data: diff --git a/searx/engines/digbt.py b/searx/engines/digbt.py index c35327e8c..b55d7747a 100644 --- a/searx/engines/digbt.py +++ b/searx/engines/digbt.py @@ -40,7 +40,7 @@ def response(resp): results = list() for result in search_res: url = urljoin(URL, result.xpath('.//a[@title]/@href')[0]) - title = result.xpath('.//a[@title]/text()')[0] + title = extract_text(result.xpath('.//a[@title]')) content = extract_text(result.xpath('.//div[@class="files"]')) files_data = extract_text(result.xpath('.//div[@class="tail"]')).split() filesize = get_torrent_size(files_data[FILESIZE], files_data[FILESIZE_MULTIPLIER]) diff --git a/searx/engines/kickass.py b/searx/engines/kickass.py index 4c5d24008..9cd8284da 100644 --- a/searx/engines/kickass.py +++ b/searx/engines/kickass.py @@ -16,13 +16,14 @@ from urllib import quote from lxml import html from operator import itemgetter from searx.engines.xpath import extract_text +from searx.utils import get_torrent_size, convert_str_to_int # engine dependent config categories = ['videos', 'music', 'files'] paging = True # search-url -url = 'https://kickass.to/' +url = 'https://kickass.cd/' search_url = url + 'search/{search_term}/{pageno}/' # specific xpath variables @@ -57,41 +58,16 @@ def response(resp): href = urljoin(url, link.attrib['href']) title = extract_text(link) content = escape(extract_text(result.xpath(content_xpath))) - seed = result.xpath('.//td[contains(@class, "green")]/text()')[0] - leech = result.xpath('.//td[contains(@class, "red")]/text()')[0] - filesize = result.xpath('.//td[contains(@class, "nobr")]/text()')[0] - filesize_multiplier = result.xpath('.//td[contains(@class, "nobr")]//span/text()')[0] - files = result.xpath('.//td[contains(@class, "center")][2]/text()')[0] - - # convert seed to int if possible - if seed.isdigit(): - seed = int(seed) - else: - seed = 0 + seed = extract_text(result.xpath('.//td[contains(@class, "green")]')) + leech = extract_text(result.xpath('.//td[contains(@class, "red")]')) + filesize_info = extract_text(result.xpath('.//td[contains(@class, "nobr")]')) + files = extract_text(result.xpath('.//td[contains(@class, "center")][2]')) - # convert leech to int if possible - if leech.isdigit(): - leech = int(leech) - else: - leech = 0 - - # convert filesize to byte if possible - try: - filesize = float(filesize) - - # convert filesize to byte - if filesize_multiplier == 'TB': - filesize = int(filesize * 1024 * 1024 * 1024 * 1024) - elif filesize_multiplier == 'GB': - filesize = int(filesize * 1024 * 1024 * 1024) - elif filesize_multiplier == 'MB': - filesize = int(filesize * 1024 * 1024) - elif filesize_multiplier == 'KB': - filesize = int(filesize * 1024) - except: - filesize = None - - # convert files to int if possible + seed = convert_str_to_int(seed) + leech = convert_str_to_int(leech) + + filesize, filesize_multiplier = filesize_info.split() + filesize = get_torrent_size(filesize, filesize_multiplier) if files.isdigit(): files = int(files) else: diff --git a/searx/engines/pdbe.py b/searx/engines/pdbe.py new file mode 100644 index 000000000..f784e106f --- /dev/null +++ b/searx/engines/pdbe.py @@ -0,0 +1,109 @@ +""" + PDBe (Protein Data Bank in Europe) + + @website https://www.ebi.ac.uk/pdbe + @provide-api yes (https://www.ebi.ac.uk/pdbe/api/doc/search.html), + unlimited + @using-api yes + @results python dictionary (from json) + @stable yes + @parse url, title, content, img_src +""" + +from json import loads +from flask_babel import gettext + +categories = ['science'] + +hide_obsolete = False + +# status codes of unpublished entries +pdb_unpublished_codes = ['HPUB', 'HOLD', 'PROC', 'WAIT', 'AUTH', 'AUCO', 'REPL', 'POLC', 'REFI', 'TRSF', 'WDRN'] +# url for api query +pdbe_solr_url = 'https://www.ebi.ac.uk/pdbe/search/pdb/select?' +# base url for results +pdbe_entry_url = 'https://www.ebi.ac.uk/pdbe/entry/pdb/{pdb_id}' +# link to preview image of structure +pdbe_preview_url = 'https://www.ebi.ac.uk/pdbe/static/entry/{pdb_id}_deposited_chain_front_image-200x200.png' + + +def request(query, params): + + params['url'] = pdbe_solr_url + params['method'] = 'POST' + params['data'] = { + 'q': query, + 'wt': "json" # request response in parsable format + } + return params + + +def construct_body(result): + # set title + title = result['title'] + + # construct content body + content = """{title}<br />{authors} {journal} <strong>{volume}</strong> {page} ({year})""" + + # replace placeholders with actual content + try: + if result['journal']: + content = content.format( + title=result['citation_title'], + authors=result['entry_author_list'][0], journal=result['journal'], volume=result['journal_volume'], + page=result['journal_page'], year=result['citation_year']) + else: + content = content.format( + title=result['citation_title'], + authors=result['entry_author_list'][0], journal='', volume='', page='', year=result['release_year']) + img_src = pdbe_preview_url.format(pdb_id=result['pdb_id']) + except (KeyError): + content = None + img_src = None + + # construct url for preview image + try: + img_src = pdbe_preview_url.format(pdb_id=result['pdb_id']) + except (KeyError): + img_src = None + + return [title, content, img_src] + + +def response(resp): + + results = [] + json = loads(resp.text)['response']['docs'] + + # parse results + for result in json: + # catch obsolete entries and mark them accordingly + if result['status'] in pdb_unpublished_codes: + continue + if hide_obsolete: + continue + if result['status'] == 'OBS': + # expand title to add some sort of warning message + title = gettext('{title} (OBSOLETE)').format(title=result['title']) + superseded_url = pdbe_entry_url.format(pdb_id=result['superseded_by']) + + # since we can't construct a proper body from the response, we'll make up our own + msg_superseded = gettext("This entry has been superseded by") + content = '<em>{msg_superseded} \<a href="{url}">{pdb_id}</a></em>'.format( + msg_superseded=msg_superseded, + url=superseded_url, + pdb_id=result['superseded_by'], ) + + # obsoleted entries don't have preview images + img_src = None + else: + title, content, img_src = construct_body(result) + + results.append({ + 'url': pdbe_entry_url.format(pdb_id=result['pdb_id']), + 'title': title, + 'content': content, + 'img_src': img_src + }) + + return results diff --git a/searx/engines/seedpeer.py b/searx/engines/seedpeer.py new file mode 100644 index 000000000..854ebba03 --- /dev/null +++ b/searx/engines/seedpeer.py @@ -0,0 +1,78 @@ +# Seedpeer (Videos, Music, Files) +# +# @website http://seedpeer.eu +# @provide-api no (nothing found) +# +# @using-api no +# @results HTML (using search portal) +# @stable yes (HTML can change) +# @parse url, title, content, seed, leech, magnetlink + +from urlparse import urljoin +from cgi import escape +from urllib import quote +from lxml import html +from operator import itemgetter +from searx.engines.xpath import extract_text + + +url = 'http://www.seedpeer.eu/' +search_url = url + 'search/{search_term}/7/{page_no}.html' +# specific xpath variables +torrent_xpath = '//*[@id="body"]/center/center/table[2]/tr/td/a' +alternative_torrent_xpath = '//*[@id="body"]/center/center/table[1]/tr/td/a' +title_xpath = '//*[@id="body"]/center/center/table[2]/tr/td/a/text()' +alternative_title_xpath = '//*[@id="body"]/center/center/table/tr/td/a' +seeds_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[4]/font/text()' +alternative_seeds_xpath = '//*[@id="body"]/center/center/table/tr/td[4]/font/text()' +peers_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[5]/font/text()' +alternative_peers_xpath = '//*[@id="body"]/center/center/table/tr/td[5]/font/text()' +age_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[2]/text()' +alternative_age_xpath = '//*[@id="body"]/center/center/table/tr/td[2]/text()' +size_xpath = '//*[@id="body"]/center/center/table[2]/tr/td[3]/text()' +alternative_size_xpath = '//*[@id="body"]/center/center/table/tr/td[3]/text()' + + +# do search-request +def request(query, params): + params['url'] = search_url.format(search_term=quote(query), + page_no=params['pageno'] - 1) + return params + + +# get response from search-request +def response(resp): + results = [] + dom = html.fromstring(resp.text) + torrent_links = dom.xpath(torrent_xpath) + if len(torrent_links) > 0: + seeds = dom.xpath(seeds_xpath) + peers = dom.xpath(peers_xpath) + titles = dom.xpath(title_xpath) + sizes = dom.xpath(size_xpath) + ages = dom.xpath(age_xpath) + else: # under ~5 results uses a different xpath + torrent_links = dom.xpath(alternative_torrent_xpath) + seeds = dom.xpath(alternative_seeds_xpath) + peers = dom.xpath(alternative_peers_xpath) + titles = dom.xpath(alternative_title_xpath) + sizes = dom.xpath(alternative_size_xpath) + ages = dom.xpath(alternative_age_xpath) + # return empty array if nothing is found + if not torrent_links: + return [] + + # parse results + for index, result in enumerate(torrent_links): + link = result.attrib.get('href') + href = urljoin(url, link) + results.append({'url': href, + 'title': titles[index].text_content(), + 'content': '{}, {}'.format(sizes[index], ages[index]), + 'seed': seeds[index], + 'leech': peers[index], + + 'template': 'torrent.html'}) + + # return results sorted by seeder + return sorted(results, key=itemgetter('seed'), reverse=True) diff --git a/searx/settings.yml b/searx/settings.yml index 308a0bd45..ba7ae428b 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -18,6 +18,12 @@ ui: default_theme : oscar # ui theme default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section +# searx supports result proxification using an external service: https://github.com/asciimoo/morty +# uncomment below section if you have running morty proxy +#result_proxy: +# url : http://127.0.0.1:3000/ +# key : your_morty_proxy_key + outgoing: # communication with search engines request_timeout : 2.0 # seconds useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator @@ -301,6 +307,12 @@ engines: timeout : 6.0 disabled : True + - name: kickass + engine : kickass + shortcut : kc + timeout : 4.0 + disabled : True + - name : microsoft academic engine : json_engine paging : True @@ -339,6 +351,13 @@ engines: disabled : True shortcut : or + - name : pdbe + engine : pdbe + shortcut : pdb +# Hide obsolete PDB entries. +# Default is not to hide obsolete structures +# hide_obsolete : False + - name : photon engine : photon shortcut : ph @@ -377,7 +396,7 @@ engines: timeout : 10.0 disabled : True - - name : scanr_structures + - name : scanr structures shortcut: scs engine : scanr_structures disabled : True @@ -495,6 +514,12 @@ engines: timeout: 6.0 categories : science + - name : seedpeer + engine : seedpeer + shortcut: speu + categories: files, music, videos + disabled: True + - name : dictzone engine : dictzone shortcut : dc diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml index 7c7c4eec2..43dc9b00a 100644 --- a/searx/settings_robot.yml +++ b/searx/settings_robot.yml @@ -15,7 +15,7 @@ server: ui: themes_path : "" - default_theme : default + default_theme : legacy default_locale : "" outgoing: @@ -23,12 +23,12 @@ outgoing: useragent_suffix : "" engines: - - name : general_dummy + - name : general dummy engine : dummy categories : general shortcut : gd - - name : dummy_dummy + - name : dummy dummy engine : dummy categories : dummy shortcut : dd diff --git a/searx/static/themes/default/css/style-rtl.css b/searx/static/themes/legacy/css/style-rtl.css index 65ad6638e..65ad6638e 100644 --- a/searx/static/themes/default/css/style-rtl.css +++ b/searx/static/themes/legacy/css/style-rtl.css diff --git a/searx/static/themes/default/css/style.css b/searx/static/themes/legacy/css/style.css index 71422bc94..71422bc94 100644 --- a/searx/static/themes/default/css/style.css +++ b/searx/static/themes/legacy/css/style.css diff --git a/searx/static/themes/default/img/favicon.png b/searx/static/themes/legacy/img/favicon.png Binary files differindex 1a43d7fa6..1a43d7fa6 100644 --- a/searx/static/themes/default/img/favicon.png +++ b/searx/static/themes/legacy/img/favicon.png diff --git a/searx/static/themes/default/img/github_ribbon.png b/searx/static/themes/legacy/img/github_ribbon.png Binary files differindex 3799c2ea1..3799c2ea1 100644 --- a/searx/static/themes/default/img/github_ribbon.png +++ b/searx/static/themes/legacy/img/github_ribbon.png diff --git a/searx/static/themes/default/img/icons/icon_500px.ico b/searx/static/themes/legacy/img/icons/icon_500px.ico Binary files differindex b01aa20b5..b01aa20b5 100644 --- a/searx/static/themes/default/img/icons/icon_500px.ico +++ b/searx/static/themes/legacy/img/icons/icon_500px.ico diff --git a/searx/static/themes/default/img/icons/icon_bing.ico b/searx/static/themes/legacy/img/icons/icon_bing.ico Binary files differindex 5702749c1..5702749c1 100644 --- a/searx/static/themes/default/img/icons/icon_bing.ico +++ b/searx/static/themes/legacy/img/icons/icon_bing.ico diff --git a/searx/static/themes/default/img/icons/icon_dailymotion.ico b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico Binary files differindex b161a57fb..b161a57fb 100644 --- a/searx/static/themes/default/img/icons/icon_dailymotion.ico +++ b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico diff --git a/searx/static/themes/default/img/icons/icon_deezer.ico b/searx/static/themes/legacy/img/icons/icon_deezer.ico Binary files differindex d38c9b1f6..d38c9b1f6 100644 --- a/searx/static/themes/default/img/icons/icon_deezer.ico +++ b/searx/static/themes/legacy/img/icons/icon_deezer.ico diff --git a/searx/static/themes/default/img/icons/icon_deviantart.ico b/searx/static/themes/legacy/img/icons/icon_deviantart.ico Binary files differindex 26c353325..26c353325 100644 --- a/searx/static/themes/default/img/icons/icon_deviantart.ico +++ b/searx/static/themes/legacy/img/icons/icon_deviantart.ico diff --git a/searx/static/themes/default/img/icons/icon_digg.ico b/searx/static/themes/legacy/img/icons/icon_digg.ico Binary files differindex 162e57038..162e57038 100644 --- a/searx/static/themes/default/img/icons/icon_digg.ico +++ b/searx/static/themes/legacy/img/icons/icon_digg.ico diff --git a/searx/static/themes/default/img/icons/icon_duckduckgo.ico b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico Binary files differindex d093082cb..d093082cb 100644 --- a/searx/static/themes/default/img/icons/icon_duckduckgo.ico +++ b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico diff --git a/searx/static/themes/default/img/icons/icon_flickr.ico b/searx/static/themes/legacy/img/icons/icon_flickr.ico Binary files differindex e2304c587..e2304c587 100644 --- a/searx/static/themes/default/img/icons/icon_flickr.ico +++ b/searx/static/themes/legacy/img/icons/icon_flickr.ico diff --git a/searx/static/themes/default/img/icons/icon_github.ico b/searx/static/themes/legacy/img/icons/icon_github.ico Binary files differindex 133f0ca35..133f0ca35 100644 --- a/searx/static/themes/default/img/icons/icon_github.ico +++ b/searx/static/themes/legacy/img/icons/icon_github.ico diff --git a/searx/static/themes/default/img/icons/icon_google play apps.ico b/searx/static/themes/legacy/img/icons/icon_google play apps.ico Binary files differindex 74c84470b..74c84470b 100644 --- a/searx/static/themes/default/img/icons/icon_google play apps.ico +++ b/searx/static/themes/legacy/img/icons/icon_google play apps.ico diff --git a/searx/static/themes/default/img/icons/icon_google play movies.ico b/searx/static/themes/legacy/img/icons/icon_google play movies.ico Binary files differindex 74c84470b..74c84470b 100644 --- a/searx/static/themes/default/img/icons/icon_google play movies.ico +++ b/searx/static/themes/legacy/img/icons/icon_google play movies.ico diff --git a/searx/static/themes/default/img/icons/icon_google play music.ico b/searx/static/themes/legacy/img/icons/icon_google play music.ico Binary files differindex 74c84470b..74c84470b 100644 --- a/searx/static/themes/default/img/icons/icon_google play music.ico +++ b/searx/static/themes/legacy/img/icons/icon_google play music.ico diff --git a/searx/static/themes/default/img/icons/icon_google.ico b/searx/static/themes/legacy/img/icons/icon_google.ico Binary files differindex f594697d2..f594697d2 100644 --- a/searx/static/themes/default/img/icons/icon_google.ico +++ b/searx/static/themes/legacy/img/icons/icon_google.ico diff --git a/searx/static/themes/default/img/icons/icon_kickass.ico b/searx/static/themes/legacy/img/icons/icon_kickass.ico Binary files differindex 4aa2c77a5..4aa2c77a5 100644 --- a/searx/static/themes/default/img/icons/icon_kickass.ico +++ b/searx/static/themes/legacy/img/icons/icon_kickass.ico diff --git a/searx/static/themes/default/img/icons/icon_openstreetmap.ico b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico Binary files differindex b65863656..b65863656 100644 --- a/searx/static/themes/default/img/icons/icon_openstreetmap.ico +++ b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico diff --git a/searx/static/themes/default/img/icons/icon_searchcode code.ico b/searx/static/themes/legacy/img/icons/icon_searchcode code.ico Binary files differindex dc099ef70..dc099ef70 100644 --- a/searx/static/themes/default/img/icons/icon_searchcode code.ico +++ b/searx/static/themes/legacy/img/icons/icon_searchcode code.ico diff --git a/searx/static/themes/default/img/icons/icon_searchcode doc.ico b/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico Binary files differindex dc099ef70..dc099ef70 100644 --- a/searx/static/themes/default/img/icons/icon_searchcode doc.ico +++ b/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico diff --git a/searx/static/themes/default/img/icons/icon_searchcode.ico b/searx/static/themes/legacy/img/icons/icon_searchcode.ico Binary files differindex dc099ef70..dc099ef70 100644 --- a/searx/static/themes/default/img/icons/icon_searchcode.ico +++ b/searx/static/themes/legacy/img/icons/icon_searchcode.ico diff --git a/searx/static/themes/default/img/icons/icon_soundcloud.ico b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico Binary files differindex 4130bea1b..4130bea1b 100644 --- a/searx/static/themes/default/img/icons/icon_soundcloud.ico +++ b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico diff --git a/searx/static/themes/default/img/icons/icon_stackoverflow.ico b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico Binary files differindex b2242bc6c..b2242bc6c 100644 --- a/searx/static/themes/default/img/icons/icon_stackoverflow.ico +++ b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico diff --git a/searx/static/themes/default/img/icons/icon_startpage.ico b/searx/static/themes/legacy/img/icons/icon_startpage.ico Binary files differindex 44b94a986..44b94a986 100644 --- a/searx/static/themes/default/img/icons/icon_startpage.ico +++ b/searx/static/themes/legacy/img/icons/icon_startpage.ico diff --git a/searx/static/themes/default/img/icons/icon_subtitleseeker.ico b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico Binary files differindex 9a0565558..9a0565558 100644 --- a/searx/static/themes/default/img/icons/icon_subtitleseeker.ico +++ b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico diff --git a/searx/static/themes/default/img/icons/icon_twitter.ico b/searx/static/themes/legacy/img/icons/icon_twitter.ico Binary files differindex b4a71699a..b4a71699a 100644 --- a/searx/static/themes/default/img/icons/icon_twitter.ico +++ b/searx/static/themes/legacy/img/icons/icon_twitter.ico diff --git a/searx/static/themes/default/img/icons/icon_vimeo.ico b/searx/static/themes/legacy/img/icons/icon_vimeo.ico Binary files differindex 4fe4336da..4fe4336da 100644 --- a/searx/static/themes/default/img/icons/icon_vimeo.ico +++ b/searx/static/themes/legacy/img/icons/icon_vimeo.ico diff --git a/searx/static/themes/default/img/icons/icon_wikipedia.ico b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico Binary files differindex e70021849..e70021849 100644 --- a/searx/static/themes/default/img/icons/icon_wikipedia.ico +++ b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico diff --git a/searx/static/themes/default/img/icons/icon_yahoo.ico b/searx/static/themes/legacy/img/icons/icon_yahoo.ico Binary files differindex 9bd1d9f7c..9bd1d9f7c 100644 --- a/searx/static/themes/default/img/icons/icon_yahoo.ico +++ b/searx/static/themes/legacy/img/icons/icon_yahoo.ico diff --git a/searx/static/themes/default/img/icons/icon_youtube.ico b/searx/static/themes/legacy/img/icons/icon_youtube.ico Binary files differindex 977887dbb..977887dbb 100644 --- a/searx/static/themes/default/img/icons/icon_youtube.ico +++ b/searx/static/themes/legacy/img/icons/icon_youtube.ico diff --git a/searx/static/themes/default/img/preference-icon.png b/searx/static/themes/legacy/img/preference-icon.png Binary files differindex 8bdee641d..8bdee641d 100644 --- a/searx/static/themes/default/img/preference-icon.png +++ b/searx/static/themes/legacy/img/preference-icon.png diff --git a/searx/static/themes/default/img/search-icon.png b/searx/static/themes/legacy/img/search-icon.png Binary files differindex d70310b5d..d70310b5d 100644 --- a/searx/static/themes/default/img/search-icon.png +++ b/searx/static/themes/legacy/img/search-icon.png diff --git a/searx/static/themes/default/img/searx.png b/searx/static/themes/legacy/img/searx.png Binary files differindex a98f12a1d..a98f12a1d 100644 --- a/searx/static/themes/default/img/searx.png +++ b/searx/static/themes/legacy/img/searx.png diff --git a/searx/static/themes/default/img/searx_logo.svg b/searx/static/themes/legacy/img/searx_logo.svg index 67a2d4588..67a2d4588 100644 --- a/searx/static/themes/default/img/searx_logo.svg +++ b/searx/static/themes/legacy/img/searx_logo.svg diff --git a/searx/static/themes/default/js/searx.js b/searx/static/themes/legacy/js/searx.js index d6d5b74bb..d6d5b74bb 100644 --- a/searx/static/themes/default/js/searx.js +++ b/searx/static/themes/legacy/js/searx.js diff --git a/searx/static/themes/default/less/autocompleter.less b/searx/static/themes/legacy/less/autocompleter.less index db9601aeb..db9601aeb 100644 --- a/searx/static/themes/default/less/autocompleter.less +++ b/searx/static/themes/legacy/less/autocompleter.less diff --git a/searx/static/themes/default/less/code.less b/searx/static/themes/legacy/less/code.less index a688dd98d..a688dd98d 100644 --- a/searx/static/themes/default/less/code.less +++ b/searx/static/themes/legacy/less/code.less diff --git a/searx/static/themes/default/less/definitions.less b/searx/static/themes/legacy/less/definitions.less index 0ac0cc90c..0ac0cc90c 100644 --- a/searx/static/themes/default/less/definitions.less +++ b/searx/static/themes/legacy/less/definitions.less diff --git a/searx/static/themes/default/less/mixins.less b/searx/static/themes/legacy/less/mixins.less index dbccce6e3..dbccce6e3 100644 --- a/searx/static/themes/default/less/mixins.less +++ b/searx/static/themes/legacy/less/mixins.less diff --git a/searx/static/themes/default/less/search.less b/searx/static/themes/legacy/less/search.less index d285ca734..d285ca734 100644 --- a/searx/static/themes/default/less/search.less +++ b/searx/static/themes/legacy/less/search.less diff --git a/searx/static/themes/default/less/style-rtl.less b/searx/static/themes/legacy/less/style-rtl.less index eac53c1f8..eac53c1f8 100644 --- a/searx/static/themes/default/less/style-rtl.less +++ b/searx/static/themes/legacy/less/style-rtl.less diff --git a/searx/static/themes/default/less/style.less b/searx/static/themes/legacy/less/style.less index 4374f7d68..4374f7d68 100644 --- a/searx/static/themes/default/less/style.less +++ b/searx/static/themes/legacy/less/style.less diff --git a/searx/templates/courgette/base.html b/searx/templates/courgette/base.html index b2c70a3b7..8e272585c 100644 --- a/searx/templates/courgette/base.html +++ b/searx/templates/courgette/base.html @@ -22,7 +22,7 @@ {% endblock %} {% block meta %}{% endblock %} {% block head %} - <link title="searx" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> + <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> {% endblock %} <script type="text/javascript"> searx = {}; diff --git a/searx/templates/default/404.html b/searx/templates/legacy/404.html index 1d88f86c4..05c14e155 100644 --- a/searx/templates/default/404.html +++ b/searx/templates/legacy/404.html @@ -1,4 +1,4 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block content %} <div class="center"> <h1>{{ _('Page not found') }}</h1> diff --git a/searx/templates/default/about.html b/searx/templates/legacy/about.html index f21a6f296..45fb0e449 100644 --- a/searx/templates/default/about.html +++ b/searx/templates/legacy/about.html @@ -1,6 +1,6 @@ -{% extends 'default/base.html' %} +{% extends 'legacy/base.html' %} {% block content %} -{% include 'default/github_ribbon.html' %} +{% include 'legacy/github_ribbon.html' %} <div class="row"{% if rtl %} dir="ltr"{% endif %}> <h1>About <a href="{{ url_for('index') }}">searx</a></h1> diff --git a/searx/templates/default/base.html b/searx/templates/legacy/base.html index a2c38fef7..da19741cb 100644 --- a/searx/templates/default/base.html +++ b/searx/templates/legacy/base.html @@ -17,7 +17,7 @@ {% endblock %} {% block meta %}{% endblock %} {% block head %} - <link title="searx" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> + <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> {% endblock %} </head> <body> diff --git a/searx/templates/default/categories.html b/searx/templates/legacy/categories.html index 1c466781b..1c466781b 100644 --- a/searx/templates/default/categories.html +++ b/searx/templates/legacy/categories.html diff --git a/searx/templates/default/github_ribbon.html b/searx/templates/legacy/github_ribbon.html index bdd9cf180..bdd9cf180 100644 --- a/searx/templates/default/github_ribbon.html +++ b/searx/templates/legacy/github_ribbon.html diff --git a/searx/templates/default/index.html b/searx/templates/legacy/index.html index fc15a44b6..de956d5b3 100644 --- a/searx/templates/default/index.html +++ b/searx/templates/legacy/index.html @@ -1,8 +1,8 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block content %} <div class="center"> <div class="title"><h1>searx</h1></div> - {% include 'default/search.html' %} + {% include 'legacy/search.html' %} <p class="top_margin"> {% if rtl %} <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a> @@ -13,6 +13,6 @@ {% endif %} </p> </div> -{% include 'default/github_ribbon.html' %} +{% include 'legacy/github_ribbon.html' %} {% endblock %} diff --git a/searx/templates/default/infobox.html b/searx/templates/legacy/infobox.html index 4dd25fabd..4dd25fabd 100644 --- a/searx/templates/default/infobox.html +++ b/searx/templates/legacy/infobox.html diff --git a/searx/templates/default/opensearch.xml b/searx/templates/legacy/opensearch.xml index 15d3eb792..15d3eb792 100644 --- a/searx/templates/default/opensearch.xml +++ b/searx/templates/legacy/opensearch.xml diff --git a/searx/templates/default/opensearch_response_rss.xml b/searx/templates/legacy/opensearch_response_rss.xml index 5673eb2e1..5673eb2e1 100644 --- a/searx/templates/default/opensearch_response_rss.xml +++ b/searx/templates/legacy/opensearch_response_rss.xml diff --git a/searx/templates/default/preferences.html b/searx/templates/legacy/preferences.html index 1de9d2275..30d632c93 100644 --- a/searx/templates/default/preferences.html +++ b/searx/templates/legacy/preferences.html @@ -1,4 +1,4 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block head %} {% endblock %} {% block content %} <div class="row"> @@ -8,7 +8,7 @@ <fieldset> <legend>{{ _('Default categories') }}</legend> {% set display_tooltip = false %} - {% include 'default/categories.html' %} + {% include 'legacy/categories.html' %} </fieldset> <fieldset> <legend>{{ _('Search language') }}</legend> diff --git a/searx/templates/default/result_templates/code.html b/searx/templates/legacy/result_templates/code.html index 9e3ed20af..9e3ed20af 100644 --- a/searx/templates/default/result_templates/code.html +++ b/searx/templates/legacy/result_templates/code.html diff --git a/searx/templates/default/result_templates/default.html b/searx/templates/legacy/result_templates/default.html index da091174d..da091174d 100644 --- a/searx/templates/default/result_templates/default.html +++ b/searx/templates/legacy/result_templates/default.html diff --git a/searx/templates/default/result_templates/images.html b/searx/templates/legacy/result_templates/images.html index 00f62abcc..00f62abcc 100644 --- a/searx/templates/default/result_templates/images.html +++ b/searx/templates/legacy/result_templates/images.html diff --git a/searx/templates/default/result_templates/map.html b/searx/templates/legacy/result_templates/map.html index 0200e0f6b..0200e0f6b 100644 --- a/searx/templates/default/result_templates/map.html +++ b/searx/templates/legacy/result_templates/map.html diff --git a/searx/templates/default/result_templates/torrent.html b/searx/templates/legacy/result_templates/torrent.html index 67e058ae5..67e058ae5 100644 --- a/searx/templates/default/result_templates/torrent.html +++ b/searx/templates/legacy/result_templates/torrent.html diff --git a/searx/templates/default/result_templates/videos.html b/searx/templates/legacy/result_templates/videos.html index 727f44c71..727f44c71 100644 --- a/searx/templates/default/result_templates/videos.html +++ b/searx/templates/legacy/result_templates/videos.html diff --git a/searx/templates/default/results.html b/searx/templates/legacy/results.html index 927b7b8a8..f50700c6f 100644 --- a/searx/templates/default/results.html +++ b/searx/templates/legacy/results.html @@ -1,10 +1,10 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block title %}{{ q }} - {% endblock %} {% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&format=rss&{% for category in selected_categories %}category_{{ category }}=1&{% endfor %}pageno={{ pageno }}">{% endblock %} {% block content %} <div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div> <div class="small search center"> - {% include 'default/search.html' %} + {% include 'legacy/search.html' %} </div> <div id="results"> <div id="sidebar"> @@ -55,16 +55,16 @@ {% if infoboxes %} <div id="infoboxes"> {% for infobox in infoboxes %} - {% include 'default/infobox.html' %} + {% include 'legacy/infobox.html' %} {% endfor %} </div> {% endif %} {% for result in results %} {% if result['template'] %} - {% include get_result_template('default', result['template']) %} + {% include get_result_template('legacy', result['template']) %} {% else %} - {% include 'default/result_templates/default.html' %} + {% include 'legacy/result_templates/default.html' %} {% endif %} {% endfor %} diff --git a/searx/templates/default/search.html b/searx/templates/legacy/search.html index 5a049a492..4d37f9ba1 100644 --- a/searx/templates/default/search.html +++ b/searx/templates/legacy/search.html @@ -4,5 +4,5 @@ <input type="submit" value="search" id="search_submit" /> </div> {% set display_tooltip = true %} - {% include 'default/categories.html' %} + {% include 'legacy/categories.html' %} </form> diff --git a/searx/templates/default/stats.html b/searx/templates/legacy/stats.html index 70fe98ac7..372447e23 100644 --- a/searx/templates/default/stats.html +++ b/searx/templates/legacy/stats.html @@ -1,4 +1,4 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block head %} {% endblock %} {% block content %} <h2>{{ _('Engine stats') }}</h2> diff --git a/searx/templates/oscar/macros.html b/searx/templates/oscar/macros.html index 06881db02..221300fe4 100644 --- a/searx/templates/oscar/macros.html +++ b/searx/templates/oscar/macros.html @@ -33,6 +33,9 @@ <span class="label label-default">{{ engine }}</span>
{% endfor %}
<small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {% if proxify %}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {% endif %}
</div>
<div class="text-muted"><small>{{ result.pretty_url }}</small></div>
{%- endmacro %}
@@ -44,6 +47,9 @@ <span class="label label-default">{{ engine }}</span>
{% endfor %}
<small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {% if proxify %}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {% endif %}
<div class="text-muted"><small>{{ result.pretty_url }}</small></div>
{%- endmacro %}
diff --git a/searx/templates/pix-art/preferences.html b/searx/templates/pix-art/preferences.html index a4a6cd268..ea5557b07 100644 --- a/searx/templates/pix-art/preferences.html +++ b/searx/templates/pix-art/preferences.html @@ -1,4 +1,4 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block head %} {% endblock %} {% block content %} <div class="row"> diff --git a/searx/templates/pix-art/stats.html b/searx/templates/pix-art/stats.html index 70fe98ac7..372447e23 100644 --- a/searx/templates/pix-art/stats.html +++ b/searx/templates/pix-art/stats.html @@ -1,4 +1,4 @@ -{% extends "default/base.html" %} +{% extends "legacy/base.html" %} {% block head %} {% endblock %} {% block content %} <h2>{{ _('Engine stats') }}</h2> diff --git a/searx/utils.py b/searx/utils.py index b3806d3fd..5039fa975 100644 --- a/searx/utils.py +++ b/searx/utils.py @@ -252,12 +252,27 @@ def get_torrent_size(filesize, filesize_multiplier): filesize = int(filesize * 1024 * 1024) elif filesize_multiplier == 'KB': filesize = int(filesize * 1024) + elif filesize_multiplier == 'TiB': + filesize = int(filesize * 1000 * 1000 * 1000 * 1000) + elif filesize_multiplier == 'GiB': + filesize = int(filesize * 1000 * 1000 * 1000) + elif filesize_multiplier == 'MiB': + filesize = int(filesize * 1000 * 1000) + elif filesize_multiplier == 'KiB': + filesize = int(filesize * 1000) except: filesize = None return filesize +def convert_str_to_int(number_str): + if number_str.isdigit(): + return int(number_str) + else: + return 0 + + def is_valid_lang(lang): is_abbr = (len(lang) == 2) if is_abbr: diff --git a/searx/webapp.py b/searx/webapp.py index b69003297..960d6133c 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -22,10 +22,11 @@ if __name__ == '__main__': from os.path import realpath, dirname path.append(realpath(dirname(realpath(__file__)) + '/../')) -import json import cStringIO -import os import hashlib +import hmac +import json +import os import requests from searx import logger @@ -245,6 +246,20 @@ def url_for_theme(endpoint, override_theme=None, **values): return url_for(endpoint, **values) +def proxify(url): + if url.startswith('//'): + url = 'https:' + url + + if not settings.get('result_proxy'): + return url + + h = hmac.new(settings['result_proxy']['key'], url.encode('utf-8'), hashlib.sha256).hexdigest() + + return '{0}?{1}'.format(settings['result_proxy']['url'], + urlencode(dict(mortyurl=url.encode('utf-8'), + mortyhash=h))) + + def image_proxify(url): if url.startswith('//'): @@ -253,8 +268,7 @@ def image_proxify(url): if not request.preferences.get_value('image_proxy'): return url - hash_string = url + settings['server']['secret_key'] - h = hashlib.sha256(hash_string.encode('utf-8')).hexdigest() + h = hmac.new(settings['server']['secret_key'], url.encode('utf-8'), hashlib.sha256).hexdigest() return '{0}?{1}'.format(url_for('image_proxy'), urlencode(dict(url=url.encode('utf-8'), h=h))) @@ -313,6 +327,8 @@ def render(template_name, override_theme=None, **kwargs): kwargs['image_proxify'] = image_proxify + kwargs['proxify'] = proxify if settings.get('result_proxy') else None + kwargs['get_result_template'] = get_result_template kwargs['theme'] = get_current_theme_name(override=override_theme) @@ -602,7 +618,7 @@ def image_proxy(): if not url: return '', 400 - h = hashlib.sha256(url + settings['server']['secret_key'].encode('utf-8')).hexdigest() + h = hmac.new(settings['server']['secret_key'], url, hashlib.sha256).hexdigest() if h != request.args.get('h'): return '', 400 @@ -660,6 +676,7 @@ Allow: / Allow: /about Disallow: /stats Disallow: /preferences +Disallow: /*?*q=* """, mimetype='text/plain') |