Commit d2a636f7 authored by Adam Tauber's avatar Adam Tauber

[mod] https rewrite pluginification

parent 146928a7
......@@ -36,11 +36,6 @@ if 'SEARX_SETTINGS_PATH' in environ:
else:
settings_path = join(searx_dir, 'settings.yml')
if 'SEARX_HTTPS_REWRITE_PATH' in environ:
https_rewrite_path = environ['SEARX_HTTPS_REWRITE_PATH']
else:
https_rewrite_path = join(searx_dir, 'https_rules')
# load settings
with open(settings_path) as settings_yaml:
settings = load(settings_yaml)
......@@ -52,10 +47,4 @@ else:
logger = logging.getLogger('searx')
# load https rules only if https rewrite is enabled
if settings.get('server', {}).get('https_rewrite'):
# loade https rules
from searx.https_rewrite import load_https_rules
load_https_rules(https_rewrite_path)
logger.info('Initialisation done')
......@@ -14,13 +14,15 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
'''
from searx.plugins import (self_ip,
search_on_category_select)
from searx import logger
from sys import exit
from searx import logger
logger = logger.getChild('plugins')
from searx.plugins import (https_rewrite,
self_ip,
search_on_category_select)
required_attrs = (('name', str),
('description', str),
('default_on', bool))
......@@ -68,5 +70,6 @@ class PluginStore():
plugins = PluginStore()
plugins.register(https_rewrite)
plugins.register(self_ip)
plugins.register(search_on_category_select)
......@@ -18,11 +18,22 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
import re
from urlparse import urlparse
from lxml import etree
from os import listdir
from os import listdir, environ
from os.path import isfile, isdir, join
from searx import logger
from searx.plugins import logger
from flask.ext.babel import gettext
from searx import searx_dir
name = "HTTPS rewrite"
description = gettext('Rewrite HTTP links to HTTPS if possible')
default_on = True
if 'SEARX_HTTPS_REWRITE_PATH' in environ:
rules_path = environ['SEARX_rules_path']
else:
rules_path = join(searx_dir, 'plugins/https_rules')
logger = logger.getChild("https_rewrite")
# https://gitweb.torproject.org/\
......@@ -33,7 +44,7 @@ https_rules = []
# load single ruleset from a xml file
def load_single_https_ruleset(filepath):
def load_single_https_ruleset(rules_path):
ruleset = ()
# init parser
......@@ -41,7 +52,7 @@ def load_single_https_ruleset(filepath):
# load and parse xml-file
try:
tree = etree.parse(filepath, parser)
tree = etree.parse(rules_path, parser)
except:
# TODO, error message
return ()
......@@ -207,3 +218,10 @@ def https_url_rewrite(result):
# target has matched, do not search over the other rules
break
return result
def on_result(request, ctx):
result = ctx['result']
if result['parsed_url'].scheme == 'http':
https_url_rewrite(result)
return True
......@@ -6,7 +6,6 @@ server:
base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
themes_path : "" # Custom ui themes path - leave it blank if you didn't change
default_theme : oscar # ui theme
https_rewrite : True # Force rewrite result urls. See searx/https_rewrite.py
useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
image_proxy : False # Proxying image results through searx
default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
......
......@@ -59,7 +59,6 @@ from searx.utils import (
)
from searx.version import VERSION_STRING
from searx.languages import language_codes
from searx.https_rewrite import https_url_rewrite
from searx.search import Search
from searx.query import Query
from searx.autocomplete import searx_bang, backends as autocomplete_backends
......@@ -359,15 +358,10 @@ def index():
for result in search.results:
plugins.call('on_result', request, locals())
if not search.paging and engines[result['engine']].paging:
search.paging = True
# check if HTTPS rewrite is required
if settings['server']['https_rewrite']\
and result['parsed_url'].scheme == 'http':
result = https_url_rewrite(result)
if search.request_data.get('format', 'html') == 'html':
if 'content' in result:
result['content'] = highlight_content(result['content'],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment