feat(deploy): auto-generacja ALTCHA_HMAC_KEY (captcha zgłoszeń, bpp #560)#19
Merged
Conversation
Klucz HMAC do proof-of-work CAPTCHA ALTCHA (bpp PR #560) generowany idempotentnie przez _ensure_secret na kazdym 'make up' (jak inne sekrety, np. NTFY_TOPIC). 64-hex (openssl rand -hex 32), wymog django-altcha. Wszystkie serwisy Django czytaja .env przez env_file -> klucz dociera do appserver/worker/beat bez zmian w compose. Sama captcha jest domyslnie WYLACZONA po stronie BPP (ZGLOS_CAPTCHA_ENABLED, default False). Klucz generujemy z wyprzedzeniem, zeby wlaczenie bylo jednym krokiem operatora (ZGLOS_CAPTCHA_ENABLED=1 w .env) bez recznego sekretu. tests/test_makefile.sh: 133 passed, 1 failed (pre-existing nginx -t LE, niezalezny od tej zmiany). pre-commit + bash -n czyste. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mpasternak
added a commit
that referenced
this pull request
Jul 17, 2026
PR #19 dolozyl auto-generacje ALTCHA_HMAC_KEY, ale sama captcha pozostawala wylaczona: ZGLOS_CAPTCHA_ENABLED nie bylo ustawiane nigdzie, wiec na zadnej instalacji (w tym staging) widget sie nie pojawial. Klucz czekal, flagi nie bylo. Flaga jest dopisywana zaraz PO kluczu, w tym samym self-healu. Kolejnosc jest istotna: gdy flaga sie zapala, realny klucz juz jest w .env - captcha z nieustawionym kluczem byla by bezwartosciowa (Django bierze wtedy publiczny sentinel-placeholder, wiec wyzwanie da sie podrobic). Flaga jest dopisywana NIEZALEZNIE od tego, czy klucz powstal wlasnie teraz. Sprzegniecie jej z generacja klucza (pierwotny pomysl) nie zapalilo by captchy dokladnie tam, gdzie ma sie pojawic: instalacje ktore od PR #19 dostaly sam klucz maja go juz w .env, wiec warunek "brak klucza" nigdy by nie zaskoczyl. To wlacza captche domyslnie na wszystkich instalacjach po `git pull && make up`. Opt-out: ZGLOS_CAPTCHA_ENABLED=0 - _ensure_var nie nadpisuje niepustych wartosci, wiec wybor przezywa kolejne upgrade'y. Jedno miejsce (ensure-config-files.sh) wystarcza takze dla swiezych instalacji: init-configs.sh wola ten skrypt pod spodem, wiec nie duplikujemy zmiennych w heredocu .env. tests/test_makefile.sh: +10 asercji - swiezy .env, self-heal starego .env, stabilnosc klucza miedzy przebiegami, brak duplikatu linii, respektowanie ZGLOS_CAPTCHA_ENABLED=0 oraz przypadek "klucz juz jest, flagi brak" (staging). 143 passed, 1 failed (pre-existing nginx -t LE, niezalezny od tej zmiany). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gf8VQNqJ3yy5S1A5SrP1qb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Kontekst
Warstwa wdrożeniowa dla CAPTCHA ALTCHA na anonimowym formularzu zgłoszeń publikacji (bpp PR #560, zmergowany do
dev). Captcha wymaga sekretuALTCHA_HMAC_KEY(HMAC-signing challenge). Ten PR generuje go automatycznie, żeby operator nie musiał tworzyć sekretu ręcznie.Zmiana
scripts/ensure-config-files.sh— jedna linia obok istniejących_ensure_secret:_ensure_secret ALTCHA_HMAC_KEY "$(openssl rand -hex 32)".envtylko gdy brak, nie nadpisuje) i odpala się na każdymmake up→ wszystkie instalacje (świeże i po upgrade) dostają stabilny klucz bez ręcznego kroku.appserver,workerserver,beatserver) czytają.envprzezenv_file, więc klucz dociera do nich automatycznie.Włączanie captchy (dla operatora)
Captcha jest po stronie BPP domyślnie wyłączona (
ZGLOS_CAPTCHA_ENABLED, default False) — ten PR jedynie przygotowuje klucz z wyprzedzeniem. Aby włączyć na danej instalacji:git pullbpp-deploy +make up→ALTCHA_HMAC_KEYpojawia się w.env.ZGLOS_CAPTCHA_ENABLED=1do.env,make up.Kolejność jest bezpieczna: przy default OFF sam obraz BPP może iść niezależnie; klucz i tak czeka w
.env.Testy
tests/test_makefile.sh: 133 passed, 1 failed — jedyny fail (nginx -tLE-mode fallback) jest pre-existing (ustalony w PR security(deploy): nginx client_max_body_size 100M → 120M #18 revertem do baseline), niezależny od tej zmiany.pre-commit(shellcheck, TruffleHog, detect-private-key): pass.bash -n: OK.🤖 Generated with Claude Code