diff options
Diffstat (limited to 'searx/__init__.py')
-rw-r--r-- | searx/__init__.py | 99 |
1 files changed, 61 insertions, 38 deletions
diff --git a/searx/__init__.py b/searx/__init__.py index d32fe00..0f9b435 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -15,51 +15,35 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. (C) 2013- by Adam Tauber, <asciimoo@gmail.com> ''' -import certifi import logging +import searx.settings_loader from os import environ from os.path import realpath, dirname, join, abspath, isfile -from io import open -from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION -try: - from yaml import safe_load -except: - from sys import exit, stderr - stderr.write('[E] install pyyaml\n') - exit(2) +from sys import exit + +from searx.exceptions import SearxSettingsException searx_dir = abspath(dirname(__file__)) engine_dir = dirname(realpath(__file__)) +static_path = abspath(join(dirname(__file__), 'static')) +settings, settings_outgoing = {}, '' +try: + settings, settings_load_message = searx.settings_loader.load_settings() +except SearxSettingsException as e: + logger = logging.getLogger('searx') + logger.error('Failed to load settings file: {}'.format(str(e))) + exit(1) -def check_settings_yml(file_name): - if isfile(file_name): - return file_name - else: - return None - -# find location of settings.yml -if 'SEARX_SETTINGS_PATH' in environ: - # if possible set path to settings using the - # enviroment variable SEARX_SETTINGS_PATH - settings_path = check_settings_yml(environ['SEARX_SETTINGS_PATH']) -else: - # if not, get it from searx code base or last solution from /etc/searx - settings_path = check_settings_yml(join(searx_dir, 'settings.yml')) or check_settings_yml('/etc/searx/settings.yml') - -if not settings_path: - raise Exception('settings.yml not found') -# load settings -with open(settings_path, 'r', encoding='utf-8') as settings_yaml: - settings = safe_load(settings_yaml) +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) @@ -79,17 +63,56 @@ else: logging.basicConfig(level=logging.WARNING) logger = logging.getLogger('searx') -logger.debug('read configuration from %s', settings_path) -# Workaround for openssl versions <1.0.2 -# https://github.com/certifi/python-certifi/issues/26 -if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2): - if hasattr(certifi, 'old_where'): - environ['REQUESTS_CA_BUNDLE'] = certifi.old_where() - logger.warning('You are using an old openssl version({0}), please upgrade above 1.0.2!'.format(OPENSSL_VERSION)) - +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'] + + +class _brand_namespace: + + @classmethod + def get_val(cls, group, name, default=''): + return settings.get(group, {}).get(name) or default + + @property + def SEARX_URL(self): + return self.get_val('server', 'base_url') + + @property + def CONTACT_URL(self): + return self.get_val('general', 'contact_url') + + @property + def GIT_URL(self): + return self.get_val('brand', 'git_url') + + @property + def GIT_BRANCH(self): + return self.get_val('brand', 'git_branch') + + @property + def ISSUE_URL(self): + return self.get_val('brand', 'issue_url') + + @property + def DOCS_URL(self): + return self.get_val('brand', 'docs_url') + + @property + def PUBLIC_INSTANCES(self): + return self.get_val('brand', 'public_instances') + + @property + def WIKI_URL(self): + return self.get_val('brand', 'wiki_url') + + @property + def TWITTER_URL(self): + return self.get_val('brand', 'twitter_url') + + +brand = _brand_namespace() |