mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	[mod] https rewrite pluginification
This commit is contained in:
		
							parent
							
								
									146928a749
								
							
						
					
					
						commit
						d2a636f75d
					
				@ -36,11 +36,6 @@ if 'SEARX_SETTINGS_PATH' in environ:
 | 
				
			|||||||
else:
 | 
					else:
 | 
				
			||||||
    settings_path = join(searx_dir, 'settings.yml')
 | 
					    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
 | 
					# load settings
 | 
				
			||||||
with open(settings_path) as settings_yaml:
 | 
					with open(settings_path) as settings_yaml:
 | 
				
			||||||
    settings = load(settings_yaml)
 | 
					    settings = load(settings_yaml)
 | 
				
			||||||
@ -52,10 +47,4 @@ else:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
logger = logging.getLogger('searx')
 | 
					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')
 | 
					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>
 | 
					(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 sys import exit
 | 
				
			||||||
 | 
					from searx import logger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger = logger.getChild('plugins')
 | 
					logger = logger.getChild('plugins')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from searx.plugins import (https_rewrite,
 | 
				
			||||||
 | 
					                           self_ip,
 | 
				
			||||||
 | 
					                           search_on_category_select)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
required_attrs = (('name', str),
 | 
					required_attrs = (('name', str),
 | 
				
			||||||
                  ('description', str),
 | 
					                  ('description', str),
 | 
				
			||||||
                  ('default_on', bool))
 | 
					                  ('default_on', bool))
 | 
				
			||||||
@ -68,5 +70,6 @@ class PluginStore():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
plugins = PluginStore()
 | 
					plugins = PluginStore()
 | 
				
			||||||
 | 
					plugins.register(https_rewrite)
 | 
				
			||||||
plugins.register(self_ip)
 | 
					plugins.register(self_ip)
 | 
				
			||||||
plugins.register(search_on_category_select)
 | 
					plugins.register(search_on_category_select)
 | 
				
			||||||
 | 
				
			|||||||
@ -18,11 +18,22 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
 | 
				
			|||||||
import re
 | 
					import re
 | 
				
			||||||
from urlparse import urlparse
 | 
					from urlparse import urlparse
 | 
				
			||||||
from lxml import etree
 | 
					from lxml import etree
 | 
				
			||||||
from os import listdir
 | 
					from os import listdir, environ
 | 
				
			||||||
from os.path import isfile, isdir, join
 | 
					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")
 | 
					logger = logger.getChild("https_rewrite")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# https://gitweb.torproject.org/\
 | 
					# https://gitweb.torproject.org/\
 | 
				
			||||||
@ -33,7 +44,7 @@ https_rules = []
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# load single ruleset from a xml file
 | 
					# load single ruleset from a xml file
 | 
				
			||||||
def load_single_https_ruleset(filepath):
 | 
					def load_single_https_ruleset(rules_path):
 | 
				
			||||||
    ruleset = ()
 | 
					    ruleset = ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # init parser
 | 
					    # init parser
 | 
				
			||||||
@ -41,7 +52,7 @@ def load_single_https_ruleset(filepath):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # load and parse xml-file
 | 
					    # load and parse xml-file
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        tree = etree.parse(filepath, parser)
 | 
					        tree = etree.parse(rules_path, parser)
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        # TODO, error message
 | 
					        # TODO, error message
 | 
				
			||||||
        return ()
 | 
					        return ()
 | 
				
			||||||
@ -207,3 +218,10 @@ def https_url_rewrite(result):
 | 
				
			|||||||
            # target has matched, do not search over the other rules
 | 
					            # target has matched, do not search over the other rules
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
    return result
 | 
					    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/"
 | 
					    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
 | 
					    themes_path : "" # Custom ui themes path - leave it blank if you didn't change
 | 
				
			||||||
    default_theme : oscar # ui theme
 | 
					    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
 | 
					    useragent_suffix : "" # suffix of searx_useragent, could contain informations like an email address to the administrator
 | 
				
			||||||
    image_proxy : False # Proxying image results through searx
 | 
					    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
 | 
					    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.version import VERSION_STRING
 | 
				
			||||||
from searx.languages import language_codes
 | 
					from searx.languages import language_codes
 | 
				
			||||||
from searx.https_rewrite import https_url_rewrite
 | 
					 | 
				
			||||||
from searx.search import Search
 | 
					from searx.search import Search
 | 
				
			||||||
from searx.query import Query
 | 
					from searx.query import Query
 | 
				
			||||||
from searx.autocomplete import searx_bang, backends as autocomplete_backends
 | 
					from searx.autocomplete import searx_bang, backends as autocomplete_backends
 | 
				
			||||||
@ -359,15 +358,10 @@ def index():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for result in search.results:
 | 
					    for result in search.results:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        plugins.call('on_result', request, locals())
 | 
				
			||||||
        if not search.paging and engines[result['engine']].paging:
 | 
					        if not search.paging and engines[result['engine']].paging:
 | 
				
			||||||
            search.paging = True
 | 
					            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 search.request_data.get('format', 'html') == 'html':
 | 
				
			||||||
            if 'content' in result:
 | 
					            if 'content' in result:
 | 
				
			||||||
                result['content'] = highlight_content(result['content'],
 | 
					                result['content'] = highlight_content(result['content'],
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user