From cffef7aa150f9f7f247051564620937d528a2702 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 11:47:54 -0600
Subject: [PATCH 1/9] Update dependencies and configuration for version 1.2.0
- Bump target Python version to 3.12 in `pyproject.toml`.
- Update Flask to version 3.1.2 in `requirements.txt`.
- Remove deprecated dark mode configuration from the application.
- Adjust logo rendering in templates to remove dark mode dependency.
- Update GitHub Actions workflows to support the 'updates' branch for builds.
- Increment version to 1.1.3 with an optional update-testing tag.
---
.github/workflows/.pre-commit-config.yaml | 12 ------------
.github/workflows/buildx.yml | 13 ++++++++++++-
.github/workflows/docker_main.yml | 2 +-
app/models/config.py | 1 -
app/routes.py | 6 ++----
app/templates/display.html | 8 +++++---
app/templates/error.html | 2 --
app/templates/index.html | 6 ------
app/version.py | 4 ++--
pyproject.toml | 4 ++--
requirements.txt | 12 +++++-------
test/conftest.py | 1 -
test/test_routes.py | 6 +++---
13 files changed, 32 insertions(+), 45 deletions(-)
delete mode 100644 .github/workflows/.pre-commit-config.yaml
diff --git a/.github/workflows/.pre-commit-config.yaml b/.github/workflows/.pre-commit-config.yaml
deleted file mode 100644
index 027ab32..0000000
--- a/.github/workflows/.pre-commit-config.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-repos:
- - repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.6.9
- hooks:
- - id: ruff
- args: [--fix]
- - id: ruff-format
- - repo: https://github.com/psf/black
- rev: 24.8.0
- hooks:
- - id: black
- args: [--quiet]
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index 85a451c..d89eea5 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -3,7 +3,7 @@ name: buildx
on:
workflow_run:
workflows: ["docker_main"]
- branches: [main]
+ branches: [main, updates]
types:
- completed
push:
@@ -50,6 +50,17 @@ jobs:
# docker buildx build --push \
# --tag ghcr.io/benbusby/whoogle-search:latest \
# --platform linux/amd64,linux/arm64 .
+ - name: build and push updates branch (update-testing tag)
+ if: github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
+ run: |
+ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
+ docker buildx ls
+ docker buildx build --push \
+ --tag benbusby/whoogle-search:update-testing \
+ --platform linux/amd64,linux/arm/v7,linux/arm64 .
+ docker buildx build --push \
+ --tag ghcr.io/benbusby/whoogle-search:update-testing \
+ --platform linux/amd64,linux/arm/v7,linux/arm64 .
- name: build and push release (version + latest)
if: github.event_name == 'release' && github.event.release.prerelease == false && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
run: |
diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml
index f369f47..5e30a55 100644
--- a/.github/workflows/docker_main.yml
+++ b/.github/workflows/docker_main.yml
@@ -3,7 +3,7 @@ name: docker_main
on:
workflow_run:
workflows: ["tests"]
- branches: [main]
+ branches: [main, updates]
types:
- completed
diff --git a/app/models/config.py b/app/models/config.py
index ed56af8..3446309 100644
--- a/app/models/config.py
+++ b/app/models/config.py
@@ -81,7 +81,6 @@ class Config:
self.tbs = os.getenv('WHOOGLE_CONFIG_TIME_PERIOD', '')
self.theme = os.getenv('WHOOGLE_CONFIG_THEME', 'system')
self.safe = read_config_bool('WHOOGLE_CONFIG_SAFE')
- self.dark = read_config_bool('WHOOGLE_CONFIG_DARK') # deprecated
self.alts = read_config_bool('WHOOGLE_CONFIG_ALTS')
self.nojs = read_config_bool('WHOOGLE_CONFIG_NOJS')
self.tor = read_config_bool('WHOOGLE_CONFIG_TOR')
diff --git a/app/routes.py b/app/routes.py
index 59a14f0..b176000 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -217,9 +217,7 @@ def index():
translation=app.config['TRANSLATIONS'][
g.user_config.get_localization_lang()
],
- logo=render_template(
- 'logo.html',
- dark=g.user_config.dark),
+ logo=render_template('logo.html'),
config_disabled=(
app.config['CONFIG_DISABLE'] or
not valid_user_session(session)),
@@ -581,7 +579,7 @@ def search():
languages=app.config['LANGUAGES'],
countries=app.config['COUNTRIES'],
time_periods=app.config['TIME_PERIODS'],
- logo=render_template('logo.html', dark=g.user_config.dark),
+ logo=render_template('logo.html'),
query=urlparse.unquote(query),
search_type=search_util.search_type,
mobile=g.user_request.mobile,
diff --git a/app/templates/display.html b/app/templates/display.html
index c044512..a742284 100644
--- a/app/templates/display.html
+++ b/app/templates/display.html
@@ -26,10 +26,12 @@
{% else %}
{% endif %}
- {% else %}
-
{% endif %}
-
+ {% if config.style %}
+
+ {% endif %}
{{ clean_query(query) }} - Whoogle Search
diff --git a/app/templates/error.html b/app/templates/error.html
index 839f8bc..c7a41eb 100644
--- a/app/templates/error.html
+++ b/app/templates/error.html
@@ -7,8 +7,6 @@
{% else %}
{% endif %}
-{% else %}
-
{% endif %}
{% if bundle_static() %}
diff --git a/app/templates/index.html b/app/templates/index.html
index d4544fa..c6fe19e 100644
--- a/app/templates/index.html
+++ b/app/templates/index.html
@@ -41,8 +41,6 @@
{% else %}
{% endif %}
- {% else %}
-
{% endif %}
{% if not bundle_static() %}
@@ -204,10 +202,6 @@
-
-
-
-
diff --git a/app/version.py b/app/version.py
index 5e990ac..6a53b0c 100644
--- a/app/version.py
+++ b/app/version.py
@@ -1,8 +1,8 @@
import os
-optional_dev_tag = ''
+optional_dev_tag = '-update-testing'
if os.getenv('DEV_BUILD'):
optional_dev_tag = '.dev' + os.getenv('DEV_BUILD')
-__version__ = '1.1.2' + optional_dev_tag
+__version__ = '1.2.0' + optional_dev_tag
diff --git a/pyproject.toml b/pyproject.toml
index 0422ce1..e68ec35 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[tool.ruff]
line-length = 100
-target-version = "py311"
+target-version = "py312"
lint.select = [
"E", "F", "W", # pycodestyle/pyflakes
"I", # isort
@@ -13,4 +13,4 @@ lint.ignore = []
[tool.black]
line-length = 100
-target-version = ['py311']
+target-version = ['py312']
diff --git a/requirements.txt b/requirements.txt
index b2a71b1..fae9740 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,13 +4,12 @@ brotli==1.2.0
certifi==2025.8.3
cffi==2.0.0
click==8.3.0
-cryptography==3.3.2; platform_machine == 'armv7l'
-cryptography==46.0.1; platform_machine != 'armv7l'
+cryptography==46.0.1
cssutils==2.11.1
defusedxml==0.7.1
-Flask==2.3.2
+Flask==3.1.2
idna==3.10
-itsdangerous==2.1.2
+itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.2
more-itertools==10.8.0
@@ -18,8 +17,7 @@ packaging==25.0
pluggy==1.6.0
pycodestyle==2.14.0
pycparser==2.22
-pyOpenSSL==19.1.0; platform_machine == 'armv7l'
-pyOpenSSL==25.3.0; platform_machine != 'armv7l'
+pyOpenSSL==25.3.0
pyparsing==3.2.5
pytest==8.3.3
python-dateutil==2.9.0.post0
@@ -32,5 +30,5 @@ h11>=0.16.0
validators==0.35.0
waitress==3.0.2
wcwidth==0.2.14
-Werkzeug==3.0.6
+Werkzeug==3.1.3
python-dotenv==1.1.1
diff --git a/test/conftest.py b/test/conftest.py
index bd9017a..28225a1 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -8,7 +8,6 @@ import random
demo_config = {
'near': random.choice(['Seattle', 'New York', 'San Francisco']),
- 'dark': str(random.getrandbits(1)),
'nojs': str(random.getrandbits(1)),
'lang_interface': random.choice(app.config['LANGUAGES'])['value'],
'lang_search': random.choice(app.config['LANGUAGES'])['value'],
diff --git a/test/test_routes.py b/test/test_routes.py
index 1f64827..9cfe975 100644
--- a/test/test_routes.py
+++ b/test/test_routes.py
@@ -75,14 +75,14 @@ def test_config(client):
# Test disabling changing config from client
app.config['CONFIG_DISABLE'] = 1
- dark_mod = not demo_config['dark']
- demo_config['dark'] = dark_mod
+ nojs_mod = not bool(int(demo_config['nojs']))
+ demo_config['nojs'] = str(int(nojs_mod))
rv = client.post(f'/{Endpoint.config}', data=demo_config)
assert rv._status_code == 403
rv = client.get(f'/{Endpoint.config}')
config = json.loads(rv.data)
- assert config['dark'] != dark_mod
+ assert config['nojs'] != nojs_mod
def test_opensearch(client):
From 3698d9065ed20063048ad4ef5326a7d14c4f8d2c Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 15:36:24 -0600
Subject: [PATCH 2/9] - Added condition to the 'on-success' job to execute only
if the preceding workflow run concludes successfully.
---
.github/workflows/docker_main.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml
index 5e30a55..e2e47e9 100644
--- a/.github/workflows/docker_main.yml
+++ b/.github/workflows/docker_main.yml
@@ -11,6 +11,7 @@ on:
jobs:
on-success:
runs-on: ubuntu-latest
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: checkout code
uses: actions/checkout@v2
From 7b56aa053b6726eb5c3630ebc22ae4dc87c31cd8 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 15:43:52 -0600
Subject: [PATCH 3/9] Update notice
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 037771f..79f7fa8 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
>works -- Whoogle requests the JavaScript-free search results, then filters out garbage from the results page and proxies all external content for the user.
>
>This is possibly a breaking change that may mean the end for Whoogle. We'll continue fighting back and releasing workarounds until all workarounds are
->exhausted or a better method is found.
+>exhausted or a better method is found. If you know of a better way, please review and comment in our Way Forward Discussion
___
@@ -700,7 +700,6 @@ Instead of using auto-generated Opera UA strings, you can provide your own list
```
Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.13337/22.478; U; en) Presto/2.4.15 Version/10.00
Opera/9.80 (Android; Linux; Opera Mobi/498; U; en) Presto/2.12.423 Version/10.1
-Opera/9.30 (Nintendo Wii; U; ; 3642; en)
```
2. Set the `WHOOGLE_UA_LIST_FILE` environment variable to point to your file:
From 0f000a676b23c655685a9ac26cf2d77ed37cdd20 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 15:51:06 -0600
Subject: [PATCH 4/9] Update GitHub Actions workflows to use latest actions and
improve build conditions
- Upgraded `actions/checkout` from v2 to v4 for better performance.
- Replaced deprecated buildx setup with `docker/setup-qemu-action` and `docker/setup-buildx-action`.
- Updated `docker/login-action` to v3 for enhanced security.
- Refined conditions for building and pushing Docker images based on workflow events.
---
.github/workflows/buildx.yml | 37 +++++++++----------------------
.github/workflows/docker_main.yml | 2 +-
2 files changed, 11 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index d89eea5..95a2a8d 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -21,19 +21,18 @@ jobs:
if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }}
run: exit 1
- name: checkout code
- uses: actions/checkout@v2
- - name: install buildx
- id: buildx
- uses: crazy-max/ghaction-docker-buildx@v1
- with:
- version: latest
+ uses: actions/checkout@v4
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
- uses: docker/login-action@v1
+ uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to ghcr.io
- uses: docker/login-action@v1
+ uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -51,14 +50,10 @@ jobs:
# --tag ghcr.io/benbusby/whoogle-search:latest \
# --platform linux/amd64,linux/arm64 .
- name: build and push updates branch (update-testing tag)
- if: github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
+ if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.actor.login == 'benbusby' || github.event.workflow_run.actor.login == 'Don-Swanson')
run: |
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx ls
docker buildx build --push \
--tag benbusby/whoogle-search:update-testing \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
- docker buildx build --push \
--tag ghcr.io/benbusby/whoogle-search:update-testing \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
- name: build and push release (version + latest)
@@ -66,13 +61,9 @@ jobs:
run: |
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx ls
docker buildx build --push \
--tag benbusby/whoogle-search:${VERSION} \
--tag benbusby/whoogle-search:latest \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
- docker buildx build --push \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
--tag ghcr.io/benbusby/whoogle-search:latest \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
@@ -81,22 +72,14 @@ jobs:
run: |
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx ls
docker buildx build --push \
--tag benbusby/whoogle-search:${VERSION} \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
- docker buildx build --push \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
- name: build and push tag
if: startsWith(github.ref, 'refs/tags')
run: |
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- docker buildx ls
docker buildx build --push \
- --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v}\
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
- docker buildx build --push \
- --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v}\
+ --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
+ --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
\ No newline at end of file
diff --git a/.github/workflows/docker_main.yml b/.github/workflows/docker_main.yml
index e2e47e9..80dd5fb 100644
--- a/.github/workflows/docker_main.yml
+++ b/.github/workflows/docker_main.yml
@@ -14,7 +14,7 @@ jobs:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: checkout code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: build and test (docker)
run: |
docker build --tag whoogle-search:test .
From 71a2c10e58104711da7264ceb523ef7248c9bca2 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:08:37 -0600
Subject: [PATCH 5/9] Remove tag push from GitHub Actions workflow and disable
related build step in favor of using GitHub releases for versioning.
---
.github/workflows/buildx.yml | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index 95a2a8d..b551914 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -6,9 +6,6 @@ on:
branches: [main, updates]
types:
- completed
- push:
- tags:
- - '*'
release:
types:
- published
@@ -76,10 +73,11 @@ jobs:
--tag benbusby/whoogle-search:${VERSION} \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
--platform linux/amd64,linux/arm/v7,linux/arm64 .
- - name: build and push tag
- if: startsWith(github.ref, 'refs/tags')
- run: |
- docker buildx build --push \
- --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
- --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
\ No newline at end of file
+ # Disabled: Use GitHub releases instead (triggers release or pre-release workflows above)
+ # - name: build and push tag
+ # if: startsWith(github.ref, 'refs/tags')
+ # run: |
+ # docker buildx build --push \
+ # --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
+ # --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
+ # --platform linux/amd64,linux/arm/v7,linux/arm64 .
\ No newline at end of file
From 20753224f362029c29611f765dcb6de6fa859e95 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:14:02 -0600
Subject: [PATCH 6/9] Refine GitHub Actions workflow condition to remove tag
check for test success
---
.github/workflows/buildx.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index b551914..95e3951 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Wait for tests to succeed
- if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }}
+ if: ${{ github.event.workflow_run.conclusion != 'success' }}
run: exit 1
- name: checkout code
uses: actions/checkout@v4
From 20ed4936717ecdbb4b063a7f269dde9c792e7cdb Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:19:40 -0600
Subject: [PATCH 7/9] Dropping Support for armv7l due to security bugs in
cryptography
- Adjusted `pyOpenSSL` versioning in `requirements.txt` to support armv7l architecture.
- Modified Docker build platforms in GitHub Actions workflow to exclude armv7, focusing on amd64 and arm64.
---
.github/workflows/buildx.yml | 8 ++++----
Dockerfile | 10 ++++++++++
README.md | 11 +++++++++++
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index 95e3951..16ad8b7 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -52,7 +52,7 @@ jobs:
docker buildx build --push \
--tag benbusby/whoogle-search:update-testing \
--tag ghcr.io/benbusby/whoogle-search:update-testing \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
+ --platform linux/amd64,linux/arm64 .
- name: build and push release (version + latest)
if: github.event_name == 'release' && github.event.release.prerelease == false && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
run: |
@@ -63,7 +63,7 @@ jobs:
--tag benbusby/whoogle-search:latest \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
--tag ghcr.io/benbusby/whoogle-search:latest \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
+ --platform linux/amd64,linux/arm64 .
- name: build and push pre-release (version only)
if: github.event_name == 'release' && github.event.release.prerelease == true && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
run: |
@@ -72,7 +72,7 @@ jobs:
docker buildx build --push \
--tag benbusby/whoogle-search:${VERSION} \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
- --platform linux/amd64,linux/arm/v7,linux/arm64 .
+ --platform linux/amd64,linux/arm64 .
# Disabled: Use GitHub releases instead (triggers release or pre-release workflows above)
# - name: build and push tag
# if: startsWith(github.ref, 'refs/tags')
@@ -80,4 +80,4 @@ jobs:
# docker buildx build --push \
# --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
# --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
- # --platform linux/amd64,linux/arm/v7,linux/arm64 .
\ No newline at end of file
+ # --platform linux/amd64,linux/arm64 .
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 5361a1a..7412599 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,3 +1,13 @@
+# NOTE: ARMv7 support has been dropped due to lack of pre-built cryptography wheels for Alpine/musl.
+# To restore ARMv7 support for local builds:
+# 1. Change requirements.txt:
+# cryptography==3.3.2; platform_machine == 'armv7l'
+# cryptography==46.0.1; platform_machine != 'armv7l'
+# pyOpenSSL==19.1.0; platform_machine == 'armv7l'
+# pyOpenSSL==25.3.0; platform_machine != 'armv7l'
+# 2. Add linux/arm/v7 to --platform flag when building:
+# docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64 .
+
FROM python:3.12.6-alpine3.20 AS builder
RUN apk --no-cache add \
diff --git a/README.md b/README.md
index 79f7fa8..66ec022 100644
--- a/README.md
+++ b/README.md
@@ -88,6 +88,17 @@ Contents
***If deployed to a remote server, or configured to send requests through a VPN, Tor, proxy, etc.
## Install
+
+### Supported Platforms
+Official Docker images are built for:
+- **linux/amd64** (x86_64)
+- **linux/arm64** (ARM 64-bit, Raspberry Pi 3/4/5, Apple Silicon)
+
+**Note**: ARMv7 support (32-bit ARM, Raspberry Pi 2) was dropped in v1.2.0 due to incompatibility with modern security libraries on Alpine Linux. Users with ARMv7 devices can either:
+- Use an older version (v1.1.x or earlier)
+- Build locally with pinned dependencies (see notes in Dockerfile)
+- Upgrade to a 64-bit OS if hardware supports it (Raspberry Pi 3+)
+
There are a few different ways to begin using the app, depending on your preferences:
___
From ccdeb60fc0f0edfd3b1e20d5feafd64790017839 Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:36:34 -0600
Subject: [PATCH 8/9] Update Dockerfile to use Python 3.12-alpine3.22 and
remove unnecessary bridge package
- Changed base image from python:3.12.6-alpine3.20 to python:3.12-alpine3.22 for improved security and compatibility.
- Added command to remove the bridge package to mitigate CVEs, ensuring a cleaner build environment.
- Ensured pip is upgraded consistently across stages.
---
Dockerfile | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 7412599..56b029f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,7 +8,7 @@
# 2. Add linux/arm/v7 to --platform flag when building:
# docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64 .
-FROM python:3.12.6-alpine3.20 AS builder
+FROM python:3.12-alpine3.22 AS builder
RUN apk --no-cache add \
build-base \
@@ -22,13 +22,16 @@ COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install --prefix /install --no-warn-script-location --no-cache-dir -r requirements.txt
-FROM python:3.12.6-alpine3.20
+FROM python:3.12-alpine3.22
-RUN apk add --no-cache tor curl openrc libstdc++
+# Remove bridge package to avoid CVEs (not needed for Docker containers)
+RUN apk add --no-cache --no-scripts tor curl openrc libstdc++ && \
+ apk del --no-cache bridge || true
# git go //for obfs4proxy
# libcurl4-openssl-dev
-
-RUN apk --no-cache upgrade
+RUN pip install --upgrade pip
+RUN apk --no-cache upgrade && \
+ apk del --no-cache --rdepends bridge || true
# uncomment to build obfs4proxy
# RUN git clone https://gitlab.com/yawning/obfs4.git
From db6d031e862f53b017920f4c96b0178e67de9d8a Mon Sep 17 00:00:00 2001
From: Don-Swanson <32144818+Don-Swanson@users.noreply.github.com>
Date: Wed, 26 Nov 2025 16:48:56 -0600
Subject: [PATCH 9/9] Enhance GitHub Actions workflow for tag handling and
debugging
- Added support for triggering builds on tag pushes.
- Introduced a debugging step to log workflow context information.
- Refined conditions for building and pushing Docker images based on actor and workflow run status.
---
.github/workflows/buildx.yml | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml
index 16ad8b7..bab9673 100644
--- a/.github/workflows/buildx.yml
+++ b/.github/workflows/buildx.yml
@@ -6,6 +6,9 @@ on:
branches: [main, updates]
types:
- completed
+ push:
+ tags:
+ - '*'
release:
types:
- published
@@ -15,8 +18,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Wait for tests to succeed
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
+ if: ${{ github.event.workflow_run.conclusion != 'success' && startsWith(github.ref, 'refs/tags') != true }}
run: exit 1
+ - name: Debug workflow context
+ run: |
+ echo "Event name: ${{ github.event_name }}"
+ echo "Ref: ${{ github.ref }}"
+ echo "Actor: ${{ github.actor }}"
+ echo "Branch: ${{ github.event.workflow_run.head_branch }}"
+ echo "Conclusion: ${{ github.event.workflow_run.conclusion }}"
- name: checkout code
uses: actions/checkout@v4
- name: Set up QEMU
@@ -47,7 +57,7 @@ jobs:
# --tag ghcr.io/benbusby/whoogle-search:latest \
# --platform linux/amd64,linux/arm64 .
- name: build and push updates branch (update-testing tag)
- if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.actor.login == 'benbusby' || github.event.workflow_run.actor.login == 'Don-Swanson')
+ if: github.event_name == 'workflow_run' && github.event.workflow_run.head_branch == 'updates' && github.event.workflow_run.conclusion == 'success' && (github.actor == 'benbusby' || github.actor == 'Don-Swanson')
run: |
docker buildx build --push \
--tag benbusby/whoogle-search:update-testing \
@@ -73,11 +83,10 @@ jobs:
--tag benbusby/whoogle-search:${VERSION} \
--tag ghcr.io/benbusby/whoogle-search:${VERSION} \
--platform linux/amd64,linux/arm64 .
- # Disabled: Use GitHub releases instead (triggers release or pre-release workflows above)
- # - name: build and push tag
- # if: startsWith(github.ref, 'refs/tags')
- # run: |
- # docker buildx build --push \
- # --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
- # --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
- # --platform linux/amd64,linux/arm64 .
\ No newline at end of file
+ - name: build and push tag
+ if: startsWith(github.ref, 'refs/tags')
+ run: |
+ docker buildx build --push \
+ --tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
+ --tag ghcr.io/benbusby/whoogle-search:${GITHUB_REF#refs/*/v} \
+ --platform linux/amd64,linux/arm64 .
\ No newline at end of file