diff --git a/README.md b/README.md index 3a18763b1..ec51b6a47 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,12 @@ [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=element-web) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=bugs)](https://sonarcloud.io/summary/new_code?id=element-web) +> **ThreadNet-Web**: this is a fork of Element Web, customized for the self-hosted +> [axion1337.chat](https://axion1337.chat) Matrix homeserver. See +> [docs/axion1337-fork.md](docs/axion1337-fork.md) for everything this fork changes versus +> upstream (Discord-style room list, client-side ClamAV content scanning, build fixes). The +> rest of this README describes upstream Element Web and is intentionally left as-is. + # Element Element (formerly known as Vector and Riot) is a Matrix web & desktop client built using the [Matrix diff --git a/docs/axion1337-fork.md b/docs/axion1337-fork.md new file mode 100644 index 000000000..7f7f593fd --- /dev/null +++ b/docs/axion1337-fork.md @@ -0,0 +1,54 @@ +# ThreadNet-Web: Fork-Anpassungen für axion1337.chat + +Dieses Dokument beschreibt alles, was dieser Fork gegenüber Upstream Element Web ändert. Der +Rest der `docs/`-Ordner-Dateien und das Root-`README.md` sind unverändertes Upstream-Material +und beschreiben absichtlich **nicht** diese Anpassungen - diese Datei ist der zentrale +Anlaufpunkt dafür. + +## 1. Discord-Style Room-List (Call-Teilnehmer in der Raumliste) + +Zeigt aktive Call-Teilnehmer direkt in der Raumliste an (ähnlich Discords Voice-Channel-UI), +statt nur einen generischen "Call läuft"-Indikator. Betroffene Komponenten: +`apps/web/src/room-list/RoomListItemView/RoomListItemView.tsx` und +`RoomListItemView.module.css` (vertikale Ausrichtung der Teilnehmer-Avatare). + +## 2. Client-seitiges ClamAV-Content-Scanning (Issue #19-Erweiterung) + +Der Server-seitige Content-Scanner (Synapse-Modul, siehe gitops-Repo +[`docs/deployment-guides/06-moderation-content-scanning.md`](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/src/branch/main/docs/deployment-guides/06-moderation-content-scanning.md)) +sieht bei Ende-zu-Ende-verschlüsselten Räumen nur Ciphertext - eine strukturelle Grenze, kein +Bug. Da dieser Client bereits geforkt wird, scannt er stattdessen selbst, auf beiden Seiten: + +- **Senden** (`apps/web/src/ContentMessages.ts`, `uploadFile()`): liest die Datei als + ArrayBuffer, scannt sie über `scanContent()` **bevor** verschlüsselt/hochgeladen wird - der + Upload wird bei Treffer gar nicht erst gestartet. +- **Empfangen** (`apps/web/src/utils/DecryptFile.ts`, `decryptFile()`): scannt die + entschlüsselten Bytes direkt nach dem Entschlüsseln, bevor das Blob an die UI zurückgegeben + wird - schützt auch vor Dateien von unveränderten/fremden Matrix-Clients, die diesen Patch + nicht haben. +- Gemeinsame Scan-Logik: `apps/web/src/utils/ContentScanner.ts` - ruft den (im gitops-Repo + deployten) `clamav-http-scanner`-Dienst per `fetch("/_scan", ...)` auf, mit dem eigenen + Matrix-Access-Token als Bearer-Auth. Fail-open bei Netzwerk-/Scanner-Fehlern (blockiert + Uploads/Downloads nicht bei einem Ausfall des Scanners). +- Neuer Fehlertyp `ContentScanRejectedError`, verdrahtet durch die bestehenden + Fehler-Rendering-Pfade in `MImageBody.tsx`, `MAudioBody.tsx`, `VideoBodyViewModel.ts`, + `FileBodyViewModel.ts`. +- Live getestet inkl. Hostile-Sender-Simulation (Datei per rohem API-Call ohne diesen Patch + gesendet, Empfangs-Hook hat trotzdem geblockt). + +### ⚠️ Bekannte Lücke: Electron/Desktop (Issue #2) + +Dieser Fix ist bestätigt nur für den **Web-Client-Build** wirksam. Der Electron-Desktop-Client +bekommt ihn aktuell **nicht automatisch** - die CI-Workflow-Kette (`build_ew`-Job) checkt +weiterhin `element-hq/element-web` (Upstream) statt diesen Fork aus, und es ist kein GitHub- +Actions-Runner für dieses Repo registriert. Der aktuell veröffentlichte Desktop-Build +(`desktop-v1.12.17-clientscan` Release) wurde manuell gebaut, nicht automatisiert. Details und +Fix-Plan: [Issue #2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2). + +## 3. Build-Fixes (historisch, Issue #12) + +Zwei Bugs blockierten einen vollständigen `docker build` von Grund auf (mussten für den +Client-Scanning-Rebuild oben behoben werden): (1) mehrere Shell-Skripte waren mit Modus 644 +statt 755 committet (nicht ausführbar); (2) der `matrix-js-sdk#develop`-Git-Ref-Pin in +`pnpm-lock.yaml` war veraltet (fehlte `src/oidc/authorize.ts`, das `apps/web` importiert). +Beide behoben.