on master help sign in
Merge branch 'master' into uwsgi_static
commit0f4dbc4eca848d910fb4433e3d1c61fa7fcfa8de authorMarkus Heiser <markus.heiser@darmarIT.de> dateWed 29 Apr 2020, 12:02 (6 years ago) parent678d41d7342806
50 files changed+29045−27965
.dockerignore+8 .gitignore+1−1 .travis.yml+16−15 AUTHORS.rst+1 Dockerfile+2−1 Makefile+157−14 README.rst+1−1 docs/blog/index.rst+1 docs/blog/private-engines.rst+63 docs/conf.py+3−3 docs/dev/quickstart.rst+4−4 manage.sh+12−84 requirements-dev.txt+1 requirements.txt+8−8 searx/brand.py+5 searx/data/engines_languages.json+28332−27487 searx/data/useragents.json+5−8 searx/engines/bing.py+14−9 searx/engines/bing_images.py+2−19 searx/engines/bing_news.py+3−1 searx/engines/bing_videos.py+5−1 searx/engines/faroo.py−96 searx/engines/google_news.py+1−1 searx/engines/startpage.py+5−2 searx/languages.py+12−4 searx/results.py+2−2 searx/search.py+5−12 searx/settings.yml+77−5 searx/static/plugins/js/infinite_scroll.js+33−17 searx/static/themes/oscar/.gitignore+1−1 searx/static/themes/oscar/gruntfile.js+1−3 searx/static/themes/oscar/js/searx.js+3 searx/static/themes/oscar/js/searx.min.js+2−2 searx/static/themes/oscar/js/searx_src/autocompleter.js+3 searx/static/themes/simple/.gitignore+1 searx/static/themes/simple/gruntfile.js+3−3 searx/templates/__common__/about.html+86−52 searx/templates/__common__/opensearch_response_rss.xml+24 searx/templates/courgette/github_ribbon.html+1−1 searx/templates/oscar/base.html+4−4 searx/templates/oscar/search.html+1 searx/templates/oscar/search_full.html+1 searx/templates/simple/base.html+3−3 searx/webapp.py+83−38 setup.py+6−1 tests/unit/test_webapp.py+3−3 utils/brand.env+5 utils/fetch_firefox_version.py+1−1 utils/fetch_languages.py+13−10 utils/makefile.python+21−48
.dockerignore+8
@@ -4,6 +4,9 @@
44*/*/*/*~
55*/*/*/*/*~
66
7+#
8+local/
9+
710# Git
811.git
912.gitignore
@@ -36,6 +39,11 @@ robot_report.html
3639test_basic/
3740setup.cfg
3841
42+# node_modules
3943node_modules/
44+*/node_modules/
45+*/*/node_modules/
46+*/*/*/node_modules/
47+*/*/*/*/node_modules/
4048
4149.tx/
.gitignore+1−1
@@ -15,7 +15,7 @@ setup.cfg
1515*/*.pyc
1616*~
1717
18−node_modules/
18+/node_modules
1919
2020.tx/
2121
.travis.yml+16−15
@@ -1,26 +1,24 @@
1+os: linux
2+dist: bionic
13language: python
2−sudo: false
34cache:
4− - pip
5− - npm
65 - directories:
76 - $HOME/.cache/pip
8−
97addons:
108 firefox: "latest"
119
1210install:
13− - ./manage.sh install_geckodriver ~/drivers
14− - export PATH=~/drivers:$PATH
15− - ./manage.sh npm_packages
16− - ./manage.sh update_dev_packages
17− - pip install codecov
11+ - env
12+ - which python; python --version
13+ - make V=1 install
14+ - make V=1 gecko.driver
15+ - make V=1 node.env
16+ - make V=1 travis.codecov
1817script:
19− - ./manage.sh styles
20− - ./manage.sh grunt_build
21− - ./manage.sh tests
18+ - make V=1 themes
19+ - make V=1 test
2220after_success:
23− - ./manage.sh py_test_coverage
21+ - make V=1 test.coverage
2422 - codecov
2523
2624stages:
@@ -31,10 +29,13 @@ stages:
3129jobs:
3230 include:
3331 - python: "2.7"
32+ env: PY=2
3433 - python: "3.5"
3534 - python: "3.6"
35+ - python: "3.7"
36+ - python: "3.8"
3637 - stage: docker
37− python: "3.6"
38+ python: "3.8"
3839 git:
3940 depth: false
4041 services:
@@ -44,7 +45,7 @@ jobs:
4445 install: true
4546 script:
4647 - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
47− - ./manage.sh docker_build push
48+ - make -e GIT_URL=$(git remote get-url origin) docker.push
4849 after_success: true
4950
5051notifications:
AUTHORS.rst+1
@@ -123,3 +123,4 @@ generally made searx better:
123123- Vipul @finn0
124124- @CaffeinatedTech
125125- Robin Schneider @ypid
126+- @splintah
Dockerfile+2−1
@@ -4,6 +4,7 @@ EXPOSE 8080
44VOLUME /etc/searx
55VOLUME /var/log/uwsgi
66
7+ARG GIT_URL=unknown
78ARG VERSION_GITCOMMIT=unknown
89ARG SEARX_GIT_VERSION=unknown
910
@@ -69,7 +70,7 @@ RUN su searx -c "/usr/bin/python3 -m compileall -q searx"; \
6970
7071# Keep this argument at the end since it change each time
7172ARG LABEL_DATE=
72−LABEL maintainer="searx <https://github.com/asciimoo/searx>" \
73+LABEL maintainer="searx <${GIT_URL}>" \
7374 description="A privacy-respecting, hackable metasearch engine." \
7475 version="${SEARX_GIT_VERSION}" \
7576 org.label-schema.schema-version="1.0" \
Makefile+157−14
@@ -27,23 +27,28 @@ help:
2727 @echo ' uninstall - uninstall (./local)'
2828 @echo ' gh-pages - build docs & deploy on gh-pages branch'
2929 @echo ' clean - drop builds and environments'
30+ @echo ' project - re-build generic files of the searx project'
31+ @echo ' buildenv - re-build environment files (aka brand)'
32+ @echo ' themes - re-build build the source of the themes'
33+ @echo ' docker - build Docker image'
34+ @echo ' node.env - download & install npm dependencies locally'
3035 @echo ''
3136 @$(MAKE) -s -f utils/makefile.include make-help
3237 @echo ''
3338 @$(MAKE) -s -f utils/makefile.python python-help
3439
3540PHONY += install
36−install: pyenvinstall
41+install: buildenv pyenvinstall
3742
3843PHONY += uninstall
3944uninstall: pyenvuninstall
4045
4146PHONY += clean
42−clean: pyclean
47+clean: pyclean node.clean test.clean
4348 $(call cmd,common_clean)
4449
4550PHONY += run
46−run: pyenvinstall
51+run: buildenv pyenvinstall
4752 $(Q) ( \
4853 sed -i -e "s/debug : False/debug : True/g" ./searx/settings.yml ; \
4954 sleep 2 ; \
@@ -57,36 +62,174 @@ run: pyenvinstall
5762# ----
5863
5964PHONY += docs
60−docs: pyenvinstall sphinx-doc
65+docs: buildenv pyenvinstall sphinx-doc
6166 $(call cmd,sphinx,html,docs,docs)
6267
6368PHONY += docs-live
64−docs-live: pyenvinstall sphinx-live
69+docs-live: buildenv pyenvinstall sphinx-live
6570 $(call cmd,sphinx_autobuild,html,docs,docs)
6671
6772$(GH_PAGES)::
6873 @echo "doc available at --> $(DOCS_URL)"
6974
75+# update project files
76+# --------------------
77+
78+PHONY += project engines.languages useragents.update buildenv
79+
80+project: buildenv useragents.update engines.languages
81+
82+engines.languages: pyenvinstall
83+ $(Q)echo "fetch languages .."
84+ $(Q)$(PY_ENV_ACT); python utils/fetch_languages.py
85+ $(Q)echo "update searx/data/engines_languages.json"
86+ $(Q)mv engines_languages.json searx/data/engines_languages.json
87+ $(Q)echo "update searx/languages.py"
88+ $(Q)mv languages.py searx/languages.py
89+
90+useragents.update: pyenvinstall
91+ $(Q)echo "Update searx/data/useragents.json with the most recent versions of Firefox."
92+ $(Q)$(PY_ENV_ACT); python utils/fetch_firefox_version.py
93+
94+buildenv:
95+ $(Q)echo "build searx/brand.py"
96+ $(Q)echo "GIT_URL = '$(GIT_URL)'" > searx/brand.py
97+ $(Q)echo "ISSUE_URL = 'https://github.com/asciimoo/searx/issues'" >> searx/brand.py
98+ $(Q)echo "SEARX_URL = '$(SEARX_URL)'" >> searx/brand.py
99+ $(Q)echo "DOCS_URL = '$(DOCS_URL)'" >> searx/brand.py
100+ $(Q)echo "PUBLIC_INSTANCES = 'https://searx.space'" >> searx/brand.py
101+ $(Q)echo "build utils/brand.env"
102+ $(Q)echo "export GIT_URL='$(GIT_URL)'" > utils/brand.env
103+ $(Q)echo "export ISSUE_URL='https://github.com/asciimoo/searx/issues'" >> utils/brand.env
104+ $(Q)echo "export SEARX_URL='$(SEARX_URL)'" >> utils/brand.env
105+ $(Q)echo "export DOCS_URL='$(DOCS_URL)'" >> utils/brand.env
106+ $(Q)echo "export PUBLIC_INSTANCES='https://searx.space'" >> utils/brand.env
107+
108+
109+# node / npm
110+# ----------
111+
112+node.env: buildenv
113+ $(Q)./manage.sh npm_packages
114+
115+node.clean:
116+ $(Q)echo "CLEAN locally installed npm dependencies"
117+ $(Q)rm -rf \
118+ ./node_modules \
119+ ./package-lock.json \
120+ ./searx/static/themes/oscar/package-lock.json \
121+ ./searx/static/themes/oscar/node_modules \
122+ ./searx/static/themes/simple/package-lock.json \
123+ ./searx/static/themes/simple/node_modules
124+
125+# build themes
126+# ------------
127+
128+PHONY += themes.bootstrap themes themes.oscar themes.simple themes.legacy themes.courgette themes.pixart
129+themes: buildenv themes.bootstrap themes.oscar themes.simple themes.legacy themes.courgette themes.pixart
130+
131+quiet_cmd_lessc = LESSC $3
132+ cmd_lessc = PATH="$$(npm bin):$$PATH" \
133+ lessc --clean-css="--s1 --advanced --compatibility=ie9" "searx/static/$2" "searx/static/$3"
134+
135+quiet_cmd_grunt = GRUNT $2
136+ cmd_grunt = PATH="$$(npm bin):$$PATH" \
137+ grunt --gruntfile "$2"
138+
139+themes.oscar:
140+ $(Q)echo '[!] build oscar theme'
141+ $(call cmd,grunt,searx/static/themes/oscar/gruntfile.js)
142+
143+themes.simple:
144+ $(Q)echo '[!] build simple theme'
145+ $(call cmd,grunt,searx/static/themes/simple/gruntfile.js)
146+
147+themes.legacy:
148+ $(Q)echo '[!] build legacy theme'
149+ $(call cmd,lessc,themes/legacy/less/style-rtl.less,themes/legacy/css/style-rtl.css)
150+ $(call cmd,lessc,themes/legacy/less/style.less,themes/legacy/css/style.css)
151+
152+themes.courgette:
153+ $(Q)echo '[!] build courgette theme'
154+ $(call cmd,lessc,themes/courgette/less/style.less,themes/courgette/css/style.css)
155+ $(call cmd,lessc,themes/courgette/less/style-rtl.less,themes/courgette/css/style-rtl.css)
156+
157+themes.pixart:
158+ $(Q)echo '[!] build pixart theme'
159+ $(call cmd,lessc,themes/pix-art/less/style.less,themes/pix-art/css/style.css)
160+
161+themes.bootstrap:
162+ $(call cmd,lessc,less/bootstrap/bootstrap.less,css/bootstrap.min.css)
163+
164+
165+# docker
166+# ------
167+
168+PHONY += docker
169+docker: buildenv
170+ $(Q)./manage.sh docker_build
171+
172+docker.push: buildenv
173+ $(Q)./manage.sh docker_build push
174+
175+# gecko
176+# -----
177+
178+PHONY += gecko.driver
179+gecko.driver:
180+ $(PY_ENV_ACT); ./manage.sh install_geckodriver
181+
70182# test
71183# ----
72184
73−PHONY += test test.pylint test.pep8 test.unit test.robot
185+PHONY += test test.pylint test.pep8 test.unit test.coverage test.robot
74186
75−test: test.pylint test.pep8 test.unit test.robot
187+test: buildenv test.pylint test.pep8 test.unit gecko.driver test.robot
76188
189+ifeq ($(PY),2)
190+test.pylint:
191+ @echo "LINT skip liniting py2"
192+else
77193# TODO: balance linting with pylint
78194test.pylint: pyenvinstall
79− $(call cmd,pylint,searx/preferences.py)
80− $(call cmd,pylint,searx/testing.py)
195+ $(call cmd,pylint,\
196+ searx/preferences.py \
197+ searx/testing.py \
198+ )
199+endif
200+
201+# ignored rules:
202+# E402 module level import not at top of file
203+# W503 line break before binary operator
81204
82205test.pep8: pyenvinstall
83− $(PY_ENV_ACT); ./manage.sh pep8_check
206+ @echo "TEST pep8"
207+ $(Q)$(PY_ENV_ACT); pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" searx tests
84208
85209test.unit: pyenvinstall
86− $(PY_ENV_ACT); ./manage.sh unit_tests
210+ @echo "TEST tests/unit"
211+ $(Q)$(PY_ENV_ACT); python -m nose2 -s tests/unit
87212
88−test.robot: pyenvinstall
89− $(PY_ENV_ACT); ./manage.sh install_geckodriver
90− $(PY_ENV_ACT); ./manage.sh robot_tests
213+test.coverage: pyenvinstall
214+ @echo "TEST unit test coverage"
215+ $(Q)$(PY_ENV_ACT); \
216+ python -m nose2 -C --log-capture --with-coverage --coverage searx -s tests/unit \
217+ && coverage report \
218+ && coverage html \
219+
220+test.robot: pyenvinstall gecko.driver
221+ @echo "TEST robot"
222+ $(Q)$(PY_ENV_ACT); PYTHONPATH=. python searx/testing.py robot
223+
224+test.clean:
225+ @echo "CLEAN intermediate test stuff"
226+ $(Q)rm -rf geckodriver.log .coverage coverage/
227+
228+
229+# travis
230+# ------
231+
232+travis.codecov:
233+ $(Q)$(PY_ENV_BIN)/python -m pip install codecov
91234
92235.PHONY: $(PHONY)
README.rst+1−1
@@ -23,7 +23,7 @@ Go to the `searx-docker <https://github.com/searx/searx-docker>`__ project.
2323
2424Without Docker
2525--------------
26−For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/dev/install/installation.html>`__.
26+For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/admin/installation.html>`__.
2727
2828Note: the documentation needs to be updated.
2929
docs/blog/index.rst+1
@@ -8,3 +8,4 @@ Blog
88 python3
99 admin
1010 intro-offline
11+ private-engines
docs/blog/private-engines.rstnew file+63
@@ -0,0 +1,63 @@
1+==================================
2+Limit access to your searx engines
3+==================================
4+
5+Administrators might find themselves wanting to limit access to some of the
6+enabled engines on their instances. It might be because they do not want to
7+expose some private information through an offline engine. Or they
8+would rather share engines only with their trusted friends or colleagues.
9+
10+Private engines
11+===============
12+
13+To solve this issue private engines were introduced in :pull:`1823`.
14+A new option was added to engines named `tokens`. It expects a list
15+of strings. If the user making a request presents one of the tokens
16+of an engine, he/she is able to access information about the engine
17+and make search requests.
18+
19+Example configuration to restrict access to the Arch Linux Wiki engine:
20+
21+.. code:: yaml
22+
23+ - name : arch linux wiki
24+ engine : archlinux
25+ shortcut : al
26+ tokens : [ 'my-secret-token' ]
27+
28+
29+Unless a user has configured the right token, the engine is going
30+to be hidden from him/her. It is not going to be included in the
31+list of engines on the Preferences page and in the output of
32+`/config` REST API call.
33+
34+Tokens can be added to one's configuration on the Preferences page
35+under "Engine tokens". The input expects a comma separated list of
36+strings.
37+
38+The distribution of the tokens from the administrator to the users
39+is not carved in stone. As providing access to such engines
40+implies that the admin knows and trusts the user, we do not see
41+necessary to come up with a strict process. Instead,
42+we would like to add guidelines to the documentation of the feature.
43+
44+Next steps
45+==========
46+
47+Now that searx has support for both offline engines and private engines,
48+it is possible to add concrete engines which benefit from these features.
49+For example engines which search on the local host running the instance.
50+Be it searching your file system or querying a private database. Be creative
51+and come up with new solutions which fit your use case.
52+
53+Acknowledgement
54+===============
55+
56+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
57+
58+.. _Search and Discovery Fund: https://nlnet.nl/discovery
59+.. _NLnet Foundation: https://nlnet.nl/
60+
61+
62+| Happy hacking.
63+| kvch // 2020.02.28 22:26
docs/conf.py+3−3
@@ -4,9 +4,9 @@ import sys, os
44from searx.version import VERSION_STRING
55from pallets_sphinx_themes import ProjectLink
66
7−GIT_URL = os.environ.get("GIT_URL", "https://github.com/asciimoo/searx")
8−SEARX_URL = os.environ.get("SEARX_URL", "https://searx.me")
9−DOCS_URL = os.environ.get("DOCS_URL", "https://asciimoo.github.io/searx/")
7+from searx.brand import GIT_URL
8+from searx.brand import SEARX_URL
9+from searx.brand import DOCS_URL
1010
1111# Project --------------------------------------------------------------
1212
docs/dev/quickstart.rst+4−4
@@ -87,8 +87,8 @@ After satisfying the requirements styles can be build using ``manage.sh``
8787 ./manage.sh styles
8888
8989
90−How to build the source of the oscar theme
91−==========================================
90+How to build the source of the themes
91+=====================================
9292
9393.. _grunt: https://gruntjs.com/
9494
@@ -98,13 +98,13 @@ NodeJS, so first Node has to be installed.
9898.. code:: sh
9999
100100 sudo -H apt-get install nodejs
101− sudo -H npm install -g grunt-cli
101+ make node.env
102102
103103After installing grunt, the files can be built using the following command:
104104
105105.. code:: sh
106106
107− ./manage.sh grunt_build
107+ make themes
108108
109109
110110Tips for debugging/development
manage.sh+12−84
@@ -10,6 +10,7 @@ PYTHONPATH="$BASE_DIR"
1010SEARX_DIR="$BASE_DIR/searx"
1111ACTION="$1"
1212
13+. "${BASE_DIR}/utils/brand.env"
1314
1415#
1516# Python
@@ -70,45 +71,6 @@ locales() {
7071 pybabel compile -d "$SEARX_DIR/translations"
7172}
7273
73−update_useragents() {
74− echo '[!] Updating user agent versions'
75− python utils/fetch_firefox_version.py
76−}
77−
78−pep8_check() {
79− echo '[!] Running pep8 check'
80− # ignored rules:
81− # E402 module level import not at top of file
82− # W503 line break before binary operator
83− pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" "$SEARX_DIR" "$BASE_DIR/tests"
84−}
85−
86−unit_tests() {
87− echo '[!] Running unit tests'
88− python -m nose2 -s "$BASE_DIR/tests/unit"
89−}
90−
91−py_test_coverage() {
92− echo '[!] Running python test coverage'
93− PYTHONPATH="`pwd`" python -m nose2 -C --log-capture --with-coverage --coverage "$SEARX_DIR" -s "$BASE_DIR/tests/unit" \
94− && coverage report \
95− && coverage html
96−}
97−
98−robot_tests() {
99− echo '[!] Running robot tests'
100− PYTHONPATH="`pwd`" python "$SEARX_DIR/testing.py" robot
101−}
102−
103−tests() {
104− set -e
105− pep8_check
106− unit_tests
107− install_geckodriver
108− robot_tests
109− set +e
110−}
111−
11274
11375#
11476# Web
@@ -135,36 +97,6 @@ npm_packages() {
13597 npm install
13698}
13799
138−build_style() {
139− npm_path_setup
140−
141− lessc --clean-css="--s1 --advanced --compatibility=ie9" "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
142−}
143−
144−styles() {
145− npm_path_setup
146−
147− echo '[!] Building legacy style'
148− build_style themes/legacy/less/style.less themes/legacy/css/style.css
149− build_style themes/legacy/less/style-rtl.less themes/legacy/css/style-rtl.css
150− echo '[!] Building courgette style'
151− build_style themes/courgette/less/style.less themes/courgette/css/style.css
152− build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css
153− echo '[!] Building pix-art style'
154− build_style themes/pix-art/less/style.less themes/pix-art/css/style.css
155− echo '[!] Building bootstrap style'
156− build_style less/bootstrap/bootstrap.less css/bootstrap.min.css
157−}
158−
159−grunt_build() {
160− npm_path_setup
161−
162− echo '[!] Grunt build : oscar theme'
163− grunt --gruntfile "$SEARX_DIR/static/themes/oscar/gruntfile.js"
164− echo '[!] Grunt build : simple theme'
165− grunt --gruntfile "$SEARX_DIR/static/themes/simple/gruntfile.js"
166−}
167−
168100docker_build() {
169101 # Check if it is a git repository
170102 if [ ! -d .git ]; then
@@ -189,8 +121,9 @@ docker_build() {
189121 SEARX_GIT_VERSION=$(git describe --match "v[0-9]*\.[0-9]*\.[0-9]*" HEAD 2>/dev/null | awk -F'-' '{OFS="-"; $1=substr($1, 2); $3=substr($3, 2); print}')
190122
191123 # add the suffix "-dirty" if the repository has uncommited change
124+ # /!\ HACK for searx/searx: ignore searx/brand.py and utils/brand.env
192125 git update-index -q --refresh
193− if [ ! -z "$(git diff-index --name-only HEAD --)" ]; then
126+ if [ ! -z "$(git diff-index --name-only HEAD -- | grep -v 'searx/brand.py' | grep -v 'utils/brand.env')" ]; then
194127 SEARX_GIT_VERSION="${SEARX_GIT_VERSION}-dirty"
195128 fi
196129
@@ -211,18 +144,18 @@ docker_build() {
211144 fi
212145
213146 # define the docker image name
214− # /!\ HACK to get the user name /!\
215− GITHUB_USER=$(git remote get-url origin | sed 's/.*github\.com\/\([^\/]*\).*/\1/')
147+ GITHUB_USER=$(echo "${GIT_URL}" | sed 's/.*github\.com\/\([^\/]*\).*/\1/')
216148 SEARX_IMAGE_NAME="${GITHUB_USER:-searx}/searx"
217149
218150 # build Docker image
219151 echo "Building image ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}"
220152 sudo docker build \
153+ --build-arg GIT_URL="${GIT_URL}" \
221154 --build-arg SEARX_GIT_VERSION="${SEARX_GIT_VERSION}" \
222155 --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \
223156 --build-arg LABEL_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
224157 --build-arg LABEL_VCS_REF=$(git rev-parse HEAD) \
225− --build-arg LABEL_VCS_URL=$(git remote get-url origin) \
158+ --build-arg LABEL_VCS_URL="${GIT_URL}" \
226159 --build-arg TIMESTAMP_SETTINGS=$(git log -1 --format="%cd" --date=unix -- searx/settings.yml) \
227160 --build-arg TIMESTAMP_UWSGI=$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini) \
228161 -t ${SEARX_IMAGE_NAME}:latest -t ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION} .
@@ -251,22 +184,17 @@ Commands
251184 update_dev_packages - Check & update development and production dependency changes
252185 install_geckodriver - Download & install geckodriver if not already installed (required for robot_tests)
253186 npm_packages - Download & install npm dependencies
254− update_useragents - Update useragents.json with the most recent versions of Firefox
255187
256188 Build
257189 -----
258190 locales - Compile locales
259− styles - Build less files
260− grunt_build - Build files for themes
261− docker_build - Build Docker image
262191
263− Tests
264− -----
265− unit_tests - Run unit tests
266− pep8_check - Pep8 validation
267− robot_tests - Run selenium tests
268− tests - Run all python tests (pep8, unit, robot_tests)
269− py_test_coverage - Unit test coverage
192+Environment:
193+ GIT_URL: ${GIT_URL}
194+ ISSUE_URL: ${ISSUE_URL}
195+ SEARX_URL: ${SEARX_URL}
196+ DOCS_URL: ${DOCS_URL}
197+ PUBLIC_INSTANCES: ${PUBLIC_INSTANCES}
270198"
271199}
272200
requirements-dev.txt+1
@@ -5,6 +5,7 @@ mock==2.0.0
55nose2[coverage_plugin]
66cov-core==1.15.0
77pep8==1.7.0
8+pylint
89plone.testing==5.0.0
910splinter==0.11.0
1011transifex-client==0.12.2
requirements.txt+8−8
@@ -1,12 +1,12 @@
1−certifi==2019.3.9
1+certifi==2020.4.5.1
22babel==2.7.0
33flask-babel==1.0.0
4−flask==1.0.2
5−idna==2.8
6−jinja2==2.10.1
7−lxml==4.3.3
4+flask==1.1.2
5+idna==2.9
6+jinja2==2.11.1
7+lxml==4.5.0
88pygments==2.1.3
9−pyopenssl==19.0.0
9+pyopenssl==19.1.0
1010python-dateutil==2.8.0
11−pyyaml==5.1
12−requests[socks]==2.22.0
11+pyyaml==5.3.1
12+requests[socks]==2.23.0
searx/brand.pynew file+5
@@ -0,0 +1,5 @@
1+GIT_URL = 'https://github.com/asciimoo/searx'
2+ISSUE_URL = 'https://github.com/asciimoo/searx/issues'
3+SEARX_URL = 'https://searx.me'
4+DOCS_URL = 'https://asciimoo.github.io/searx'
5+PUBLIC_INSTANCES = 'https://searx.space'
searx/data/engines_languages.json+28332−27487

This diff is too big to show here.

searx/data/useragents.json+5−8

This diff is too big to show here.

searx/engines/bing.py+14−9

This diff is too big to show here.

searx/engines/bing_images.py+2−19

This diff is too big to show here.

searx/engines/bing_news.py+3−1

This diff is too big to show here.

searx/engines/bing_videos.py+5−1

This diff is too big to show here.

searx/engines/faroo.pydeleted−96

This diff is too big to show here.

searx/engines/google_news.py+1−1

This diff is too big to show here.

searx/engines/startpage.py+5−2

This diff is too big to show here.

searx/languages.py+12−4

This diff is too big to show here.

searx/results.py+2−2

This diff is too big to show here.

searx/search.py+5−12

This diff is too big to show here.

searx/settings.yml+77−5

This diff is too big to show here.

searx/static/plugins/js/infinite_scroll.js+33−17

This diff is too big to show here.

searx/static/themes/oscar/.gitignore+1−1

This diff is too big to show here.

searx/static/themes/oscar/gruntfile.js+1−3

This diff is too big to show here.

searx/static/themes/oscar/js/searx.js+3

This diff is too big to show here.

searx/static/themes/oscar/js/searx.min.js+2−2

This diff is too big to show here.

searx/static/themes/oscar/js/searx_src/autocompleter.js+3

This diff is too big to show here.

searx/static/themes/simple/.gitignorenew file+1

This diff is too big to show here.

searx/static/themes/simple/gruntfile.js+3−3

This diff is too big to show here.

searx/templates/__common__/about.html+86−52

This diff is too big to show here.

searx/templates/__common__/opensearch_response_rss.xml+24

This diff is too big to show here.

searx/templates/courgette/github_ribbon.html+1−1

This diff is too big to show here.

searx/templates/oscar/base.html+4−4

This diff is too big to show here.

searx/templates/oscar/search.html+1

This diff is too big to show here.

searx/templates/oscar/search_full.html+1

This diff is too big to show here.

searx/templates/simple/base.html+3−3

This diff is too big to show here.

searx/webapp.pymode 100644 → 100755+83−38

This diff is too big to show here.

setup.py+6−1

This diff is too big to show here.

tests/unit/test_webapp.py+3−3

This diff is too big to show here.

utils/brand.envnew file+5

This diff is too big to show here.

utils/fetch_firefox_version.py+1−1

This diff is too big to show here.

utils/fetch_languages.py+13−10

This diff is too big to show here.

utils/makefile.python+21−48

This diff is too big to show here.