summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2016-10-22 14:25:50 +0200
committerGitHub <noreply@github.com>2016-10-22 14:25:50 +0200
commita88768efd8ee6b832febda8508cb1ba3c8778b94 (patch)
treea42f1078ce421a69edb7088c642461b6c05f7022 /searx
parentf90eb428c679d3852d9738f6279d045283340562 (diff)
parent85c7237a4f26cea523d5c3b8a863058e459ca07a (diff)
Merge branch 'master' into http1.1
Diffstat (limited to 'searx')
-rw-r--r--searx/engines/__init__.py12
-rw-r--r--searx/engines/digbt.py2
-rw-r--r--searx/engines/kickass.py46
-rw-r--r--searx/engines/pdbe.py109
-rw-r--r--searx/engines/seedpeer.py78
-rw-r--r--searx/settings.yml27
-rw-r--r--searx/settings_robot.yml6
-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)bin2060 -> 2060 bytes
-rw-r--r--searx/static/themes/legacy/img/github_ribbon.png (renamed from searx/static/themes/default/img/github_ribbon.png)bin5213 -> 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)bin8348 -> 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)bin1150 -> 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)bin4286 -> 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)bin4286 -> 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)bin4286 -> 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)bin2868 -> 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)bin32988 -> 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)bin6518 -> 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)bin6518 -> 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)bin5430 -> 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)bin5430 -> 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)bin5430 -> 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)bin5430 -> 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)bin1150 -> 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)bin1406 -> 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)bin4094 -> 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)bin4094 -> 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)bin4094 -> 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)bin1150 -> 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)bin1150 -> 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)bin1150 -> 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)bin1406 -> 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)bin1150 -> 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)bin6518 -> 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)bin2734 -> 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)bin5430 -> 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)bin1150 -> 1150 bytes
-rw-r--r--searx/static/themes/legacy/img/preference-icon.png (renamed from searx/static/themes/default/img/preference-icon.png)bin532 -> 532 bytes
-rw-r--r--searx/static/themes/legacy/img/search-icon.png (renamed from searx/static/themes/default/img/search-icon.png)bin2329 -> 2329 bytes
-rw-r--r--searx/static/themes/legacy/img/searx.png (renamed from searx/static/themes/default/img/searx.png)bin3902 -> 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.html2
-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.html6
-rw-r--r--searx/templates/pix-art/preferences.html2
-rw-r--r--searx/templates/pix-art/stats.html2
-rw-r--r--searx/utils.py15
-rw-r--r--searx/webapp.py27
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>&nbsp;{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}&nbsp;(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
index 1a43d7fa6..1a43d7fa6 100644
--- a/searx/static/themes/default/img/favicon.png
+++ b/searx/static/themes/legacy/img/favicon.png
Binary files differ
diff --git a/searx/static/themes/default/img/github_ribbon.png b/searx/static/themes/legacy/img/github_ribbon.png
index 3799c2ea1..3799c2ea1 100644
--- a/searx/static/themes/default/img/github_ribbon.png
+++ b/searx/static/themes/legacy/img/github_ribbon.png
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_500px.ico b/searx/static/themes/legacy/img/icons/icon_500px.ico
index b01aa20b5..b01aa20b5 100644
--- a/searx/static/themes/default/img/icons/icon_500px.ico
+++ b/searx/static/themes/legacy/img/icons/icon_500px.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_bing.ico b/searx/static/themes/legacy/img/icons/icon_bing.ico
index 5702749c1..5702749c1 100644
--- a/searx/static/themes/default/img/icons/icon_bing.ico
+++ b/searx/static/themes/legacy/img/icons/icon_bing.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_dailymotion.ico b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico
index b161a57fb..b161a57fb 100644
--- a/searx/static/themes/default/img/icons/icon_dailymotion.ico
+++ b/searx/static/themes/legacy/img/icons/icon_dailymotion.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_deezer.ico b/searx/static/themes/legacy/img/icons/icon_deezer.ico
index d38c9b1f6..d38c9b1f6 100644
--- a/searx/static/themes/default/img/icons/icon_deezer.ico
+++ b/searx/static/themes/legacy/img/icons/icon_deezer.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_deviantart.ico b/searx/static/themes/legacy/img/icons/icon_deviantart.ico
index 26c353325..26c353325 100644
--- a/searx/static/themes/default/img/icons/icon_deviantart.ico
+++ b/searx/static/themes/legacy/img/icons/icon_deviantart.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_digg.ico b/searx/static/themes/legacy/img/icons/icon_digg.ico
index 162e57038..162e57038 100644
--- a/searx/static/themes/default/img/icons/icon_digg.ico
+++ b/searx/static/themes/legacy/img/icons/icon_digg.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_duckduckgo.ico b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico
index d093082cb..d093082cb 100644
--- a/searx/static/themes/default/img/icons/icon_duckduckgo.ico
+++ b/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_flickr.ico b/searx/static/themes/legacy/img/icons/icon_flickr.ico
index e2304c587..e2304c587 100644
--- a/searx/static/themes/default/img/icons/icon_flickr.ico
+++ b/searx/static/themes/legacy/img/icons/icon_flickr.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_github.ico b/searx/static/themes/legacy/img/icons/icon_github.ico
index 133f0ca35..133f0ca35 100644
--- a/searx/static/themes/default/img/icons/icon_github.ico
+++ b/searx/static/themes/legacy/img/icons/icon_github.ico
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_google.ico b/searx/static/themes/legacy/img/icons/icon_google.ico
index f594697d2..f594697d2 100644
--- a/searx/static/themes/default/img/icons/icon_google.ico
+++ b/searx/static/themes/legacy/img/icons/icon_google.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_kickass.ico b/searx/static/themes/legacy/img/icons/icon_kickass.ico
index 4aa2c77a5..4aa2c77a5 100644
--- a/searx/static/themes/default/img/icons/icon_kickass.ico
+++ b/searx/static/themes/legacy/img/icons/icon_kickass.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_openstreetmap.ico b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico
index b65863656..b65863656 100644
--- a/searx/static/themes/default/img/icons/icon_openstreetmap.ico
+++ b/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_searchcode code.ico b/searx/static/themes/legacy/img/icons/icon_searchcode code.ico
index 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
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_searchcode doc.ico b/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico
index 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
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_searchcode.ico b/searx/static/themes/legacy/img/icons/icon_searchcode.ico
index dc099ef70..dc099ef70 100644
--- a/searx/static/themes/default/img/icons/icon_searchcode.ico
+++ b/searx/static/themes/legacy/img/icons/icon_searchcode.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_soundcloud.ico b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico
index 4130bea1b..4130bea1b 100644
--- a/searx/static/themes/default/img/icons/icon_soundcloud.ico
+++ b/searx/static/themes/legacy/img/icons/icon_soundcloud.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_stackoverflow.ico b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico
index b2242bc6c..b2242bc6c 100644
--- a/searx/static/themes/default/img/icons/icon_stackoverflow.ico
+++ b/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_startpage.ico b/searx/static/themes/legacy/img/icons/icon_startpage.ico
index 44b94a986..44b94a986 100644
--- a/searx/static/themes/default/img/icons/icon_startpage.ico
+++ b/searx/static/themes/legacy/img/icons/icon_startpage.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_subtitleseeker.ico b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico
index 9a0565558..9a0565558 100644
--- a/searx/static/themes/default/img/icons/icon_subtitleseeker.ico
+++ b/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_twitter.ico b/searx/static/themes/legacy/img/icons/icon_twitter.ico
index b4a71699a..b4a71699a 100644
--- a/searx/static/themes/default/img/icons/icon_twitter.ico
+++ b/searx/static/themes/legacy/img/icons/icon_twitter.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_vimeo.ico b/searx/static/themes/legacy/img/icons/icon_vimeo.ico
index 4fe4336da..4fe4336da 100644
--- a/searx/static/themes/default/img/icons/icon_vimeo.ico
+++ b/searx/static/themes/legacy/img/icons/icon_vimeo.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_wikipedia.ico b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico
index e70021849..e70021849 100644
--- a/searx/static/themes/default/img/icons/icon_wikipedia.ico
+++ b/searx/static/themes/legacy/img/icons/icon_wikipedia.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_yahoo.ico b/searx/static/themes/legacy/img/icons/icon_yahoo.ico
index 9bd1d9f7c..9bd1d9f7c 100644
--- a/searx/static/themes/default/img/icons/icon_yahoo.ico
+++ b/searx/static/themes/legacy/img/icons/icon_yahoo.ico
Binary files differ
diff --git a/searx/static/themes/default/img/icons/icon_youtube.ico b/searx/static/themes/legacy/img/icons/icon_youtube.ico
index 977887dbb..977887dbb 100644
--- a/searx/static/themes/default/img/icons/icon_youtube.ico
+++ b/searx/static/themes/legacy/img/icons/icon_youtube.ico
Binary files differ
diff --git a/searx/static/themes/default/img/preference-icon.png b/searx/static/themes/legacy/img/preference-icon.png
index 8bdee641d..8bdee641d 100644
--- a/searx/static/themes/default/img/preference-icon.png
+++ b/searx/static/themes/legacy/img/preference-icon.png
Binary files differ
diff --git a/searx/static/themes/default/img/search-icon.png b/searx/static/themes/legacy/img/search-icon.png
index d70310b5d..d70310b5d 100644
--- a/searx/static/themes/default/img/search-icon.png
+++ b/searx/static/themes/legacy/img/search-icon.png
Binary files differ
diff --git a/searx/static/themes/default/img/searx.png b/searx/static/themes/legacy/img/searx.png
index a98f12a1d..a98f12a1d 100644
--- a/searx/static/themes/default/img/searx.png
+++ b/searx/static/themes/legacy/img/searx.png
Binary files differ
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 }}&amp;format=rss&amp;{% for category in selected_categories %}category_{{ category }}=1&amp;{% 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')