@ -18,7 +18,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
import certifi
import logging
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
try :
from yaml import load
@ -30,13 +30,24 @@ except:
searx_dir = abspath ( dirname ( __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 :
settings_path = environ [ ' SEARX_SETTINGS_PATH ' ]
# otherwise using default path
# if possible set path to settings using the
# enviroment variable SEARX_SETTINGS_PATH
settings_path = check_settings_yml ( environ [ ' SEARX_SETTINGS_PATH ' ] )
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
with open ( settings_path ) as settings_yaml :
@ -67,7 +78,7 @@ 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 ) :