summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el13
-rw-r--r--.gitignore5
-rw-r--r--.nvm_packages8
-rw-r--r--Makefile6
-rw-r--r--README.rst2
-rw-r--r--SECURITY.md10
-rwxr-xr-xmanage23
-rw-r--r--package.json6
-rw-r--r--pyrightconfig-ci.json10
-rw-r--r--pyrightconfig.json9
-rw-r--r--requirements.txt1
-rw-r--r--searx/autocomplete.py52
-rw-r--r--searx/help/about.md71
-rw-r--r--searx/search/checker/impl.py3
-rw-r--r--searx/settings.yml11
-rw-r--r--searx/static/themes/oscar/css/logicodev-dark.min.css.map2
-rw-r--r--searx/static/themes/oscar/js/searxng.min.js2
-rw-r--r--searx/static/themes/oscar/js/searxng.min.js.map2
-rw-r--r--searx/static/themes/simple/gruntfile.js2
-rw-r--r--searx/templates/__common__/about.html102
-rw-r--r--searx/templates/oscar/about.html3
-rw-r--r--searx/templates/simple/about.html3
-rw-r--r--searx/templates/simple/icons.html2
-rw-r--r--searx/templates/simple/macros.html2
-rw-r--r--searx/user_help.py48
-rwxr-xr-xsearx/webapp.py11
-rwxr-xr-xutils/lib_nvm.sh12
27 files changed, 266 insertions, 155 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 43d6fa551..13145010c 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -32,6 +32,10 @@
;; Jedi, flycheck & other python stuff should use the 'python-shell-interpreter'
;; from the local py3 environment.
;;
+;; For pyright support you need to install::
+;;
+;; M-x package-install lsp-pyright
+;;
;; Other useful jedi stuff you might add to your ~/.emacs::
;;
;; (global-set-key [f6] 'flycheck-mode)
@@ -99,12 +103,19 @@
;; use nodejs from the (local) NVM environment (see nvm-dir)
(nvm-use-for-buffer)
(setq-local js-indent-level 2)
+ ;; flycheck should use the eslint checker from developer tools
+ (setq-local flycheck-javascript-eslint-executable
+ (expand-file-name "node_modules/.bin/eslint" prj-root))
+
(flycheck-mode)
))))
(python-mode
. ((eval . (progn
-
+ ;; use nodejs from the (local) NVM environment (see nvm-dir)
+ (nvm-use-for-buffer)
+ (if (featurep 'lsp-pyright)
+ (lsp))
(setq-local python-environment-virtualenv
(list (expand-file-name "bin/virtualenv" python-shell-virtualenv-root)
;;"--system-site-packages"
diff --git a/.gitignore b/.gitignore
index efea6c872..9b3eff158 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-# to sync with .dockerignore
+# to sync with .dockerignore & pyrightconfig.json
*.pyc
*/*.pyc
@@ -16,3 +16,6 @@ dist/
local/
gh-pages/
*.egg-info/
+
+/package-lock.json
+/node_modules/
diff --git a/.nvm_packages b/.nvm_packages
deleted file mode 100644
index 13eabc5c2..000000000
--- a/.nvm_packages
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- coding: utf-8; mode: conf-unix -*-
-#
-# Developement tools pre-installed in NVM's node installation [1]
-#
-# [1] https://github.com/nvm-sh/nvm#default-global-packages-from-file-while-installing
-
-eslint
-
diff --git a/Makefile b/Makefile
index 9d49e8d5f..0c0ec6c0a 100644
--- a/Makefile
+++ b/Makefile
@@ -50,8 +50,8 @@ search.checker.%: install
$(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))"
PHONY += test ci.test test.shell
-ci.test: test.yamllint test.black test.pylint test.unit test.robot test.rst
-test: test.yamllint test.black test.pylint test.unit test.robot test.rst test.shell
+ci.test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst
+test: test.yamllint test.black test.pyright test.pylint test.unit test.robot test.rst test.shell
test.shell:
$(Q)shellcheck -x -s dash \
dockerfiles/docker-entrypoint.sh
@@ -86,7 +86,7 @@ MANAGE += py.build py.clean
MANAGE += pyenv pyenv.install pyenv.uninstall
MANAGE += pypi.upload pypi.upload.test
MANAGE += format.python
-MANAGE += test.yamllint test.pylint test.black test.unit test.coverage test.robot test.rst test.clean
+MANAGE += test.yamllint test.pylint test.pyright test.black test.unit test.coverage test.robot test.rst test.clean
MANAGE += themes.all themes.oscar themes.simple themes.simple.test pygments.less
MANAGE += static.build.commit static.build.drop static.build.restore
MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs
diff --git a/README.rst b/README.rst
index 38a50a62f..e512ff5c2 100644
--- a/README.rst
+++ b/README.rst
@@ -29,7 +29,7 @@ our homepage_.
.. _searx.space: https://searx.space
.. _user: https://docs.searxng.org/user
-.. _admin: https://docs.searxng.org/user/admin
+.. _admin: https://docs.searxng.org/admin
.. _developer: https://docs.searxng.org/dev
.. _homepage: https://docs.searxng.org/
.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..959e7077d
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,10 @@
+# Security Policy
+
+We love responsible reports of (potential) security issues in SearXNG.
+
+You can contact us at security@searxng.org.
+
+Be sure to provide as much information as possible and if found
+also reproduction steps of the identified vulnerability. Also
+add the specific URL of the project as well as code you found
+the issue in to your report.
diff --git a/manage b/manage
index 1f4ffa53b..678f64017 100755
--- a/manage
+++ b/manage
@@ -20,6 +20,8 @@ source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_go.sh"
# shellcheck source=utils/lib_redis.sh
source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_redis.sh"
+PATH="${REPO_ROOT}/node_modules/.bin:${PATH}"
+
# config
PYOBJECTS="searx"
@@ -103,6 +105,7 @@ format.:
test.:
yamllint : lint YAML files (YAMLLINT_FILES)
pylint : lint PYLINT_FILES, searx/engines, searx & tests
+ pyright : static type check of python sources
black : check black code format
unit : run unit tests
coverage : run unit tests with coverage
@@ -558,6 +561,12 @@ node.env() {
dump_return $?
}
+node.env.devtools() {
+ nodejs.ensure
+ build_msg INSTALL "package.json: developer and CI tools"
+ npm install
+}
+
node.clean() {
if ! required_commands npm 2>/dev/null; then
build_msg CLEAN "npm is not installed / ignore npm dependencies"
@@ -682,6 +691,20 @@ test.pylint() {
dump_return $?
}
+test.pyright() {
+ build_msg TEST "[pyright] static type check of python sources"
+ node.env.devtools
+ # We run Pyright in the virtual environment because Pyright
+ # executes "python" to determine the Python version.
+ build_msg TEST "[pyright] suppress warnings related to intentional monkey patching"
+ pyenv.cmd npx --no-install pyright -p pyrightconfig-ci.json \
+ | grep -v ".py$" \
+ | grep -v '/engines/.*.py.* - warning: "logger" is not defined'\
+ | grep -v '/engines/.*.py.* - warning: "supported_languages" is not defined' \
+ | grep -v '/engines/.*.py.* - warning: "language_aliases" is not defined'
+ dump_return $?
+}
+
test.black() {
build_msg TEST "[black] \$BLACK_TARGETS"
pyenv.cmd black --check --diff "${BLACK_OPTIONS[@]}" "${BLACK_TARGETS[@]}"
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..e65e0585d
--- /dev/null
+++ b/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "eslint": "^8.7.0",
+ "pyright": "^1.1.212"
+ }
+}
diff --git a/pyrightconfig-ci.json b/pyrightconfig-ci.json
new file mode 100644
index 000000000..9082b0790
--- /dev/null
+++ b/pyrightconfig-ci.json
@@ -0,0 +1,10 @@
+{
+ "venvPath": "local",
+ "venv": "py3",
+ "include": [
+ "searx",
+ "searxng_extra",
+ "tests"
+ ],
+ "typeCheckingMode": "off"
+}
diff --git a/pyrightconfig.json b/pyrightconfig.json
new file mode 100644
index 000000000..56573c75f
--- /dev/null
+++ b/pyrightconfig.json
@@ -0,0 +1,9 @@
+{
+ "venvPath": "local",
+ "venv": "py3",
+ "include": [
+ "searx",
+ "searxng_extra",
+ "tests"
+ ]
+}
diff --git a/requirements.txt b/requirements.txt
index e9fd942d1..95b85578e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,3 +14,4 @@ httpx-socks[asyncio]==0.7.2
langdetect==1.0.9
setproctitle==1.2.2
redis==4.1.1
+mistletoe==0.8.1
diff --git a/searx/autocomplete.py b/searx/autocomplete.py
index b8d272c32..8a67f8139 100644
--- a/searx/autocomplete.py
+++ b/searx/autocomplete.py
@@ -1,33 +1,23 @@
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module implements functions needed for the autocompleter.
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
+"""
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-
-(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
-'''
-
-
-from lxml import etree
from json import loads
from urllib.parse import urlencode
+from lxml import etree
from httpx import HTTPError
-
from searx import settings
from searx.data import ENGINES_LANGUAGES
from searx.network import get as http_get
from searx.exceptions import SearxEngineResponseException
+# a fetch_supported_languages() for XPath engines isn't available right now
+# _brave = ENGINES_LANGUAGES['brave'].keys()
+
def get(*args, **kwargs):
if 'timeout' not in kwargs:
@@ -36,7 +26,26 @@ def get(*args, **kwargs):
return http_get(*args, **kwargs)
-def dbpedia(query, lang):
+def brave(query, _lang):
+ # brave search autocompleter
+ url = 'https://search.brave.com/api/suggest?'
+ url += urlencode({'q': query})
+ country = 'all'
+ # if lang in _brave:
+ # country = lang
+ kwargs = {'cookies': {'country': country}}
+ resp = get(url, **kwargs)
+
+ results = []
+
+ if resp.ok:
+ data = resp.json()
+ for item in data[1]:
+ results.append(item)
+ return results
+
+
+def dbpedia(query, _lang):
# dbpedia autocompleter, no HTTPS
autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
@@ -51,7 +60,7 @@ def dbpedia(query, lang):
return results
-def duckduckgo(query, lang):
+def duckduckgo(query, _lang):
# duckduckgo autocompleter
url = 'https://ac.duckduckgo.com/ac/?{0}&type=list'
@@ -85,7 +94,7 @@ def startpage(query, lang):
return [e['text'] for e in data.get('suggestions', []) if 'text' in e]
-def swisscows(query, lang):
+def swisscows(query, _lang):
# swisscows autocompleter
url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5'
@@ -128,6 +137,7 @@ backends = {
'swisscows': swisscows,
'qwant': qwant,
'wikipedia': wikipedia,
+ 'brave': brave,
}
diff --git a/searx/help/about.md b/searx/help/about.md
new file mode 100644
index 000000000..521022414
--- /dev/null
+++ b/searx/help/about.md
@@ -0,0 +1,71 @@
+# About [searxng][url_for:index]
+
+SearXNG is a fork from the well-known [searx] [metasearch engine], aggregating
+the results of other [search engines][url_for:preferences] while not storing
+information about its users.
+
+More about SearXNG ...
+
+* [SearXNG sources][brand.git_url]
+* [weblate]
+
+---
+
+## Why use it?
+
+* SearXNG may not offer you as personalised results as Google,
+ but it doesn't generate a profile about you.
+
+* SearXNG doesn't care about what you search for, never shares anything
+ with a third party, and it can't be used to compromise you.
+
+* SearXNG is free software, the code is 100% open and you can help
+ to make it better. See more on [SearXNG sources][brand.git_url].
+
+If you do care about privacy, want to be a conscious user, or otherwise
+believe in digital freedom, make SearXNG your default search engine or run
+it on your own server
+
+## Technical details - How does it work?
+
+SearXNG is a [metasearch engine], inspired by the [seeks project]. It provides
+basic privacy by mixing your queries with searches on other platforms without
+storing search data. Queries are made using a POST request on every browser
+(except Chromium-based browsers*). Therefore they show up in neither our logs,
+nor your url history. In the case of Chromium-based browser users there is an
+exception: searx uses the search bar to perform GET requests. SearXNG can be
+added to your browser's search bar; moreover, it can be set as the default
+search engine.
+
+<span id='add to browser'></span>
+## How to set as the default search engine?
+
+SearXNG supports [OpenSearch]. For more information on changing your default
+search engine, see your browser's documentation:
+
+* [Firefox](https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox)
+* [Microsoft Edge](https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine)
+* Chromium-based browsers [only add websites that the user navigates to without a path.](https://www.chromium.org/tab-to-search)
+
+## Where to find anonymous usage statistics of this instance ?
+
+[Stats page][url_for:stats] contains some useful data about the engines used.
+
+## How can I make it my own?
+
+SearXNG appreciates your concern regarding logs, so take the code from
+the [SearXNG project][brand.git_url] and run it yourself!
+
+Add your instance to this [list of public instances][brand.public_instances] to
+help other people reclaim their privacy and make the Internet freer! The more
+decentralized the Internet is, the more freedom we have!
+
+## Where are the docs & code of this instance?
+
+See the [SearXNG docs][brand.docs_url] and [SearXNG sources][brand.git_url]
+
+[searx]: https://github.com/searx/searx
+[metasearch engine]: https://en.wikipedia.org/wiki/Metasearch_engine
+[weblate]: https://weblate.bubu1.eu/projects/searxng/
+[seeks project]: https://beniz.github.io/seeks/
+[OpenSearch]: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md
diff --git a/searx/search/checker/impl.py b/searx/search/checker/impl.py
index c0dd966d0..bc5cdf968 100644
--- a/searx/search/checker/impl.py
+++ b/searx/search/checker/impl.py
@@ -74,7 +74,7 @@ def _download_and_check_if_image(image_url: str) -> bool:
try:
# use "image_proxy" (avoid HTTP/2)
network.set_context_network_name('image_proxy')
- stream = network.stream(
+ r, stream = network.stream(
'GET',
image_url,
timeout=10.0,
@@ -91,7 +91,6 @@ def _download_and_check_if_image(image_url: str) -> bool:
'Cache-Control': 'max-age=0',
},
)
- r = next(stream)
r.close()
if r.status_code == 200:
is_image = r.headers.get('content-type', '').startswith('image/')
diff --git a/searx/settings.yml b/searx/settings.yml
index 0ea69007a..ad38d543d 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -777,11 +777,16 @@ engines:
- name: invidious
engine: invidious
+ # Instanes will be selected randomly, see https://api.invidious.io/ for
+ # instances that are stable (good uptime) and close to you.
base_url:
- - https://invidious.tube/
- https://invidious.snopyta.org/
+ - https://vid.puffyan.us/
+ - https://invidious.kavin.rocks/
+ - https://invidio.xamh.de/
+ - https://inv.riverside.rocks/
shortcut: iv
- timeout: 5.0
+ timeout: 3.0
disabled: true
- name: kickass
@@ -1455,7 +1460,7 @@ engines:
# Or you can use the html non-stable engine, activated by default
engine: wolframalpha_noapi
timeout: 6.0
- categories: science
+ categories: []
- name: dictzone
engine: dictzone
diff --git a/searx/static/themes/oscar/css/logicodev-dark.min.css.map b/searx/static/themes/oscar/css/logicodev-dark.min.css.map
index e79efa43f..32293f3a4 100644
--- a/searx/static/themes/oscar/css/logicodev-dark.min.css.map
+++ b/searx/static/themes/oscar/css/logicodev-dark.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["../../__common__/less/new_issue.less","../../__common__/less/stats.less","../src/less/logicodev/checkbox.less","../../__common__/less/result_templates.less","../src/less/result_templates.less","../src/less/preferences.less","../src/generated/pygments-logicodev.less","../src/less/logicodev/footer.less","../src/less/logicodev/onoff.less","../src/less/logicodev/results.less","../src/less/logicodev/infobox.less","../src/less/logicodev/search.less","../src/less/logicodev/advanced.less","../src/less/logicodev/cursor.less","../src/less/logicodev/code.less","../src/less/logicodev/preferences.less","../src/less/safari.css","../src/less/logicodev-dark/oscar.less"],"names":[],"mappings":"AAAA,qBACI,QAAA,MACA,QAAA,IAAA,KACA,YAAA,WACA,UAAA,KACA,MAAA,KACA,iBAAA,kBACA,OAAA,QACA,cAAA,eACA,WAAA,YAAA,EAAA,EAAA,EAAA,EAGgB,2BAChB,iBAAA,QAGJ,YACI,QAAA,KCfA,2BACI,MAAA,MAGJ,4BACI,MAAA,KACA,WAAA,MASJ,kCACI,WAAA,MAGC,iCACD,UAAA,OACA,OAAA,KACA,OAAA,IAAA,MAAA,KAKJ,0BADqB,sDADA,sDAGjB,MAAA,MAGmB,qDAEnB,aAAA,IAAA,MAAA,KACA,QAAA,EAAA,KAAA,EAAA,EACA,OAAA,EAAA,EAAA,EAAA,MAIR,iBACI,MAAA,IACA,QAAA,aACA,WAAA,MACA,cAAA,MAGJ,iBACI,MAAO,kBACP,QAAA,aAGJ,eACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EAGJ,kBACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EACA,MAAA,KAGJ,kBACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EACA,MAAA,KAGJ,MACI,MAAA,EACA,OAAA,ECxEH,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,QD+EO,MAAA,KE/ER,aACI,OAAA,MACA,MAAA,KACA,OAAA,KAAA,ECHJ,qBACI,MAAA,KACA,WAAA,KACA,WAAA,KCHJ,UACI,MAAA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"} \ No newline at end of file
+{"version":3,"sources":["../../__common__/less/new_issue.less","../../__common__/less/stats.less","../src/less/logicodev/preferences.less","../../__common__/less/result_templates.less","../src/less/result_templates.less","../src/less/preferences.less","../src/generated/pygments-logicodev.less","../src/less/logicodev/footer.less","../src/less/logicodev/checkbox.less","../src/less/logicodev/onoff.less","../src/less/logicodev/results.less","../src/less/logicodev/infobox.less","../src/less/logicodev/search.less","../src/less/logicodev/advanced.less","../src/less/logicodev/cursor.less","../src/less/logicodev/code.less","../src/less/safari.css","../src/less/logicodev-dark/oscar.less"],"names":[],"mappings":"AAAA,qBACI,QAAA,MACA,QAAA,IAAA,KACA,YAAA,WACA,UAAA,KACA,MAAA,KACA,iBAAA,kBACA,OAAA,QACA,cAAA,eACA,WAAA,YAAA,EAAA,EAAA,EAAA,EAGgB,2BAChB,iBAAA,QAGJ,YACI,QAAA,KCfA,2BACI,MAAA,MAGJ,4BACI,MAAA,KACA,WAAA,MASJ,kCACI,WAAA,MAGC,iCACD,UAAA,OACA,OAAA,KACA,OAAA,IAAA,MAAA,KAKJ,0BADqB,sDADA,sDAGjB,MAAA,MAGmB,qDAEnB,aAAA,IAAA,MAAA,KACA,QAAA,EAAA,KAAA,EAAA,EACA,OAAA,EAAA,EAAA,EAAA,MAIR,iBACI,MAAA,IACA,QAAA,aACA,WAAA,MACA,cAAA,MAGJ,iBACI,MAAO,kBACP,QAAA,aAGJ,eACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EAGJ,kBACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EACA,MAAA,KAGJ,kBACI,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EACA,MAAA,KAGJ,MACI,MAAA,EACA,OAAA,ECxEH,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,MD+EO,MAAA,GC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,OD+EO,MAAA,IC/EP,QD+EO,MAAA,KE/ER,aACI,OAAA,MACA,MAAA,KACA,OAAA,KAAA,ECHJ,qBACI,MAAA,KACA,WAAA,KACA,WAAA,KCHJ,UACI,MAAA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"} \ No newline at end of file
diff --git a/searx/static/themes/oscar/js/searxng.min.js b/searx/static/themes/oscar/js/searxng.min.js
index 9da3a8b75..c835d8129 100644
--- a/searx/static/themes/oscar/js/searxng.min.js
+++ b/searx/static/themes/oscar/js/searxng.min.js
@@ -4,7 +4,7 @@
* (C) Copyright Contributors to the searx project (2014 - 2021).
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-window.searxng=function(t){"use strict";t.getElementsByTagName("html")[0].className="js";var e,e=t.currentScript||(e=t.getElementsByTagName("script"))[e.length-1];return{autocompleter:"true"===e.getAttribute("data-autocompleter"),method:e.getAttribute("data-method"),translations:JSON.parse(e.getAttribute("data-translations"))}}(document),
+window.searxng=function(t){"use strict";t.getElementsByTagName("html")[0].className="js";var e=t.currentScript||(e=t.getElementsByTagName("script"))[e.length-1];return{autocompleter:"true"===e.getAttribute("data-autocompleter"),method:e.getAttribute("data-method"),translations:JSON.parse(e.getAttribute("data-translations"))}}(document),
/**
* @license
* (C) Copyright Contributors to the SearXNG project.
diff --git a/searx/static/themes/oscar/js/searxng.min.js.map b/searx/static/themes/oscar/js/searxng.min.js.map
index 1a95d2e2a..66ba6aa2b 100644
--- a/searx/static/themes/oscar/js/searxng.min.js.map
+++ b/searx/static/themes/oscar/js/searxng.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"searxng.min.js","sources":["searxng.js"],"names":["window","searxng","d","getElementsByTagName","className","scripts","script","currentScript","length","autocompleter","getAttribute","method","translations","JSON","parse","document","$","ready","searchResults","original_search_value","Bloodhound","datumTokenizer","tokenizers","obj","whitespace","queryTokenizer","remote","url","wildcard","initialize","on","e","which","val","typeahead","name","highlight","hint","displayKey","result","classNames","input","menu","dataset","source","bind","ev","suggestion","submit","focus","click","getElementById","value","this","select","btnTextCollapsed","data","btnTextNotCollapsed","new_html","hasClass","html","replace","btnClass","btnLabelDefault","btnLabelToggled","toggleClass","target","iframe_load","srctest","attr","undefined","dblclick","prop","addClass","removeClass","removeAttr","checked","a","parents","children","parent","image_thumbnail_layout","ImageLayout","watch","addEventListener","each","infobox_body","find","height","css","hide","event","leaflet_target","map_lon","map_lat","map_zoom","map_boundingbox","map_geojson","southWest","L","latLng","northEast","map_bounds","latLngBounds","Icon","Default","imagePath","map","osmMapnik","TileLayer","minZoom","maxZoom","attribution","setTimeout","fitBounds","setView","LatLng","addLayer","control","layers","OSM Mapnik","addTo","geoJson","off","let","engine_descriptions","querySelector","hover","ajax","dataType","done","engine_name","description","Object","entries","element","Source","innerHTML","w","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","prototype","_getHeigth","images","width","img","r","i","naturalWidth","naturalHeight","_setSize","imgWidth","resultNode","imagesLength","style","marginLeft","marginTop","marginRight","marginBottom","parentNode","classList","contains","add","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","align","results_selectorNode","querySelectorAll","results_length","previous","current","previousElementSibling","push","results_nodes","img_load_error","originalTarget","src","static_path","theme","throttleAlign","once"],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"searxng.min.js","sources":["searxng.js"],"names":["window","searxng","d","getElementsByTagName","className","script","currentScript","scripts","length","autocompleter","getAttribute","method","translations","JSON","parse","document","$","ready","searchResults","original_search_value","Bloodhound","datumTokenizer","tokenizers","obj","whitespace","queryTokenizer","remote","url","wildcard","initialize","on","e","which","val","typeahead","name","highlight","hint","displayKey","result","classNames","input","menu","dataset","source","bind","ev","suggestion","submit","focus","click","getElementById","value","this","select","btnTextCollapsed","data","btnTextNotCollapsed","new_html","hasClass","html","replace","btnClass","btnLabelDefault","btnLabelToggled","toggleClass","target","iframe_load","srctest","attr","undefined","dblclick","prop","addClass","removeClass","removeAttr","checked","a","parents","children","parent","image_thumbnail_layout","ImageLayout","watch","addEventListener","each","infobox_body","find","height","css","hide","event","leaflet_target","map_lon","map_lat","map_zoom","map_boundingbox","map_geojson","southWest","L","latLng","northEast","map_bounds","latLngBounds","Icon","Default","imagePath","map","osmMapnik","TileLayer","minZoom","maxZoom","attribution","setTimeout","fitBounds","setView","LatLng","addLayer","control","layers","OSM Mapnik","addTo","geoJson","off","let","engine_descriptions","querySelector","hover","ajax","dataType","done","engine_name","description","Object","entries","element","Source","innerHTML","w","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","prototype","_getHeigth","images","width","img","r","i","naturalWidth","naturalHeight","_setSize","imgWidth","resultNode","imagesLength","style","marginLeft","marginTop","marginRight","marginBottom","parentNode","classList","contains","add","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","align","results_selectorNode","querySelectorAll","results_length","previous","current","previousElementSibling","push","results_nodes","img_load_error","originalTarget","src","static_path","theme","throttleAlign","once"],"mappings":"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"} \ No newline at end of file
diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js
index 824ab66d0..52c460494 100644
--- a/searx/static/themes/simple/gruntfile.js
+++ b/searx/static/themes/simple/gruntfile.js
@@ -177,7 +177,7 @@ module.exports = function (grunt) {
'chevron-up-outline': 'node_modules/ionicons/dist/svg/chevron-up-outline.svg',
'chevron-right': 'node_modules/ionicons/dist/svg/chevron-forward-outline.svg',
'chevron-left': 'node_modules/ionicons/dist/svg/chevron-back-outline.svg',
- 'menu-outline': 'node_modules/ionicons/dist/svg/menu-outline.svg',
+ 'menu-outline': 'node_modules/ionicons/dist/svg/settings-outline.svg',
'ellipsis-vertical-outline': 'node_modules/ionicons/dist/svg/ellipsis-vertical-outline.svg',
'magnet-outline': 'node_modules/ionicons/dist/svg/magnet-outline.svg',
'globe-outline': 'node_modules/ionicons/dist/svg/globe-outline.svg',
diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html
deleted file mode 100644
index 5a9065f03..000000000
--- a/searx/templates/__common__/about.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<div{% if rtl %} dir="ltr"{% endif %}>
- <h1>About <a href="{{ url_for('index') }}">searxng</a></h1>
-
- <p>
- SearXNG is a fork from the well-known <a href="https://github.com/searx/searx">searx</a>
- <a href="https://en.wikipedia.org/wiki/Metasearch_engine"> metasearch engine</a>,
- aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a>
- while not storing information about its users.
- </p>
-
- <p>More about SearXNG ...</p>
-
- <ul>
- <li><a href="{{ searx_git_url }}">SearXNG sources</a></li>
- <li><a href="https://weblate.bubu1.eu/projects/searxng/">weblate</a></li>
- </ul>
-
- <hr />
-
- <h2>Why use it?</h2>
-
- <ul>
- <li>
- SearXNG may not offer you as personalised results as Google, but it doesn't
- generate a profile about you.
- </li>
- <li>
- SearXNG doesn't care about what you search for, never shares anything with a
- third party, and it can't be used to compromise you.
- </li>
- <li>
- SearXNG is free software, the code is 100% open and you can help to make
- it better. See more on <a href="{{ searx_git_url
- }}">SearXNG sources</a>.
- </li>
- </ul>
-
- <p>
- If you do care about privacy, want to be a conscious user, or otherwise
- believe in digital freedom, make SearXNG your default search engine or run
- it on your own server
- </p>
-
- <h2>Technical details - How does it work?</h2>
-
- <p>
- SearXNG is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
- inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.
-
- It provides basic privacy by mixing your queries with searches on other
- platforms without storing search data. Queries are made using a POST request
- on every browser (except Chromium-based browsers*). Therefore they show up
- in neither our logs, nor your url history. In the case of Chromium-based
- browser users there is an exception: searx uses the search bar to perform GET
- requests.
-
- SearXNG can be added to your browser's search bar; moreover, it can be set as
- the default search engine.
- </p>
-
- <h2 id='add to browser'>How to set as the default search engine?</h2>
-
- <p>
- SearXNG supports <a href="https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md">OpenSearch</a>.
- For more information on changing your default search engine, see your browser's documentation:
- </p>
-
- <ul>
- <li><a href="https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox">Firefox</a></li>
- <li><a href="https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine">Microsoft Edge</a></li>
- <li>Chromium-based browsers <a href="https://www.chromium.org/tab-to-search">only add websites that the user navigates to without a path.</a>
- </ul>
-
- <h2>Where to find anonymous usage statistics of this instance ?</h2>
-
- <p>
- <a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.
- </p>
-
- <h2>How can I make it my own?</h2>
-
- <p>
- SearXNG appreciates your concern regarding logs, so take the code from
- the <a href="{{ searx_git_url }}">SearXNG project</a> and
- run it yourself!
- </p>
- <p>
- Add your instance to this <a href="{{ get_setting('brand.public_instances') }}"> list of
- public instances</a> to help other people reclaim their privacy and make the
- Internet freer! The more decentralized the Internet is, the more freedom we
- have!
- </p>
-
- <h2>Where are the docs & code of this instance?</h2>
-
- <p>
- See the <a href="{{ get_setting('brand.docs_url') }}">SearXNG docs</a>
- and <a href="{{ searx_git_url }}">SearXNG sources</a>
- </p>
-
-</div>
-{% include "__common__/aboutextend.html" ignore missing %}
diff --git a/searx/templates/oscar/about.html b/searx/templates/oscar/about.html
index bc7fed8e1..a644761b6 100644
--- a/searx/templates/oscar/about.html
+++ b/searx/templates/oscar/about.html
@@ -1,5 +1,6 @@
{% extends "oscar/base.html" %}
{% block title %}{{ _('about') }} - {% endblock %}
{% block content %}
-{% include '__common__/about.html' %}
+{{ help.about | safe }}
+{% include "__common__/aboutextend.html" ignore missing %}
{% endblock %}
diff --git a/searx/templates/simple/about.html b/searx/templates/simple/about.html
index 1913879da..9f6a10ced 100644
--- a/searx/templates/simple/about.html
+++ b/searx/templates/simple/about.html
@@ -1,4 +1,5 @@
{% extends 'simple/base.html' %}
{% block content %}
-{% include '__common__/about.html' %}
+{{ help.about | safe }}
+{% include "__common__/aboutextend.html" ignore missing %}
{% endblock %}
diff --git a/searx/templates/simple/icons.html b/searx/templates/simple/icons.html
index 3093e3e29..c23c32ee7 100644
--- a/searx/templates/simple/icons.html
+++ b/searx/templates/simple/icons.html
@@ -5,7 +5,7 @@
'chevron-up-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M112 328l144-144 144 144"/></svg>',
'chevron-right':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M184 112l144 144-144 144"/></svg>',
'chevron-left':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48" d="M328 112L184 256l144 144"/></svg>',
- 'menu-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M80 160h352M80 256h352M80 352h352"/></svg>',
+ 'menu-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M262.29 192.31a64 64 0 1057.4 57.4 64.13 64.13 0 00-57.4-57.4zM416.39 256a154.34 154.34 0 01-1.53 20.79l45.21 35.46a10.81 10.81 0 012.45 13.75l-42.77 74a10.81 10.81 0 01-13.14 4.59l-44.9-18.08a16.11 16.11 0 00-15.17 1.75A164.48 164.48 0 01325 400.8a15.94 15.94 0 00-8.82 12.14l-6.73 47.89a11.08 11.08 0 01-10.68 9.17h-85.54a11.11 11.11 0 01-10.69-8.87l-6.72-47.82a16.07 16.07 0 00-9-12.22 155.3 155.3 0 01-21.46-12.57 16 16 0 00-15.11-1.71l-44.89 18.07a10.81 10.81 0 01-13.14-4.58l-42.77-74a10.8 10.8 0 012.45-13.75l38.21-30a16.05 16.05 0 006-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 00-6.07-13.94l-38.19-30A10.81 10.81 0 0149.48 186l42.77-74a10.81 10.81 0 0113.14-4.59l44.9 18.08a16.11 16.11 0 0015.17-1.75A164.48 164.48 0 01187 111.2a15.94 15.94 0 008.82-12.14l6.73-47.89A11.08 11.08 0 01213.23 42h85.54a11.11 11.11 0 0110.69 8.87l6.72 47.82a16.07 16.07 0 009 12.22 155.3 155.3 0 0121.46 12.57 16 16 0 0015.11 1.71l44.89-18.07a10.81 10.81 0 0113.14 4.58l42.77 74a10.8 10.8 0 01-2.45 13.75l-38.21 30a16.05 16.05 0 00-6.05 14.08c.33 4.14.55 8.3.55 12.47z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>',
'ellipsis-vertical-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><circle cx="256" cy="256" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="416" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><circle cx="256" cy="96" r="32" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/></svg>',
'magnet-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M421.83 293.82A144 144 0 00218.18 90.17M353.94 225.94a48 48 0 00-67.88-67.88" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M192 464v-48M90.18 421.82l33.94-33.94M48 320h48"/><path d="M286.06 158.06L172.92 271.19a32 32 0 01-45.25 0L105 248.57a32 32 0 010-45.26L218.18 90.17M421.83 293.82L308.69 407a32 32 0 01-45.26 0l-22.62-22.63a32 32 0 010-45.26l113.13-113.17M139.6 169.98l67.88 67.89M275.36 305.75l67.89 67.88" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="32"/></svg>',
'globe-outline':'<svg class="ionicon" viewBox="0 0 512 512" aria-hidden="true"><path d="M256 48C141.13 48 48 141.13 48 256s93.13 208 208 208 208-93.13 208-208S370.87 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M256 48c-58.07 0-112.67 93.13-112.67 208S197.93 464 256 464s112.67-93.13 112.67-208S314.07 48 256 48z" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32"/><path d="M117.33 117.33c38.24 27.15 86.38 43.34 138.67 43.34s100.43-16.19 138.67-43.34M394.67 394.67c-38.24-27.15-86.38-43.34-138.67-43.34s-100.43 16.19-138.67 43.34" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="32" d="M256 48v416M464 256H48"/></svg>',
diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html
index c1c421ab1..6c64c23ea 100644
--- a/searx/templates/simple/macros.html
+++ b/searx/templates/simple/macros.html
@@ -1,3 +1,5 @@
+{% from 'simple/icons.html' import icon_small %}
+
<!-- Draw favicon -->
{% macro draw_favicon(favicon) -%}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='themes/simple/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}">
diff --git a/searx/user_help.py b/searx/user_help.py
new file mode 100644
index 000000000..bf7336777
--- /dev/null
+++ b/searx/user_help.py
@@ -0,0 +1,48 @@
+from typing import Dict
+import os.path
+import pkg_resources
+
+import flask
+from flask.helpers import url_for
+import mistletoe
+
+from . import get_setting
+from .version import GIT_URL
+
+HELP: Dict[str, str] = {}
+""" Maps a filename under help/ without the file extension to the rendered HTML. """
+
+
+def render(app: flask.Flask):
+ """
+ Renders the user documentation. Must be called after all Flask routes have been
+ registered, because the documentation might try to link to them with Flask's `url_for`.
+
+ We render the user documentation once on startup to improve performance.
+ """
+
+ link_targets = {
+ 'brand.git_url': GIT_URL,
+ 'brand.public_instances': get_setting('brand.public_instances'),
+ 'brand.docs_url': get_setting('brand.docs_url'),
+ }
+
+ base_url = get_setting('server.base_url') or None
+ # we specify base_url so that url_for works for base_urls that have a non-root path
+
+ with app.test_request_context(base_url=base_url):
+ link_targets['url_for:index'] = url_for('index')
+ link_targets['url_for:preferences'] = url_for('preferences')
+ link_targets['url_for:stats'] = url_for('stats')
+
+ define_link_targets = ''.join(f'[{name}]: {url}\n' for name, url in link_targets.items())
+
+ for filename in pkg_resources.resource_listdir(__name__, 'help'):
+ rootname, ext = os.path.splitext(filename)
+
+ if ext != '.md':
+ continue
+
+ markdown = pkg_resources.resource_string(__name__, 'help/' + filename).decode()
+ markdown = define_link_targets + markdown
+ HELP[rootname] = mistletoe.markdown(markdown)
diff --git a/searx/webapp.py b/searx/webapp.py
index f509fea24..7e351bfaa 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -55,6 +55,7 @@ from searx import (
get_setting,
settings,
searx_debug,
+ user_help,
)
from searx.data import ENGINE_DESCRIPTIONS
from searx.results import Timing, UnresponsiveEngine
@@ -867,7 +868,7 @@ def __get_translated_errors(unresponsive_engines: Iterable[UnresponsiveEngine]):
@app.route('/about', methods=['GET'])
def about():
"""Render about page"""
- return render('about.html')
+ return render('about.html', help=user_help.HELP)
@app.route('/autocompleter', methods=['GET', 'POST'])
@@ -1169,6 +1170,13 @@ def engine_descriptions():
if isinstance(description, str):
description = [description, 'wikipedia']
result[engine] = description
+
+ # overwrite by about:description (from settings)
+ for engine_name, engine_mod in engines.items():
+ descr = getattr(engine_mod, 'about', {}).get('description', None)
+ if descr is not None:
+ result[engine_name] = [descr, "SearXNG config"]
+
return jsonify(result)
@@ -1359,6 +1367,7 @@ werkzeug_reloader = flask_run_development or (searx_debug and __name__ == "__mai
if not werkzeug_reloader or (werkzeug_reloader and os.environ.get("WERKZEUG_RUN_MAIN") == "true"):
plugin_initialize(app)
search_initialize(enable_checker=True, check_network=True, enable_metrics=settings['general']['enable_metrics'])
+ user_help.render(app)
def run():
diff --git a/utils/lib_nvm.sh b/utils/lib_nvm.sh
index 267ba8a4a..04aa8a92e 100755
--- a/utils/lib_nvm.sh
+++ b/utils/lib_nvm.sh
@@ -26,11 +26,12 @@ NVM_LOCAL_FOLDER=.nvm
nvm.env() {
source "${NVM_DIR}/nvm.sh"
source "${NVM_DIR}/bash_completion"
+ [ "$VERBOSE" = "1" ] && info_msg "sourced NVM environment from ${NVM_DIR}"
}
nvm.is_installed() {
# is true if NVM is installed / in $HOME or even in <repo-root>/.nvm
- [[ -d "${NVM_DIR}" ]]
+ [[ -f "${NVM_DIR}/nvm.sh" ]]
}
if [[ -z "${NVM_DIR}" ]]; then
@@ -40,7 +41,6 @@ fi
export NVM_DIR
if nvm.is_installed; then
- [ "$VERBOSE" = "1" ] && info_msg "source NVM environment from ${NVM_DIR}"
nvm.env
else
# if nvm is not installed, use this function as a wrapper
@@ -58,7 +58,7 @@ nvm.is_local() {
[ "${NVM_DIR}" = "$(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}" ]
}
-nvm.min_node(){
+nvm.min_node() {
# usage: nvm.min_node 16.3.0
#
@@ -87,7 +87,7 @@ nvm.min_node(){
# implement nvm command line
# --------------------------
-nvm.help(){
+nvm.help() {
cat <<EOF
nvm.: use nvm (without dot) to execute nvm commands directly
install : install NVM locally at $(git rev-parse --show-toplevel)/${NVM_LOCAL_FOLDER}
@@ -117,7 +117,9 @@ nvm.install() {
info_msg "checkout ${NVM_VERSION_TAG}"
git checkout "${NVM_VERSION_TAG}" 2>&1 | prefix_stdout " ${_Yellow}||${_creset} "
popd &> /dev/null
- cp "${REPO_ROOT}/.nvm_packages" "${NVM_DIR}/default-packages"
+ if [ -f "${REPO_ROOT}/.nvm_packages" ]; then
+ cp "${REPO_ROOT}/.nvm_packages" "${NVM_DIR}/default-packages"
+ fi
nvm.env
}