Commit 9c91ab33 authored by Alexandre Flament's avatar Alexandre Flament

[mod] settings.yml can be /etc/searx/settings.yml

The exact order is
* first from SEARX_SETTINGS_PATH,
* if not found then from searx code base,
* if not found then from /etc/searx/settings.yml
* if not found an exception stops searx loading
parent ee080fea
...@@ -18,7 +18,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. ...@@ -18,7 +18,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
import certifi import certifi
import logging import logging
from os import environ from os import environ
from os.path import realpath, dirname, join, abspath from os.path import realpath, dirname, join, abspath, isfile
from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION
try: try:
from yaml import load from yaml import load
...@@ -30,13 +30,24 @@ except: ...@@ -30,13 +30,24 @@ except:
searx_dir = abspath(dirname(__file__)) searx_dir = abspath(dirname(__file__))
engine_dir = dirname(realpath(__file__)) engine_dir = dirname(realpath(__file__))
# if possible set path to settings using the
# enviroment variable SEARX_SETTINGS_PATH 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 'SEARX_SETTINGS_PATH' in environ:
settings_path = environ['SEARX_SETTINGS_PATH'] # if possible set path to settings using the
# otherwise using default path # enviroment variable SEARX_SETTINGS_PATH
settings_path = check_settings_yml(environ['SEARX_SETTINGS_PATH'])
else: else:
settings_path = join(searx_dir, 'settings.yml') # 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 # load settings
with open(settings_path) as settings_yaml: with open(settings_path) as settings_yaml:
...@@ -67,7 +78,7 @@ else: ...@@ -67,7 +78,7 @@ else:
logging.basicConfig(level=logging.WARNING) logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger('searx') logger = logging.getLogger('searx')
logger.debug('read configuration from %s', settings_path)
# Workaround for openssl versions <1.0.2 # Workaround for openssl versions <1.0.2
# https://github.com/certifi/python-certifi/issues/26 # https://github.com/certifi/python-certifi/issues/26
if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2): if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2):
......
...@@ -186,9 +186,9 @@ def get_resources_directory(searx_directory, subdirectory, resources_directory): ...@@ -186,9 +186,9 @@ def get_resources_directory(searx_directory, subdirectory, resources_directory):
return resources_directory return resources_directory
def get_themes(static_path): def get_themes(templates_path):
"""Returns available themes list.""" """Returns available themes list."""
themes = os.listdir(os.path.join(static_path, 'themes')) themes = os.listdir(templates_path)
if '__common__' in themes: if '__common__' in themes:
themes.remove('__common__') themes.remove('__common__')
return themes return themes
......
...@@ -100,7 +100,7 @@ static_files = get_static_files(static_path) ...@@ -100,7 +100,7 @@ static_files = get_static_files(static_path)
default_theme = settings['ui']['default_theme'] default_theme = settings['ui']['default_theme']
templates_path = get_resources_directory(searx_dir, 'templates', settings['ui']['templates_path']) templates_path = get_resources_directory(searx_dir, 'templates', settings['ui']['templates_path'])
logger.debug('templates directory is %s', templates_path) logger.debug('templates directory is %s', templates_path)
themes = get_themes(static_path) themes = get_themes(templates_path)
result_templates = get_result_templates(templates_path) result_templates = get_result_templates(templates_path)
global_favicons = [] global_favicons = []
for indice, theme in enumerate(themes): for indice, theme in enumerate(themes):
......
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