Commit graph

7946 commits

Author SHA1 Message Date
czaky
6e9f7c276e Merge branch 'redundant_proxy_requests' of https://github.com/czaky/searxng into redundant_proxy_requests 2024-05-18 00:29:25 +00:00
czaky
9441c97a26 cleanup 2024-05-18 00:27:37 +00:00
czaky
e82516fb8d cleanup 2024-05-17 23:51:24 +00:00
czaky
6c375c7d28 Revert "add on workflow_dispatch to integration"
This reverts commit c302f113b0.
2024-05-17 23:34:39 +00:00
czaky
5fe7e42d1a Add preference for non 404 responses fix test RC.
Fixed race condition with the 404 test.
2024-05-17 12:58:47 +00:00
czaky
c302f113b0 add on workflow_dispatch to integration
to verify why this fails remotely
2024-05-17 12:45:46 +00:00
czaky
5d15f6b313
Merge branch 'searxng:master' into redundant_proxy_requests 2024-05-17 08:09:05 -04:00
czaky
8fe19d54ef Using conservative unittest asserts 2024-05-17 12:04:00 +00:00
searxng-bot
3585d71f99 [l10n] update translations from Weblate
0712f8fb7 - 2024-05-16 - 0ko <0ko@users.noreply.translate.codeberg.org>
9a9d04302 - 2024-05-16 - eaglclaws <eaglclaws@users.noreply.translate.codeberg.org>
4c6da9e2a - 2024-05-16 - Utsushime <Utsushime@users.noreply.translate.codeberg.org>
e0b941276 - 2024-05-14 - dkuku <dkuku@users.noreply.translate.codeberg.org>
bee37a08a - 2024-05-14 - sacred-serpent <sacred-serpent@users.noreply.translate.codeberg.org>
d29eca2ba - 2024-05-14 - return42 <return42@users.noreply.translate.codeberg.org>
719ed9054 - 2024-05-14 - gallegonovato <gallegonovato@users.noreply.translate.codeberg.org>
b57b75920 - 2024-05-10 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
ecf4ce2dc - 2024-05-10 - Pyrbor <Pyrbor@users.noreply.translate.codeberg.org>
2024-05-17 09:16:38 +02:00
czaky
122a9568de [network]: Add redundant parallel proxy requests.
Anecdotally, using SearX over unreliable proxies,
like tor, seems to be quite error prone.
SearX puts quite an effort to measure the
performance and reliability of engines, most
likely owning to those aspects being of
significant concern.

The patch here proposes to mitigate related
problems, by issuing concurrent redundant requests
through the specified proxies at once, returning
the first response that is not an error.
The functionality is enabled using the:
`proxy_request_redundancy` parameter within the
outgoing network settings or the engine settings.

Example:

```yaml

outgoing:
    request_timeout: 8.0
    proxies:
        "all://":
            - socks5h://tor:9050
            - socks5h://tor1:9050
            - socks5h://tor2:9050
            - socks5h://tor3:9050
    proxy_request_redundancy: 4
```

In this example, each network request will be
send 4 times, once through every proxy. The
first (non-error) response wins.

In my testing environment using several tor proxy
end-points, this approach almost entirely
removes engine errors related to timeouts
and denied requests. The latency of the
network system is also improved.

The implementation, uses a
`AsyncParallelTransport(httpx.AsyncBaseTransport)`
wrapper to wrap multiple sub-trasports,
and `asyncio.wait` to wait on the first completed
request.

The existing implementation of the network
proxy cycling has also been moved into the
`AsyncParallelTransport` class, which should
improve network client memoization and
performance.

TESTED:
- unit tests for the new functions and classes.
- tested on desktop PC with 10+ upstream proxies
    and comparable request redundancy.
2024-05-17 02:09:29 +00:00
Markus Heiser
2f2d93b292 [build] /static 2024-05-16 07:30:38 +02:00
Markus Heiser
916739d6b4 [mod] simple theme: drop img_src from default results
The use of img_src AND thumbnail in the default results makes no sense (only a
thumbnail is needed).  In the current state this is rather confusing, because
img_src is displayed like a thumbnail (small) and thumbnail is displayed like an
image (large).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-16 07:30:38 +02:00
Bnyro
0f2f52f0b5 [fix] google: don't display that keyword is missing in content field 2024-05-15 16:03:35 +02:00
Markus Heiser
949a73103f [mod] hex engine: normalize (some of) the linked terms
The names of the links are rather tags than real names, and they sometimes vary
greatly in their spelling:

- GitHub: github, Github
- Source code: Repository, SCM, Project Source Code
- Documentation: docs, Documentation

It was standardized to terms such as 'Source code' and 'Documentation', as
translations already exist for these terms.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-15 12:50:35 +02:00
Daniel Kukula
cc8b537e34 [mod] package.html template: additional links (a python dict)
- Closes: https://github.com/searxng/searxng/issues/3456
2024-05-15 12:50:35 +02:00
Bnyro
645a840d82 [refactor] codeberg: use gitea engine 2024-05-15 07:23:57 +02:00
Bnyro
82b6c0d05f [feat] engine: implementation of gitea 2024-05-15 07:23:57 +02:00
Bnyro
60a373ad89 [fix] chefkoch: use German words in content field 2024-05-12 18:36:49 +02:00
Markus Heiser
ffb1001f80 [fix] engine wikidata - WIKIDATA_UNITS has been changed in #3378
This patch is a leftover from [1] in which the WIKIDATA_UNITS values has become
a dictionary.

[1] https://github.com/searxng/searxng/pull/3378

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-10 16:04:27 +02:00
Markus Heiser
901819359c [update] make pygments.less
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-10 10:00:31 +02:00
dependabot[bot]
4c63846c8d [upd] pypi: Bump pygments from 2.17.2 to 2.18.0
Bumps [pygments](https://github.com/pygments/pygments) from 2.17.2 to 2.18.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.17.2...2.18.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 10:00:31 +02:00
dependabot[bot]
a615df8acc [upd] pypi: Bump nose2[coverage_plugin] from 0.14.1 to 0.14.2
Bumps [nose2[coverage_plugin]](https://github.com/nose-devs/nose2) from 0.14.1 to 0.14.2.
- [Changelog](https://github.com/nose-devs/nose2/blob/main/docs/changelog.rst)
- [Commits](https://github.com/nose-devs/nose2/compare/0.14.1...0.14.2)

---
updated-dependencies:
- dependency-name: nose2[coverage_plugin]
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 09:59:44 +02:00
dependabot[bot]
a8d5126c56 [upd] pypi: Bump babel from 2.14.0 to 2.15.0
Bumps [babel](https://github.com/python-babel/babel) from 2.14.0 to 2.15.0.
- [Release notes](https://github.com/python-babel/babel/releases)
- [Changelog](https://github.com/python-babel/babel/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-babel/babel/compare/v2.14.0...v2.15.0)

---
updated-dependencies:
- dependency-name: babel
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-10 09:58:12 +02:00
searxng-bot
4b6eebd312 [l10n] update translations from Weblate
9487de41b - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
20d3b1158 - 2024-05-10 - nouoneq <nouoneq@users.noreply.translate.codeberg.org>
60cf6e36d - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
0a8e99dff - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
4055cd1c3 - 2024-05-10 - return42 <return42@users.noreply.translate.codeberg.org>
77f2c8d9a - 2024-05-09 - Eryk Michalak <gnu.ewm@protonmail.com>
beb16006a - 2024-05-09 - tentsbet <tentsbet@users.noreply.translate.codeberg.org>
54b5123e2 - 2024-05-10 - ghose <ghose@users.noreply.translate.codeberg.org>
4f372ab44 - 2024-05-09 - German <German@users.noreply.translate.codeberg.org>
fa9b9aae8 - 2024-05-09 - Fjuro <fjuro@alius.cz>
2024-05-10 09:29:22 +02:00
Bnyro
383d873597 [fix] unit converter plugin: can't be disabled in settings 2024-05-09 17:40:37 +02:00
Markus Heiser
fb32425d78 [mod] yacy engine: pick base_url randomly from a list of instances
Inspired by post [1] in the disscussion we had, while yacy.searchlab.eu was
broken.

[1] https://github.com/searxng/searxng/issues/3428#issuecomment-2101080101

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:29:15 +02:00
Bnyro
72be98e12f [feat] plugins: new calculator plugin 2024-05-09 17:23:38 +02:00
Markus Heiser
742303d030 [mod] improve unit converter plugin
- l10n support: parse and format decimal numbers by babel
- ability to add additional units
- improved unit detection (symbols are not unique)
- support for alias units (0,010C to F --> 32,018 °F)

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:16:31 +02:00
Markus Heiser
63cf80aae5 [fix] docutils dependencies (docutils>=0.21.2)
Another trip into the hell of dependencies: docutils tends to put major changes
in minor patches: the executables have been renamed / e.g.

     rst2html.py --> rts2html

so we have to use docutils at least from version 0.21.2, but this version of
docutils is only supported by myst-parser from version 3.0.1 on.

Additionally, docutils decided to drop python 3.8 in version 0.21 [1]

Further, linuxdoc needed an update to cope with docutils 0.21 [2]

[1] https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-21-2024-04-09
[2] https://github.com/return42/linuxdoc/pull/36

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-09 17:15:21 +02:00
dependabot[bot]
58320222e2 Bump jinja2 from 3.1.3 to 3.1.4
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 07:21:25 +02:00
Alexandre Flament
ac430a9eaf Drop pytomlpp dependency for Python >= 3.11
Rely on tomllib for Python >= 3.11
2024-05-05 17:35:29 +02:00
Markus Heiser
dbed8da284 [fix] startpage engine: XPath expressions adapted for new HTML layout
Startpage has changed its HTML layout, classes like ``w-gl__result__main`` do no
longer exists and the result items have been slightly changed in their
structure.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-04 19:45:52 +02:00
Yaksh Bariya
d577817646 [fix] respect user preferences to open links in new tab for short answers
Previously only result urls were set to open in new tab by default, this should
make the behaviour consistent.

Also adds the missing rel="noreferrer" to the anchor tag. Although this should
not be needed as long as the `referrer-policy: no-referrer` header is set, it's
always nice to play safer than to have to say sorry.  For example some reverse
proxy configurations might strip off unwhitelisted headers in which case it's
nice to have this set.
2024-05-04 06:55:37 +02:00
Bnyro
78077126f2 [feat] wikimedia commons: support for videos, audio and other files 2024-05-04 06:23:04 +02:00
Daniel Kukula
46d7a8289b [feat] engine: implementation of https://hex.pm
The package manager for the Erlang ecosystem Find packages.

Co-authored-by: Bnyro <82752168+Bnyro@users.noreply.github.com>
2024-05-03 21:37:37 +02:00
dependabot[bot]
04271e555b [upd] pypi: Bump pallets-sphinx-themes from 2.1.2 to 2.1.3
Bumps [pallets-sphinx-themes](https://github.com/pallets/pallets-sphinx-themes) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/pallets/pallets-sphinx-themes/releases)
- [Changelog](https://github.com/pallets/pallets-sphinx-themes/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/pallets-sphinx-themes/compare/2.1.2...2.1.3)

---
updated-dependencies:
- dependency-name: pallets-sphinx-themes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-03 18:22:13 +02:00
searxng-bot
8225f88404 [l10n] update translations from Weblate
377c34a74 - 2024-05-02 - lspepinho <lspepinho@users.noreply.translate.codeberg.org>
079ba625b - 2024-05-01 - alexgabi <alexgabi@users.noreply.translate.codeberg.org>
fe48c8a08 - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
e04560acc - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
2fb6a2cfa - 2024-04-29 - Heyian <Heyian@users.noreply.translate.codeberg.org>
b374205cc - 2024-04-30 - return42 <return42@users.noreply.translate.codeberg.org>
d284cdd1d - 2024-04-29 - Fjuro <fjuro@alius.cz>
87edf2cb3 - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
f6971a077 - 2024-04-27 - SomeTr <SomeTr@users.noreply.translate.codeberg.org>
f88e23f2c - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
c7e8506c1 - 2024-04-28 - ghose <ghose@users.noreply.translate.codeberg.org>
795e14ddd - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
143bc6cf0 - 2024-04-27 - Implosion <Implosion@users.noreply.translate.codeberg.org>
5d96b3d53 - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
b2cc8a6cd - 2024-04-27 - return42 <return42@users.noreply.translate.codeberg.org>
2024-05-03 09:15:13 +02:00
Markus Heiser
11fe88bb40 [fix] update wikidata units - remove URL prefix from Q-name
Sometimes the URL prefix switches from a http to a https, this patch harden the
code that removes the URL prefix from wikidata Q-name, issue has been reported
in [1].

[1] https://github.com/searxng/searxng/pull/3437#issuecomment-2082121730

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-05-01 18:58:28 +02:00
Austin-Olacsi
c8d0b6529b [feat] engine: implementation of searchmysite 2024-04-30 05:47:18 +02:00
Markus Heiser
f8bdf61976 [fix] yep engine: invcrease timeout from defaul 3sec to 5sec
In the "Engines" tab on searx.space [1] nearly all engines report a

    TimeoutException: yep engine

As documented in issue #2444 [2], this problem can be fixed by increasing the
timeout. Note: on a local instance (`make run`) the timeout of 3sec was
sufficient / at least in my local test, but the balance of searx.space leads me
to believe that this tight timeout is usually not sufficient.

[1] https://searx.space/
[2] https://github.com/searxng/searxng/issues/2444

Closes https://github.com/searxng/searxng/issues/3421
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-30 05:46:15 +02:00
return42
e45a7cc063 [data] update searx.data - update_engine_traits.py 2024-04-29 10:02:48 +02:00
return42
c0b6c26eea [data] update searx.data - update_firefox_version.py 2024-04-29 10:02:16 +02:00
return42
0ec406cb7e [data] update searx.data - update_ahmia_blacklist.py 2024-04-29 10:01:52 +02:00
return42
ea585d4e77 [data] update searx.data - update_currencies.py 2024-04-29 09:48:56 +02:00
return42
d4e98c03a0 [data] update searx.data - update_engine_descriptions.py 2024-04-29 09:46:26 +02:00
Markus Heiser
e6c345f890 [fix] ccc_media engine: filter video formats and ignore audio & SubRip
CCC media serves several recording formats, to name a few:

- application/x-subrip
- video/mp4
- video/webm
- audio/mpeg
- audio/opus
- audio/mpeg

not all of them are suitable for a video frame.  If available we should prefer
video/mp4 due to its minimal data rates.

Closes: https://github.com/searxng/searxng/issues/3431
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-28 08:42:18 +02:00
Jinyuan Huang
ecee56533c improve "search existing issues from github" link 2024-04-27 20:01:27 +02:00
Markus Heiser
11fdc2f56a [fix] drop broken azlyrics XPath engine
Unfortunately, azlyrics has a bot blocker that makes it impossible to implement
an XPath engine for it [1][2].

[1] https://github.com/searxng/searxng/pull/3302#issuecomment-2013529271
[2] https://github.com/searxng/searxng/issues/3280

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-04-27 18:43:14 +02:00
Markus Heiser
648f43be1d [build] /static 2024-04-27 18:26:23 +02:00
Bnyro
3ea278aff4 [feat] preferences: button to enable/disable all engines 2024-04-27 18:26:23 +02:00