Commit graph

3 commits

Author SHA1 Message Date
b7a6f8e7ef Fullfør oppgave 6.1: CAS-lagring med SHA-256 og deduplisering
Implementerer content-addressable store som Rust-modul i maskinrommet:

- CasStore med SHA-256 hashing (sha2 + hex crates)
- Katalogstruktur: {root}/{hash[0..2]}/{hash[2..4]}/{hash}
- Atomisk skriving via temp-fil + rename (hindrer korrupt read)
- Innebygd deduplisering — identisk hash = ingen skriving
- Konfigurerbar rot via CAS_ROOT env (default: /srv/synops/media/cas)
- 5 enhetstester: store, dedup, exists, ulike filer, path-struktur

Neste steg: 6.2 (upload-endepunkt) bruker CasStore for filmottak.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 16:31:23 +01:00
854ed27797 Auth-middleware: JWT-validering og auth_identities-oppslag (oppgave 2.2)
Legger til Authentik JWT-validering i maskinrommet:
- Henter JWKS fra Authentik ved oppstart
- Validerer RS256-signatur, issuer og utløpstid
- Slår opp sub-claim i auth_identities → node_id
- AuthUser axum-extractor for beskyttede endepunkter
- /me test-endepunkt som krever gyldig token
- /health forblir offentlig

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:26:34 +01:00
9f2667ba87 Maskinrommet Rust-skjelett med Dockerfile (oppgave 2.1)
Axum-server med health-endepunkt, PostgreSQL-tilkobling via sqlx,
strukturert logging med tracing. Flertrinns Dockerfile for produksjon.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:20:39 +01:00