thunderbird2docuware/README.md
sylyx f1454540d5 Passwort nicht mehr speichern: OAuth-Token nur im RAM, 1x-Login pro Sitzung
Das DocuWare-Passwort wird nicht mehr in storage.local abgelegt. Das
Hintergrundskript fungiert als Auth-Broker und hält den OAuth-Token nur im
Speicher der TB-Sitzung. Der Ablage-Dialog fragt das Passwort einmalig per
Overlay ab, holt darüber den Token und verwirft das Passwort sofort.

- store.js: password aus DEFAULTS entfernt; Settings.set() löscht password defensiv
- auth.js: setToken/currentToken für Token-Transfer, Cookie-Modus als Sentinel
- background.js: Broker (auth:status/auth:logon/auth:logout)
- dialog: ensureAuth() + Passwort-Overlay statt direktem Auth.logon
- options: Passwort nur transient für Test/Diagnose, nicht gespeichert; Export ohne Passwort
- manifest: lib/store.js + lib/auth.js ins Hintergrundskript geladen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 15:14:05 +02:00

114 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DocuWare Ablage Thunderbird-Extension
Legt eine markierte E-Mail aus Thunderbird in DocuWare ab. Nach Klick auf den Button
erscheint ein **Ablage-Dialog**: Aktenschrank wählen, Indexfelder ausfüllen (aus der
Mail vorbefüllt), ablegen. Hochgeladen werden je nach Auswahl die Mail als `.eml`,
die Mail als PDF und die Anhänge als separate Dokumente.
## Funktionsweise
- **Direkte Anbindung** an die DocuWare **Platform REST-API** (kein eigener Server).
Auth v1 per **Cookie-Logon** (`/Account/Logon`).
- **Dynamische Felder**: Die Eingabemaske wird aus dem *Store-Dialog* des gewählten
Schranks erzeugt (Felder, Pflichtfelder, Auswahllisten).
- **Vorbefüllung** der `EML_*`-Felder aus der Mail (Absender, Empfänger, Betreff,
Datum, Richtung, Größe, Body …).
## Projektstruktur
```
manifest.json MailExtension-Manifest (Manifest v2)
background/background.js Button + Kontextmenü, öffnet den Dialog
dialog/ Ablage-Dialog (HTML/CSS/JS)
options/ Einstellungen (Server, Login, Defaults)
lib/
store.js Einstellungen (browser.storage.local)
auth.js Cookie-Logon (Auth-Abstraktion)
docuware.js Platform-REST-Client (Schränke, Dialoge, Felder, Upload)
mail.js Mail-Extraktion (eml, Metadaten, Anhänge)
pdf.js abhängigkeitsfreier Text-PDF-Generator
icons/
```
## Installation (Entwicklung)
1. Thunderbird → Menü → **Add-ons und Themes** → Zahnrad → **Add-on aus Datei
installieren …** *oder* zum Testen:
2. Adresszeile: `about:debugging`**Dieses Thunderbird** → **Temporäres Add-on
laden …** → `manifest.json` in diesem Ordner wählen.
> Hinweis: Bei einem Self-Signed-Zertifikat des DocuWare-Servers muss dieses einmalig
> in Thunderbird akzeptiert werden, sonst schlagen die `fetch`-Aufrufe fehl.
## Einrichtung
Add-on-Einstellungen öffnen und ausfüllen:
- **Server-URL** Basis ohne `/DocuWare/Platform`, z.B. `https://docuware.firma.de`
- **Organisation**, **Benutzername**, **Passwort**
- **Verbindung testen** → lädt die Aktenschränke (Bestätigung, dass Login & URL passen)
- optional **Standard-Aktenschrank** und Default-Optionen (eml/pdf/Anhänge)
> 🔒 **Das Passwort wird nicht gespeichert.** Es wird beim ersten Ablegen pro
> Thunderbird-Sitzung einmal abgefragt, daraus ein OAuth-Token geholt und sofort
> verworfen. Nur der Token bleibt im Speicher des Hintergrundskripts (überlebt keinen
> Neustart). In `storage.local` liegen ausschließlich Server, Organisation, Benutzer
> und Standardwerte keine Zugangsdaten. Auch der Einstellungs-Export enthält **kein**
> Passwort.
## Benutzung
1. E-Mail öffnen → Button **„In DocuWare ablegen"** (oder Rechtsklick in der
Nachrichtenliste → *In DocuWare ablegen*).
2. Aktenschrank wählen → Felder prüfen/ergänzen (Pflichtfelder mit `*`).
3. Auswählen, was abgelegt wird (eml / PDF / Anhänge).
4. **Ablegen**. Bei Erfolg wird die Mail optional mit dem Tag *DocuWare* markiert.
## Verifikation (End-to-End)
Gegen den **Test-Schrank `LL_TEST_BELEGE`** ablegen, dann per DocuWare-MCP gegenprüfen:
- `docuware_search` (file_cabinet_name `LL_TEST_BELEGE`, query = Betreff) → Treffer?
- `docuware_get_document` → Indexfelder (`EML_SENDER`, `EML_SUBJECT`, …) korrekt?
- `docuware_download_document``.eml`/PDF herunterladen & prüfen
- Anhänge erscheinen als eigene Dokumente
- Aufräumen: `docuware_delete_document` (nur im Test-Schrank!)
## Verteilung & automatische Updates (eigenes Gitea, nicht öffentlich)
Das Add-on wird **nicht** öffentlich auf addons.thunderbird.net gelistet, sondern
über AMO als **„Selbstständig" (self-distribution)** signiert und über dein eigenes
Gitea verteilt + aktualisiert.
> Im XPI und in `updates.json` stehen **keine** Zugangsdaten. Das DocuWare-Passwort
> wird ohnehin nirgends gespeichert (nur Sitzungs-Token im Speicher) und nie mitverteilt.
**Einmalige Einrichtung:**
1. In `manifest.json``applications.gecko.update_url` die Domain `GITEA.EXAMPLE.DE`
durch deine (HTTPS-)Gitea-Adresse ersetzen. **HTTPS ist Pflicht** (TB lehnt HTTP ab).
2. `updates.json` ebenfalls auf deine Gitea-URLs anpassen und in dein Repo committen
(erreichbar unter der `update_url`, z.B. via *raw*-Link auf `main`).
**Bei jedem neuen Release:**
1. `version` in `manifest.json` erhöhen (z.B. `0.8.0``0.8.1`).
2. XPI bauen (`manifest.json` muss im Archiv-Wurzelverzeichnis liegen).
3. XPI bei AMO hochladen → **„Selbstständig"** wählen → **signiertes** XPI herunterladen.
4. Signiertes XPI als Release-Anhang in Gitea hochladen (passend zum `update_link`).
5. In `updates.json` einen neuen Eintrag mit `version` + `update_link` ergänzen,
committen/pushen.
Thunderbird prüft die `update_url` periodisch und aktualisiert automatisch auf die
neueste dort gelistete Version.
## Bekannte Grenzen / nächste Schritte
- **PDF** ist v1 ein einfaches Text-PDF (Kopf + Klartext-Body) ohne HTML-Layout/Bilder.
- **Auth**: primär DocuWare Identity Service (OAuth, ROPC mit öffentlichem Client),
Fallback Cookie-Logon für alte On-Prem-Server. Passwort wird nicht gespeichert
(Token nur im RAM, 1× Abfrage pro Sitzung).
- **Upload-Multipart-Format** ggf. je nach DocuWare-Version anpassen
(`docuware.js → uploadDocument`).
- Mehrfachauswahl von Mails: aktuell wird die erste markierte Mail abgelegt.