Duplicati/rclone-Fixes, Basic Auth, Repo-Aufräumen

- Basic Auth: beliebige oder WEBDAV_USER/WEBDAV_PASS
- MKCOL: 201 bei existierendem Ordner (Duplicati-Kompatibilität)
- PUT: Leere Dateien, Retry bei File-already-exists
- Aufräumen: bridge-test, debug-files entfernt, webdav-server-Dep
- .env.example: API-Credentials entfernt, drive-web in gitignore
- README: Docs verlinkt, Schnellstart aktualisiert

Made-with: Cursor
This commit is contained in:
2026-02-28 12:21:01 +01:00
parent 406e31f338
commit 7dbc6c8fe4
10 changed files with 147 additions and 294 deletions

View File

@@ -1,62 +1,54 @@
# Internxt WebDAV Wrapper
WebDAV-Zugang zu Internxt Drive für Account-Tiers, die keinen CLI- oder Rclone-Zugang haben.
WebDAV-Zugang zu Internxt Drive für Account-Tiers ohne CLI- oder Rclone-Native-Zugang.
## Hintergrund
Internxt blockiert für bestimmte Account-Typen (z.B. Free, Partner-Accounts) den Zugang über:
- Internxt CLI (`cli access not allowed for this user tier`)
- Rclone Native-Backend (`rclone access not allowed for this user tier`, Status 402)
- Docker-Image `internxt/webdav` (nutzt dieselbe Auth)
Internxt blockiert für bestimmte Account-Typen (z.B. Free, Partner) den Zugang über CLI und Rclone.
**Lösung:** Das Web-UI (drive.internxt.com) funktioniert es nutzt `login()` mit `clientName: "drive-web"`. Der Wrapper imitiert diese Auth.
**Lösung:** Das Web-UI (drive.internxt.com) funktioniert es nutzt `clientName: "drive-web"`. Dieser Wrapper imitiert diese Auth und bietet einen WebDAV-Server.
## Auth-Proof-of-Concept
## Schnellstart
1. Abhängigkeiten installieren:
```bash
npm install
```
```bash
npm install
cp .env.example .env
# .env: INXT_TOKEN, INXT_MNEMONIC, CRYPTO_SECRET eintragen (siehe docs/browser-token-auth.md)
npm start
```
2. `.env` anlegen (von `.env.example` kopieren):
```bash
cp .env.example .env
```
Server läuft auf `http://127.0.0.1:3005`.
3. Credentials eintragen:
```
INXT_EMAIL=deine@email.de
INXT_PASSWORD=dein_passwort
INXT_2FA=123456 # Falls 2FA aktiv
```
## WebDAV-Funktionen
4. Auth testen:
```bash
npm run auth-test
```
- **PROPFIND** Verzeichnis auflisten
- **MKCOL** Ordner erstellen
- **DELETE** Dateien/Ordner löschen
- **MOVE** Verschieben/Umbenennen
- **GET** Dateien herunterladen
- **PUT** Dateien hochladen
Bei Erfolg erscheint „Login erfolgreich!“ dann kann der WebDAV-Server gebaut werden.
## Clients
- **Duplicati** Backup-Destination
- **rclone** `rclone config` → WebDAV, URL `http://127.0.0.1:3005`
- **Windows Explorer** Netzlaufwerk verbinden
## Dokumentation
- [docs/auth-analysis.md](docs/auth-analysis.md) Analyse Web vs CLI Auth, clientName-Unterschied
| Datei | Beschreibung |
|-------|---------------|
| [docs/browser-token-auth.md](docs/browser-token-auth.md) | Token aus Browser extrahieren, WebDAV-Credentials |
| [docs/webdav-architektur.md](docs/webdav-architektur.md) | Architektur-Übersicht |
| [docs/wsl-setup.md](docs/wsl-setup.md) | WSL-Setup (login mit Keys) |
| [docs/auth-analysis.md](docs/auth-analysis.md) | Analyse Web vs CLI Auth |
| [docs/crypto-secret-extract.md](docs/crypto-secret-extract.md) | CRYPTO_SECRET aus drive.internxt.com ermitteln |
## Browser-Token-Auth (Alternative)
## Scripts
Falls der API-Login blockiert ist (z.B. Partner-Account):
1. Auf https://drive.internxt.com einloggen
2. DevTools (F12) → Console: `localStorage.getItem('xNewToken')` und `localStorage.getItem('xMnemonic')` ausführen
3. Werte in `.env` als `INXT_TOKEN` und `INXT_MNEMONIC` eintragen
4. Testen: `npm run token-test`
Details: [docs/browser-token-auth.md](docs/browser-token-auth.md)
## WSL (login mit Keys)
Unter Windows schlägt Kyber-WASM fehl. Unter WSL: [docs/wsl-setup.md](docs/wsl-setup.md)
## Nächste Schritte
- WebDAV-Server mit Token-Auth implementieren
- Storage-Client für Datei-Operationen anbinden
| Befehl | Beschreibung |
|-------|--------------|
| `npm start` | WebDAV-Server starten |
| `npm run token-test` | Token prüfen |
| `npm run auth-test` | API-Login testen (E-Mail/Passwort) |
| `npm run debug-names` | Namensentschlüsselung testen |