summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-04-22[fix] issues when launching a local development serverMarkus Heiser
A local development server can be launched by one of these command lines:: $ flask --app searx.webapp run $ python -m searx.webapp The different ways of starting the server should lead to the same result, which is generally the case. However, if the modules are reloaded after code changes (reload option), it must be avoided that the application is initialized twice at startup. We have already discussed this in 2022 [1][2]. Further information on this topic can be found in [3][4][5]. To test a bash in the ./local environment was started and the follwing commands had been executed:: $ ./manage pyenv.cmd bash --norc --noprofile (py3) SEARXNG_DEBUG=1 flask --app searx.webapp run --reload (py3) SEARXNG_DEBUG=1 python -m searx.webapp Since the generic parts of the docs also initialize the app to generate doc from it, the build of the docs was also tested:: $ make docs.clean docs.live [1] https://github.com/searxng/searxng/pull/1656#issuecomment-1214198941 [2] https://github.com/searxng/searxng/pull/1616#issuecomment-1206137468 [3] https://flask.palletsprojects.com/en/stable/api/#flask.Flask.run [4] https://github.com/pallets/flask/issues/5307#issuecomment-1774646119 [5] https://stackoverflow.com/a/25504196 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-18[upd] web-client (simple): Bump vite-plugin-static-copydependabot[bot]
Bumps [vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/sapphi-red/vite-plugin-static-copy/releases) - [Changelog](https://github.com/sapphi-red/vite-plugin-static-copy/blob/main/CHANGELOG.md) - [Commits](https://github.com/sapphi-red/vite-plugin-static-copy/compare/vite-plugin-static-copy@2.3.0...vite-plugin-static-copy@2.3.1) --- updated-dependencies: - dependency-name: vite-plugin-static-copy dependency-version: 2.3.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18[upd] web-client (simple): Bump vite in /client/simpledependabot[bot]
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.6 to 6.3.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.3.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.3.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18[l10n] update translations from Weblatesearxng-bot
f290f4ffe - 2025-04-15 - return42 <return42@noreply.codeberg.org> 4a9134b03 - 2025-04-14 - DZDevelopers <dzdevelopers@noreply.codeberg.org> a8c86581d - 2025-04-14 - aindriu80 <aindriu80@noreply.codeberg.org> 2b5395719 - 2025-04-11 - ayame30 <ayame30@noreply.codeberg.org> 448a443fa - 2025-04-11 - ayame30 <ayame30@noreply.codeberg.org>
2025-04-18[feat] engine: add Steam engineZhijie He
2025-04-17[fix] disable engine ansa by defaultMarkus Heiser
Reported-by: https://github.com/searxng/searxng/pull/4575#issuecomment-2813007107 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-17[fix] docs: changed "many" to "some" for clarity in contribution guide's ↵Tommaso Colella
privacy by design section
2025-04-17[fix] docs: typos and minor refinements in contribution_guide.rstTommaso Colella
2025-04-17[fix] docs: better phrasing for many sections of contribution_guide.rstTommaso Colella
2025-04-17[fix] docs: typos in dev contrib guide "it's might be becauseTommaso Colella
of the tool" -> "it might be because the tool"
2025-04-17[fix] docs: typo in templates dev doc developerat -> developer atTommaso Colella
2025-04-17[feat] engines: add Hugging Face engineZhijie He
2025-04-17[feat] engine: add engine for italian press agency ansaTommaso Colella
2025-04-17[fix] settings.yml files: doc & obsolete settings in the templateMarkus Heiser
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-17[fix] Result type: remove rstrip "/" form url normalizationTommaso Colella
2025-04-17[feat] add SensCritique (FR) engineRobinFrcd
Closes: https://github.com/searxng/searxng/issues/4623
2025-04-16[fix] doc of setting server.base_url, env is SEARXNG_BASE_URLMarkus Heiser
Related: - https://github.com/searxng/searxng/issues/4634 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-12[feat] engine: add microsoft learn engineTommaso Colella
2025-04-11Bump vite from 6.2.5 to 6.2.6 in /client/simpledependabot[bot]
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.5 to 6.2.6. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.2.6 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11[upd] web-client (simple): Bump less in /client/simpledependabot[bot]
Bumps [less](https://github.com/less/less.js) from 4.2.2 to 4.3.0. - [Release notes](https://github.com/less/less.js/releases) - [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/less/less.js/compare/v4.2.2...v4.3.0) --- updated-dependencies: - dependency-name: less dependency-version: 4.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11[upd] web-client (simple): Bump eslint, sharp, webpackMarkus Heiser
Closes: https://github.com/searxng/searxng/pull/4618 Closes: https://github.com/searxng/searxng/pull/4617 Closes: https://github.com/searxng/searxng/pull/4616 Closes: https://github.com/searxng/searxng/pull/4615 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-11[fix] engine dokuwiki: basedir duplicationgrasdk
Dokuwiki searches behind reverse proxy had duplicate base path in the url, creating a wrong url. This patch exchanges string concat of URLs with urljoin [1] from urllib.parse. This eliminates the dual problem, while retaining the old functionality designed to concatenate protocol, hostname and port (as base_url) with path. [1] https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin Closes: https://github.com/searxng/searxng/issues/4598
2025-04-11[upd] pypi: Bump lxml from 5.3.1 to 5.3.2dependabot[bot]
Bumps [lxml](https://github.com/lxml/lxml) from 5.3.1 to 5.3.2. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.1...lxml-5.3.2) --- updated-dependencies: - dependency-name: lxml dependency-version: 5.3.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11[upd] pypi: Bump selenium from 4.30.0 to 4.31.0dependabot[bot]
Bumps [selenium](https://github.com/SeleniumHQ/Selenium) from 4.30.0 to 4.31.0. - [Release notes](https://github.com/SeleniumHQ/Selenium/releases) - [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.30.0...selenium-4.31.0) --- updated-dependencies: - dependency-name: selenium dependency-version: 4.31.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11[upd] pypi: Bump sphinx-issues from 5.0.0 to 5.0.1dependabot[bot]
Bumps [sphinx-issues](https://github.com/sloria/sphinx-issues) from 5.0.0 to 5.0.1. - [Commits](https://github.com/sloria/sphinx-issues/compare/5.0.0...5.0.1) --- updated-dependencies: - dependency-name: sphinx-issues dependency-version: 5.0.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11[l10n] update translations from Weblatesearxng-bot
63157cd1f - 2025-04-10 - pfaca <pfaca@noreply.codeberg.org> e50166782 - 2025-04-10 - return42 <return42@noreply.codeberg.org> f7ed39011 - 2025-04-09 - Kita Ikuyo <kitakita@disroot.org> c8786066f - 2025-04-08 - return42 <return42@noreply.codeberg.org> dd4adf136 - 2025-04-08 - return42 <return42@noreply.codeberg.org> df50952f0 - 2025-04-08 - return42 <return42@noreply.codeberg.org> d9a9a0bad - 2025-04-06 - eatyourglory <eatyourglory@noreply.codeberg.org>
2025-04-09[fix] make docs - ERROR: Unknown target name: "auth_key"Markus Heiser
BTW: fix a bug with sys.path: repo-root (not util) needs to added to generate autodoc from scripts in ./searxng_extra Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-07[fix] Meilisearch engine: Authorization Token When Integrating MeilisearchMarkus Heiser
`X-Meili-API-Key` has been changed to `Authorization` [1] [1] https://www.meilisearch.com/docs/reference/api/overview#authorization Suggested-by: https://github.com/searxng/searxng/issues/4416#issuecomment-2781254841 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-06[build] /staticMarkus Heiser
2025-04-06[fix] images cropped in Safari (webkit)Markus Heiser
- Closes: https://github.com/searxng/searxng/issues/4156 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-06[fix] engine radio browser: get servers from DNS api.radio-browser.infoMarkus Heiser
Do a DNS-lookup of 'all.api.radio-browser.info', add reverse lookup and select randomly a URL from available servers Closes: https://github.com/searxng/searxng/issues/4576 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-04-04Don't hardcode uWSGI parameters (#4578)Ivan Gabaldon
* Initial update * fix * add todo note
2025-04-04[upd] web-client (simple): Bump vite in /client/simpledependabot[bot]
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.4 to 6.2.5. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.2.5 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-04[l10n] update translations from Weblatesearxng-bot
faf95be5a - 2025-04-03 - sakistzimas <sakistzimas@noreply.codeberg.org> e42efee66 - 2025-04-02 - Juno Takano <jutty@noreply.codeberg.org> c1fbb26c4 - 2025-04-02 - return42 <return42@noreply.codeberg.org> 562d21fb9 - 2025-04-02 - ghose <ghose@noreply.codeberg.org> 1ea9e67c5 - 2025-04-01 - return42 <return42@noreply.codeberg.org> daaa0b41e - 2025-03-31 - wags07 <wags07@noreply.codeberg.org> 52635ec5f - 2025-03-31 - return42 <return42@noreply.codeberg.org> 589ad13f2 - 2025-03-31 - return42 <return42@noreply.codeberg.org> 1f063c96e - 2025-03-31 - return42 <return42@noreply.codeberg.org> c001e606d - 2025-03-31 - return42 <return42@noreply.codeberg.org> 9bc14f1a0 - 2025-03-31 - wags07 <wags07@noreply.codeberg.org> 6a524ecb4 - 2025-03-31 - return42 <return42@noreply.codeberg.org> 508fe79c7 - 2025-03-31 - return42 <return42@noreply.codeberg.org> 8c8db80e7 - 2025-03-31 - return42 <return42@noreply.codeberg.org> c9f551913 - 2025-03-31 - AndersNordh <andersnordh@noreply.codeberg.org> 6c56adc71 - 2025-03-31 - artens <artens@noreply.codeberg.org> 15526190b - 2025-03-31 - Linerly <linerly@noreply.codeberg.org> 2102783df - 2025-03-31 - AndersNordh <andersnordh@noreply.codeberg.org> fee510d78 - 2025-03-30 - kratos <makesocialfoss32@keemail.me> d5c9b970c - 2025-03-30 - Fjuro <fjuro@noreply.codeberg.org> 94259815b - 2025-03-30 - return42 <return42@noreply.codeberg.org> a448cf7da - 2025-03-29 - Outbreak2096 <outbreak2096@noreply.codeberg.org> 0c3ef7929 - 2025-03-29 - Priit Jõerüüt <jrtcdbrg@noreply.codeberg.org> ce2fbffe8 - 2025-03-29 - SomeTr <sometr@noreply.codeberg.org>
2025-04-03Bump vite from 6.2.3 to 6.2.4 in /client/simpledependabot[bot]
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.3 to 6.2.4. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.2.4/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
2025-04-03[build] /staticMarkus Heiser
2025-04-03[fix] client/simple: add missing "swiped-events" devDependencies (import)Markus Heiser
In commit 1a3543d4b in PR-4284 [1] the swiped-events [2] were forgotten to be migrated. In this patch, the event library is added to the ``devDependencies`` and imported by:: import "../../../node_modules/swiped-events/src/swiped-events.js [1] https://github.com/searxng/searxng/pull/4284 [2] https://www.npmjs.com/package/swiped-events Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> Reported-by: https://github.com/searxng/searxng/pull/4198#issuecomment-2770734321
2025-04-01[fix] hardening against arguments of type None, where str or dict is expectedMarkus Heiser
On a long-running server, the tracebacks below can be found (albeit rarely), which indicate problems with NoneType where a string or another data type is expected. result.img_src:: File "/usr/local/searxng/searxng-src/searx/templates/simple/result_templates/images.html", line 13, in top-level template code <img src="" data-src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}">{{- "" -}} ^ File "/usr/local/searxng/searxng-src/searx/webapp.py", line 284, in image_proxify if url.startswith('//'): ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'startswith' result.content:: File "/usr/local/searxng/searxng-src/searx/result_types/_base.py", line 105, in _normalize_text_fields result.content = WHITESPACE_REGEX.sub(" ", result.content).strip() ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' html_to_text, when html_str is a NoneType:: File "/usr/local/searxng/searxng-src/searx/engines/wikipedia.py", line 190, in response title = utils.html_to_text(api_result.get('titles', {}).get('display') or api_result.get('title')) File "/usr/local/searxng/searxng-src/searx/utils.py", line 158, in html_to_text html_str = html_str.replace('\n', ' ').replace('\r', ' ') ^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'replace' presearch engine, when json_resp is a NoneType:: File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 221, in response results = parse_search_query(json_resp.get('results')) File "/usr/local/searxng/searxng-src/searx/engines/presearch.py", line 161, in parse_search_query for item in json_results.get('specialSections', {}).get('topStoriesCompact', {}).get('data', []): ^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'get' Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-31[feat] add Quark autocomplete supportZhijie He
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-30[feat] engines: add Ollama engineZhijie He
2025-03-30[feat] engines: add reuters news engineBnyro
2025-03-30[feat] engine: add engine for italian online newspaper "il post"Tommaso Colella
2025-03-30[feat] engines: add Quark engineZhijie He
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-30[feat] engines: add Niconico videos engineZhijie He
Co-authored-by: Bnyro <bnyro@tutanota.com>
2025-03-30[feat] engine: add bitchutenaughtymommy42069
2025-03-30[data] update searx.data - update_engine_descriptions.pyMarkus Heiser
2025-03-29[refactor] migrate plugins from "module" to class SXNGPluginMarkus Heiser
This patch brings two major changes: - ``Result.filter_urls(..)`` to pass a filter function for URL fields - The ``enabled_plugins:`` section in SearXNG's settings do no longer exists. To understand plugin development compile documentation: $ make docs.clean docs.live and read http://0.0.0.0:8000/dev/plugins/development.html There is no longer a distinction between built-in and external plugin, all plugins are registered via the settings in the ``plugins:`` section. In SearXNG, plugins can be registered via a fully qualified class name. A configuration (`PluginCfg`) can be transferred to the plugin, e.g. to activate it by default / *opt-in* or *opt-out* from user's point of view. built-in plugins ================ The built-in plugins are all located in the namespace `searx.plugins`. .. code:: yaml plugins: searx.plugins.calculator.SXNGPlugin: active: true searx.plugins.hash_plugin.SXNGPlugin: active: true searx.plugins.self_info.SXNGPlugin: active: true searx.plugins.tracker_url_remover.SXNGPlugin: active: true searx.plugins.unit_converter.SXNGPlugin: active: true searx.plugins.ahmia_filter.SXNGPlugin: active: true searx.plugins.hostnames.SXNGPlugin: active: true searx.plugins.oa_doi_rewrite.SXNGPlugin: active: false searx.plugins.tor_check.SXNGPlugin: active: false external plugins ================ SearXNG supports *external plugins* / there is no need to install one, SearXNG runs out of the box. - Only show green hosted results: https://github.com/return42/tgwf-searx-plugins/ To get a developer installation in a SearXNG developer environment: .. code:: sh $ git clone git@github.com:return42/tgwf-searx-plugins.git $ ./manage pyenv.cmd python -m \ pip install -e tgwf-searx-plugins To register the plugin in SearXNG add ``only_show_green_results.SXNGPlugin`` to the ``plugins:``: .. code:: yaml plugins: # ... only_show_green_results.SXNGPlugin: active: false Result.filter_urls(..) ====================== The ``Result.filter_urls(..)`` can be used to filter and/or modify URL fields. In the following example, the filter function ``my_url_filter``: .. code:: python def my_url_filter(result, field_name, url_src) -> bool | str: if "google" in url_src: return False # remove URL field from result if "facebook" in url_src: new_url = url_src.replace("facebook", "fb-dummy") return new_url # return modified URL return True # leave URL in field unchanged is applied to all URL fields in the :py:obj:`Plugin.on_result` hook: .. code:: python class MyUrlFilter(Plugin): ... def on_result(self, request, search, result) -> bool: result.filter_urls(my_url_filter) return True Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2025-03-29[data] update searx.data - update_ahmia_blacklist.pyreturn42
2025-03-29[data] update searx.data - update_firefox_version.pyreturn42
2025-03-29[data] update searx.data - update_wikidata_units.pyreturn42