Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget
Sju ting fra en gjennomgang av det som ble bygd i går. Stopp virket ikke mens lyden ble laget. Player.stop() drepte self.proc, men under syntesen finnes ingen prosess ennå – det er de første sekundene av hver edge-tts-melding – så knappen gjorde ingenting, og meldingen gikk ut etterpå. Nå har køen statusen preparing, stop() setter stopped på den, og run_once() sjekker det før den starter avspilling. UI-et viser «Lager lyd …» i stedet for å late som det spilles i stillhet. Planlagte sendinger løy om status. De ble markert «sendt» idet de ble lagt i kø, og ble stående slik selv om avspillingen feilet. Player har fått en on_finished-callback, og planen følger nå meldingen helt i mål: sent, failed eller stopped – det som faktisk skjedde. Statusene i schedule.py er utvidet tilsvarende (queued er «lagt i kø», sent er «spilt ferdig»). Flask sin utviklingsserver er byttet ut med waitress. Én prosess med mange tråder, med vilje: Player og planleggeren er singletons, så gunicorn med flere workere ville gitt flere køer som snakker i munnen på hverandre. HTTP-laget hadde null tester. import announcer startet tråder og dro inn Piper, så rutene lot seg ikke prøve. Trådene startes nå i main(), og run_once() driver køen ett steg om gangen. tests/test_routes.py dekker rutene, valideringen, køen, Stopp i begge faser, revisjonsloggen og hele planleggingsflyten gjennom HTTP. 30 nye tester, 110 totalt. Kappløp i synthesize(): tmp-fila hadde fast navn, så to som forhåndslyttet samme tekst samtidig skrev til samme fil, og den ene rename feilet. Unik tmp-fil per kall. verify_signature = false er fjernet. Det var en felle: én feilskrevet linje i config, og alle tokens ble godtatt. Ingen trenger den. docker compose up uten install.sh krasjet kryptisk ved første utrop, fordi Docker lagde data/ som root. check_writable() sier nå klart fra ved oppstart, med hva som må gjøres. Verifisert live i container: Stopp under edge-tts-syntese gir stopped, ikke done. Server-headeren er waitress sin, ikke werkzeugs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
04b3712ef5
commit
eb27a162d5
9 changed files with 565 additions and 81 deletions
15
auth.py
15
auth.py
|
|
@ -124,7 +124,6 @@ class TokenVerifier:
|
|||
self.secret = str(section.get("secret", "")).strip()
|
||||
self.jwks_url = str(section.get("jwks_url", "")).strip()
|
||||
self.leeway = int(section.get("leeway", 30))
|
||||
self.verify_signature = bool(section.get("verify_signature", True))
|
||||
# Tom liste: utled av hvordan nøkkelen kommer. Delt hemmelighet er
|
||||
# symmetrisk (HS256), JWKS er asymmetrisk (RS256/ES256).
|
||||
algs = [str(a) for a in section.get("algorithms") or []]
|
||||
|
|
@ -143,9 +142,6 @@ class TokenVerifier:
|
|||
def verify(self, token: str) -> dict:
|
||||
import jwt
|
||||
|
||||
if not self.verify_signature:
|
||||
# Bare for et crew-panel bak en proxy som alt har validert tokenet.
|
||||
return jwt.decode(token, options={"verify_signature": False})
|
||||
if not (self.secret or self.jwks_url):
|
||||
raise AuthError("JWT er ikke konfigurert")
|
||||
try:
|
||||
|
|
@ -306,9 +302,6 @@ class OidcProvider(Provider):
|
|||
"secret": self.client_secret,
|
||||
"jwks_url": meta.get("jwks_uri", ""),
|
||||
"algorithms": [],
|
||||
"verify_signature": bool(
|
||||
self.cfg.get("auth.oidc", "verify_signature", True)
|
||||
),
|
||||
}
|
||||
)
|
||||
return self._verifier
|
||||
|
|
@ -626,6 +619,14 @@ def logout():
|
|||
return redirect("/")
|
||||
|
||||
|
||||
def reconfigure(cfg: Config) -> Authenticator:
|
||||
"""Bytter ut leverandørene uten å røre Flask-appen. For tester som vil
|
||||
prøve samme app med og uten innlogging."""
|
||||
global _auth
|
||||
_auth = Authenticator(cfg)
|
||||
return _auth
|
||||
|
||||
|
||||
def install(app, cfg: Config) -> Authenticator: # noqa: ANN001
|
||||
"""Kobler autentisering på Flask-appen. Returnerer Authenticatoren."""
|
||||
global _auth
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue