diff options
author | Alexandre Flament <alex@al-f.net> | 2022-01-23 11:35:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-23 11:35:24 +0100 |
commit | a8d54cfcab8540b37cb30270da32327fca59fe9a (patch) | |
tree | 19a98367914435850612798dadbee48f5a289886 | |
parent | 382f4f8fb081699fc3a3d8d7b1ee7546156506fa (diff) | |
parent | 105c5a6a9839c65a81b32cdf82278c5cc629ae4a (diff) | |
download | searxng-a8d54cfcab8540b37cb30270da32327fca59fe9a.tar.gz searxng-a8d54cfcab8540b37cb30270da32327fca59fe9a.zip |
Merge pull request #758 from not-my-profile/introduce-userdoc
Introduce `searx/help/`
-rw-r--r-- | requirements.txt | 1 | ||||
-rw-r--r-- | searx/help/about.md | 71 | ||||
-rw-r--r-- | searx/templates/__common__/about.html | 102 | ||||
-rw-r--r-- | searx/templates/oscar/about.html | 3 | ||||
-rw-r--r-- | searx/templates/simple/about.html | 3 | ||||
-rw-r--r-- | searx/user_help.py | 48 | ||||
-rwxr-xr-x | searx/webapp.py | 4 |
7 files changed, 127 insertions, 105 deletions
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/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/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/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..099a42996 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']) @@ -1359,6 +1360,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(): |