Debian
|
32ab2c7f47
|
chore(lint): Backlog auf 0 + golangci-lint als HARTER Gate — v1.3.3
Go-Quality-Baseline-Rollout ABGESCHLOSSEN.
Code-Quality-Backlog (55 → 0):
- errcheck: unbehandelte Close/Rollback/Remove explizit `_ =`; fmt.Sscanf
`_, _ =` (Zero-Value degradiert sauber).
- unused: toter Code entfernt (nodeIDOrHostname, stripTrailingNewline,
acme.Service.user, strFold + ungenutzter Import).
- noctx (net/http): http.NewRequestWithContext mit vorhandenem ctx.
- staticcheck: QF1001/S1009/ST1005/SA9003.
- contextcheck: detached-by-design-Stellen mit begründetem //nolint.
Zwei echte Bugs beim Aufräumen gefunden+gefixt:
- backup/remote SFTP-Upload: dst.Close()-Flush-Fehler wurde verschluckt →
unvollständiges Remote-File galt als Erfolg. Jetzt geprüft+gemeldet.
- haproxy_test: leere if-Assertion (SA9003) testete faktisch nichts →
echte t.Errorf-Prüfung (kein HSTS für HSTS-disabled Domain).
Bewusste Config-Entscheidungen (.golangci.yml):
- noctx-on-os/exec ausgeschlossen: System-Command-Reloads (systemctl/nft/
wg/pg) dürfen NICHT an den Request-Context gebunden werden — ein Client-
Disconnect darf keinen laufenden Reload mitten in der Ausführung killen.
net/http-noctx bleibt voll aktiv. KEINE exec-Zeile im Code angefasst.
- rowserrcheck/sqlclosecheck raus (database/sql-Linter, bei pgx nur FPs).
Gate scharf gestellt: Makefile release-check ruft golangci-lint jetzt als
HARTEN Gate (install-if-missing, pinned v2.12.2). `make release-check`
grün: vet, golangci-lint, govulncheck, build, test -race.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-06 00:49:07 +02:00 |
|
Debian
|
cdbb62ee1a
|
harden(api): Slowloris-Timeout + gosec-Security-Audit + waf-Purge-Bugfix — v1.3.2
Go-Quality-Baseline-Rollout, Security-Teil:
- api: http.Server bekommt ReadHeaderTimeout (15s) + IdleTimeout (120s)
gegen Slowloris-Header-Stalls (gosec G112). ReadTimeout/WriteTimeout
bewusst offen (lang laufende Rolling-Update-/Backup-Endpoints).
- fix(waf): PurgeAlerts nutzte NOW() - ($1 || ' days')::interval mit
olderThanDays int → pgx-Encode-Error zur Laufzeit → DELETE /waf/alerts
war kaputt. Auf make_interval(days => $1) umgestellt (gleiche Bug-
Klasse wie audit-Cleanup v1.3.0). Via Lint-Aufräumen entdeckt.
- .golangci.yml: 26 gosec-Findings line-by-line auditiert. Alle sind
bewusstes Appliance-Verhalten mit Compensating Controls (Subprocess-
Args intern/validiert, Config-File-Perms daemon-lesbar, SSH opt-in
Fingerprint-Pinning, UI-Server Clean+HasPrefix-Traversal-Guard) oder
FPs (G101 Konstanten-Namen, G702/G703/G706 Taint). Dokumentiert
exclude't. gosec-Rest = 0.
- .golangci.yml: rowserrcheck/sqlclosecheck raus — database/sql-Linter,
bei durchgängigem pgx nur FPs.
gosec=0, govulncheck=0, race=0. Rest-Backlog: errcheck/noctx/staticcheck
(Code-Quality, kein Security) — folgt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-05 23:36:37 +02:00 |
|
Debian
|
3a707e2e3f
|
feat(auth): OIDC/Keycloak SSO-Login (additiv) — v1.2.91
SSO per OpenID Connect (Authorization Code + PKCE) zusätzlich zum lokalen Login.
- Regeln: kein Auto-Provisioning (E-Mail muss als User existieren), Rolle aus DB (nie aus Token), lokaler Login+TOTP unangetastet.
- Migration 0040: oidc_settings (Singleton, client_secret_enc via secrets.Box) + users.oidc_subject.
- internal/services/oidc: Settings-Repo (write-only Secret) + lazy go-oidc Client (testbarer Authenticator-Seam).
- internal/handlers/oidc.go: GET/PUT /oidc/settings (admin), GET /auth/oidc/{settings,login,callback}. Flow-State (state/PKCE/nonce) stateless im 5-min signierten HttpOnly-Cookie (SameSite=Lax). email_verified erzwungen, opportunistisches sub-Linking, Session via setSessionCookie+Signer.
- session.SignBlob/VerifyBlob; users.Get/SetOIDCSubject; main.go-Wiring.
- Frontend: App.tsx /auth/me-Bootstrap (für Cookie-Session nach Callback), Login-SSO-Button + sso_error, Settings OIDC-Card, i18n de/en.
- Tests (guarded EG_FWTEST_DSN): Secret-Roundtrip + Callback (Rolle-aus-DB, no_account, disabled, unverified, nonce, state).
Deps: go-oidc/v3, x/oauth2. Scope v1: nur Login (kein SLO/Refresh).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-05 16:04:13 +02:00 |
|