Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b07df62 authored by Alexandre Flament's avatar Alexandre Flament
Browse files

[mod] move all default settings into searx.settings_defaults

parent 85672922
Loading
Loading
Loading
Loading
+11 −29
Original line number Diff line number Diff line
@@ -17,37 +17,18 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.

import logging
import searx.settings_loader
from os import environ
from os.path import realpath, dirname, join, abspath, isfile
from searx.settings_defaults import settings_set_defaults
from os.path import dirname, abspath


searx_dir = abspath(dirname(__file__))
searx_parent_dir = abspath(dirname(dirname(__file__)))
engine_dir = dirname(realpath(__file__))
static_path = abspath(join(dirname(__file__), 'static'))
settings, settings_load_message = searx.settings_loader.load_settings()

if settings['ui']['static_path']:
    static_path = settings['ui']['static_path']

'''
enable debug if
the environnement variable SEARX_DEBUG is 1 or true
(whatever the value in settings.yml)
or general.debug=True in settings.yml
disable debug if
the environnement variable SEARX_DEBUG is 0 or false
(whatever the value in settings.yml)
or general.debug=False in settings.yml
'''
searx_debug_env = environ.get('SEARX_DEBUG', '').lower()
if searx_debug_env == 'true' or searx_debug_env == '1':
    searx_debug = True
elif searx_debug_env == 'false' or searx_debug_env == '0':
    searx_debug = False
else:
    searx_debug = settings.get('general', {}).get('debug')
if settings is not None:
    settings = settings_set_defaults(settings)

searx_debug = settings['general']['debug']
if searx_debug:
    logging.basicConfig(level=logging.DEBUG)
else:
@@ -55,12 +36,13 @@ else:

logger = logging.getLogger('searx')
logger.info(settings_load_message)
logger.info('Initialisation done')

if 'SEARX_SECRET' in environ:
    settings['server']['secret_key'] = environ['SEARX_SECRET']
if 'SEARX_BIND_ADDRESS' in environ:
    settings['server']['bind_address'] = environ['SEARX_BIND_ADDRESS']
# log max_request_timeout
max_request_timeout = settings['outgoing']['max_request_timeout']
if max_request_timeout is None:
    logger.info('max_request_timeout=%s', repr(max_request_timeout))
else:
    logger.info('max_request_timeout=%i second(s)', max_request_timeout)


class _brand_namespace:
+1 −1
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ def load_engine(engine_data):
        # exclude onion engines if not using tor.
        return None

    engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
    engine.timeout += settings['outgoing']['extra_proxy_timeout']

    for category_name in engine.categories:
        categories.setdefault(category_name, []).append(engine)
+11 −17
Original line number Diff line number Diff line
@@ -224,28 +224,22 @@ def initialize(settings_engines=None, settings_outgoing=None):

    global NETWORKS

    settings_engines = settings_engines or settings.get('engines')
    settings_outgoing = settings_outgoing or settings.get('outgoing')
    settings_engines = settings_engines or settings['engines']
    settings_outgoing = settings_outgoing or settings['outgoing']

    # default parameters for AsyncHTTPTransport
    # see https://github.com/encode/httpx/blob/e05a5372eb6172287458b37447c30f650047e1b8/httpx/_transports/default.py#L108-L121  # pylint: disable=line-too-long
    default_params = {
        'enable_http': False,
        'verify': True,
        'enable_http2': settings_outgoing.get('enable_http2', True),
        # Magic number kept from previous code
        'max_connections': settings_outgoing.get('pool_connections', 100),
        # Picked from constructor
        'max_keepalive_connections': settings_outgoing.get('pool_maxsize', 10),
        #
        'keepalive_expiry': settings_outgoing.get('keepalive_expiry', 5.0),
        'local_addresses': settings_outgoing.get('source_ips'),
        'proxies': settings_outgoing.get('proxies'),
        # default maximum redirect
        # from https://github.com/psf/requests/blob/8c211a96cdbe9fe320d63d9e1ae15c5c07e179f8/requests/models.py#L55
        'max_redirects': settings_outgoing.get('max_redirects', 30),
        #
        'retries': settings_outgoing.get('retries', 0),
        'enable_http2': settings_outgoing['enable_http2'],
        'max_connections': settings_outgoing['pool_connections'],
        'max_keepalive_connections': settings_outgoing['pool_maxsize'],
        'keepalive_expiry': settings_outgoing['keepalive_expiry'],
        'local_addresses': settings_outgoing['source_ips'],
        'proxies': settings_outgoing['proxies'],
        'max_redirects': settings_outgoing['max_redirects'],
        'retries': settings_outgoing['retries'],
        'retry_on_http_error': None,
    }

@@ -274,7 +268,7 @@ def initialize(settings_engines=None, settings_outgoing=None):
    NETWORKS['ipv6'] = new_network({'local_addresses': '::'})

    # define networks from outgoing.networks
    for network_name, network in settings_outgoing.get('networks', {}).items():
    for network_name, network in settings_outgoing['networks'].items():
        NETWORKS[network_name] = new_network(network)

    # define networks from engines.[i].network (except references)
+5 −5
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ from os import listdir, makedirs, remove, stat, utime
from os.path import abspath, basename, dirname, exists, join
from shutil import copyfile

from searx import logger, settings, static_path
from searx import logger, settings


logger = logger.getChild('plugins')
@@ -123,7 +123,7 @@ def sync_resource(base_path, resource_path, name, target_dir, plugin_dir):

def prepare_package_resources(pkg, name):
    plugin_dir = 'plugin_' + name
    target_dir = join(static_path, 'plugins/external_plugins', plugin_dir)
    target_dir = join(settings['ui']['static_path'], 'plugins/external_plugins', plugin_dir)
    try:
        makedirs(target_dir, exist_ok=True)
    except:
@@ -170,10 +170,10 @@ plugins.register(search_on_category_select)
plugins.register(tracker_url_remover)
plugins.register(vim_hotkeys)
# load external plugins
if 'plugins' in settings:
if settings['plugins']:
    plugins.register(*settings['plugins'], external=True)

if 'enabled_plugins' in settings:
if settings['enabled_plugins']:
    for plugin in plugins:
        if plugin.name in settings['enabled_plugins']:
            plugin.default_on = True
@@ -181,5 +181,5 @@ if 'enabled_plugins' in settings:
            plugin.default_on = False

# load tor specific plugins
if settings['outgoing'].get('using_tor_proxy'):
if settings['outgoing']['using_tor_proxy']:
    plugins.register(ahmia_filter)
+11 −11
Original line number Diff line number Diff line
@@ -333,25 +333,25 @@ class Preferences:
                choices=categories + ['none']
            ),
            'language': SearchLanguageSetting(
                settings['search'].get('default_lang', ''),
                settings['search']['default_lang'],
                is_locked('language'),
                choices=list(LANGUAGE_CODES) + ['']
            ),
            'locale': EnumStringSetting(
                settings['ui'].get('default_locale', ''),
                settings['ui']['default_locale'],
                is_locked('locale'),
                choices=list(settings['locales'].keys()) + ['']
            ),
            'autocomplete': EnumStringSetting(
                settings['search'].get('autocomplete', ''),
                settings['search']['autocomplete'],
                is_locked('autocomplete'),
                choices=list(autocomplete.backends.keys()) + ['']
            ),
            'image_proxy': MapSetting(
                settings['server'].get('image_proxy', False),
                settings['server']['image_proxy'],
                is_locked('image_proxy'),
                map={
                    '': settings['server'].get('image_proxy', 0),
                    '': settings['server']['image_proxy'],
                    '0': False,
                    '1': True,
                    'True': True,
@@ -359,12 +359,12 @@ class Preferences:
                }
            ),
            'method': EnumStringSetting(
                settings['server'].get('method', 'POST'),
                settings['server']['method'],
                is_locked('method'),
                choices=('GET', 'POST')
            ),
            'safesearch': MapSetting(
                settings['search'].get('safe_search', 0),
                settings['search']['safe_search'],
                is_locked('safesearch'),
                map={
                    '0': 0,
@@ -373,12 +373,12 @@ class Preferences:
                }
            ),
            'theme': EnumStringSetting(
                settings['ui'].get('default_theme', 'oscar'),
                settings['ui']['default_theme'],
                is_locked('theme'),
                choices=themes
            ),
            'results_on_new_tab': MapSetting(
                settings['ui'].get('results_on_new_tab', False),
                settings['ui']['results_on_new_tab'],
                is_locked('results_on_new_tab'),
                map={
                    '0': False,
@@ -393,11 +393,11 @@ class Preferences:
                choices=DOI_RESOLVERS
            ),
            'oscar-style': EnumStringSetting(
                settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'),
                settings['ui']['theme_args']['oscar_style'],
                is_locked('oscar-style'),
                choices=['', 'logicodev', 'logicodev-dark', 'pointhi']),
            'advanced_search': MapSetting(
                settings['ui'].get('advanced_search', False),
                settings['ui']['advanced_search'],
                is_locked('advanced_search'),
                map={
                    '0': False,
Loading