From bc8261c5d2020f5d767f6c0f0c53ae7c703839a5 Mon Sep 17 00:00:00 2001 From: Nicolas Gelot Date: Wed, 17 Jul 2019 08:55:00 +0200 Subject: [PATCH 1/3] Fix searx version Searx version is useful for external report tool like stats.searx.xyz. Then is better for spot project to track the upstream tag to avoid conflict during the next rebase. The new spot tag format is the folowing: `+`. I suggest to use the spot tag with the date format `YYYYMMDD`. A full tag should be `v0.15.0+20190719`. Ref: #36 --- searx/templates/eelo/base.html | 2 +- searx/version.py | 6 ++++++ searx/webapp.py | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/searx/templates/eelo/base.html b/searx/templates/eelo/base.html index 31fb8160f..94dae554a 100644 --- a/searx/templates/eelo/base.html +++ b/searx/templates/eelo/base.html @@ -89,7 +89,7 @@ e Foundation 2018-2019, {{ _('Powered by') }} Spot - {{ searx_version }}.
An open-source metasearch engine forked from Searx. + {{ metadata_version }}.
An open-source metasearch engine forked from Searx {{ searx_version }}. {{ _('About') }} {{ _('Privacy') }} diff --git a/searx/version.py b/searx/version.py index 473eb722d..11bbcbffe 100644 --- a/searx/version.py +++ b/searx/version.py @@ -22,3 +22,9 @@ try: VERSION_STRING = get_distribution("searx").version except DistributionNotFound: VERSION_STRING = "0.0.0" + +try: + SEARX_VERSION, METADATA_VERSION = VERSION_STRING.split("+") +except ValueError: + SEARX_VERSION = VERSION_STRING + METADATA_VERSION = "" diff --git a/searx/webapp.py b/searx/webapp.py index fea6046e2..48ccef934 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -52,7 +52,7 @@ from searx.utils import ( get_static_files, get_result_templates, get_themes, gen_useragent, dict_subset, prettify_url, match_language ) -from searx.version import VERSION_STRING +from searx.version import VERSION_STRING, SEARX_VERSION, METADATA_VERSION from searx.languages import language_codes as languages from searx.search import Search from searx.search_database import RedisCache @@ -333,7 +333,8 @@ def render(template_name, override_theme=None, **kwargs): if locale in rtl_locales and 'rtl' not in kwargs: kwargs['rtl'] = True - kwargs['searx_version'] = VERSION_STRING + kwargs['searx_version'] = SEARX_VERSION + kwargs['metadata_version'] = METADATA_VERSION kwargs['method'] = request.preferences.get_value('method') -- GitLab From 7a701db3bf840cbe55de2a33a9ea186647367164 Mon Sep 17 00:00:00 2001 From: Nicolas Gelot Date: Wed, 17 Jul 2019 09:45:47 +0200 Subject: [PATCH 2/3] Fix Mozilla observatory issues Close: #36 --- docker-compose.yml | 1 + etc/nginx/vhost.d/default | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 etc/nginx/vhost.d/default diff --git a/docker-compose.yml b/docker-compose.yml index c6cd1aa3f..87a27d780 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,7 @@ services: restart: unless-stopped container_name: proxy volumes: + - ./etc/nginx/vhost.d/default:/etc/nginx/vhost.d/default - /mnt/data/html:/usr/share/nginx/html - /mnt/data/vhosts:/etc/nginx/vhost.d - /mnt/data/certs:/etc/nginx/certs:ro diff --git a/etc/nginx/vhost.d/default b/etc/nginx/vhost.d/default new file mode 100644 index 000000000..07c6b072b --- /dev/null +++ b/etc/nginx/vhost.d/default @@ -0,0 +1,5 @@ +add_header Content-Security-Policy "frame-ancestors 'self'"; +add_header Referrer-Policy "no-referrer, strict-origin-when-cross-origin"; +add_header X-Frame-Options "SAMEORIGIN"; +add_header X-XSS-Protection "1; mode=block"; +add_header X-Content-Type-Options "nosniff"; -- GitLab From 928ab905c00ea4b0102e5f33cea04d19186d3d8c Mon Sep 17 00:00:00 2001 From: Nicolas Gelot Date: Thu, 18 Jul 2019 00:12:45 +0200 Subject: [PATCH 3/3] Fix /config endpoint This patch casts dict_keys to a liste to solve the http 500 related to `Object of type dict_keys is not JSON serializable`. --- searx/webapp.py | 63 ++++++++++++++++++++---------------- tests/functional/test_api.py | 6 ++++ 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index 48ccef934..36f361232 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -785,34 +785,41 @@ def clear_cookies(): @app.route('/config') def config(): - return jsonify({'categories': categories.keys(), - 'engines': [{'name': engine_name, - 'categories': engine.categories, - 'shortcut': engine.shortcut, - 'enabled': not engine.disabled, - 'paging': engine.paging, - 'language_support': engine.language_support, - 'supported_languages': - engine.supported_languages.keys() - if isinstance(engine.supported_languages, dict) - else engine.supported_languages, - 'safesearch': engine.safesearch, - 'time_range_support': engine.time_range_support, - 'timeout': engine.timeout} - for engine_name, engine in engines.items()], - 'plugins': [{'name': plugin.name, - 'enabled': plugin.default_on} - for plugin in plugins], - 'instance_name': settings['general']['instance_name'], - 'locales': settings['locales'], - 'default_locale': settings['ui']['default_locale'], - 'autocomplete': settings['search']['autocomplete'], - 'safe_search': settings['search']['safe_search'], - 'default_theme': settings['ui']['default_theme'], - 'version': VERSION_STRING, - 'doi_resolvers': [r for r in settings['doi_resolvers']], - 'default_doi_resolver': settings['default_doi_resolver'], - }) + return jsonify( + { + "categories": list(categories.keys()), + "engines": [ + { + "name": engine_name, + "categories": engine.categories, + "shortcut": engine.shortcut, + "enabled": not engine.disabled, + "paging": engine.paging, + "language_support": engine.language_support, + "supported_languages": list(engine.supported_languages.keys()) + if isinstance(engine.supported_languages, dict) + else engine.supported_languages, + "safesearch": engine.safesearch, + "time_range_support": engine.time_range_support, + "timeout": engine.timeout, + } + for engine_name, engine in engines.items() + ], + "plugins": [ + {"name": plugin.name, "enabled": plugin.default_on} + for plugin in plugins + ], + "instance_name": settings["general"]["instance_name"], + "locales": settings["locales"], + "default_locale": settings["ui"]["default_locale"], + "autocomplete": settings["search"]["autocomplete"], + "safe_search": settings["search"]["safe_search"], + "default_theme": settings["ui"]["default_theme"], + "version": VERSION_STRING, + "doi_resolvers": [r for r in settings["doi_resolvers"]], + "default_doi_resolver": settings["default_doi_resolver"], + } + ) @app.errorhandler(404) diff --git a/tests/functional/test_api.py b/tests/functional/test_api.py index b5c31eba4..330bc9ab7 100644 --- a/tests/functional/test_api.py +++ b/tests/functional/test_api.py @@ -27,3 +27,9 @@ def test_index(ctx, redisdb): assert len(response["results"]) > 5 assert len(response["image_results"]) == 5 assert len(response['videos_results']) == 2 + + +def test_config(ctx): + res = requests.get(ctx.url + "/config") + assert res.status_code == 200 + assert res.json()["instance_name"] == "/e/ spot" -- GitLab