FileVault API Dokumentation

Eine RESTful API zum Zugriff auf das FileVault-System

Übersicht

Die FileVault API ist eine RESTful API, die den Zugriff auf das FileVault-System ermöglicht. Sie bietet Funktionen zur Verwaltung von Ordnern und Dateien, die im FileVault-System gespeichert sind. Die API ist auf der Basis von Java implementiert und nutzt den integrierten HttpServer.

Basiseinstellung

Die folgenden Beispiele gehen davon aus, dass der FileVault API-Server unter localhost:9090 läuft. Falls Sie einen anderen Host oder Port verwenden, passen Sie die Befehle entsprechend an.

Docker-Unterstützung

Die FileVault API kann jetzt auch in einem Docker-Container ausgeführt werden. Bitte beachten Sie, dass nur die API im Container funktionsfähig ist. Das Hauptprojekt wird weiterhin benötigt.

docker pull ghcr.io/GulfGulfinson/fileVault:latest
docker run -v ~/.filevault:/root/.filevault -p 9090:9090 ghcr.io/GulfGulfinson/fileVault:latest

Authentifizierung

Bevor Sie auf die meisten Endpunkte zugreifen können, müssen Sie sich bei der API authentifizieren.

Authentifizierungsprozess

  1. Senden Sie eine POST-Anfrage an den /api/auth-Endpunkt mit Ihrem Passwort.
  2. Bei erfolgreicher Authentifizierung erhalten Sie ein Token zurück.
  3. Dieses Token müssen Sie in allen nachfolgenden Anfragen im Authorization-Header mitschicken.

Token-Verwaltung

  • Tokens werden im Speicher verwaltet und bleiben gültig, bis die Anwendung neu gestartet wird oder Sie sich ausloggen.
  • Sie können Ihr Token im lokalen Speicher Ihres Browsers speichern, um es zwischen Sitzungen beizubehalten.

API-Endpunkte

POST /api/auth

Authentifiziert einen Benutzer und gibt ein Token zurück.

  • Anforderungsformat: JSON mit Passwort
  • Antwortformat: JSON mit Token
  • Auth erforderlich: Nein

Linux-Beispiel (curl):

curl -X POST http://localhost:9090/api/auth \
  -H "Content-Type: application/json" \
  -d '{"password":"11111111"}'

Erwartete Antwort:

{"token":"d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8"}

GET /api/folders

Listet alle verfügbaren Ordner auf.

  • Antwortformat: JSON-Array mit Ordnern
  • Auth erforderlich: Ja

Linux-Beispiel (curl):

curl -X GET http://localhost:9090/api/folders \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8"

Erwartete Antwort:

[{"id":1,"name":"Persönlich","parentFolderId":0},{"id":2,"name":"Arbeit","parentFolderId":0},{"id":3,"name":"Dokumente","parentFolderId":1}]

POST /api/folders

Erstellt einen neuen Ordner.

  • Anforderungsformat: JSON mit Ordnername und optionalem übergeordneten Ordner
  • Antwortformat: JSON mit Informationen zum erstellten Ordner
  • Auth erforderlich: Ja

Linux-Beispiel (curl) - Ordner in Root-Ebene:

curl -X POST http://localhost:9090/api/folders \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8" \
  -H "Content-Type: application/json" \
  -d '{"name":"Neuer Ordner"}'

Linux-Beispiel (curl) - Unterordner erstellen:

curl -X POST http://localhost:9090/api/folders \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8" \
  -H "Content-Type: application/json" \
  -d '{"name":"Unterordner","parentFolderId":1}'

Erwartete Antwort:

{"id":4,"name":"Unterordner","parentFolderId":1}

PUT /api/folders

Aktualisiert einen bestehenden Ordner.

  • Anforderungsformat: JSON mit Ordner-ID und neuem Namen
  • Antwortformat: JSON mit aktualisierten Ordnerinformationen
  • Auth erforderlich: Ja

Linux-Beispiel (curl):

curl -X PUT http://localhost:9090/api/folders \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8" \
  -H "Content-Type: application/json" \
  -d '{"id":4,"name":"Umbenannter Ordner"}'

Erwartete Antwort:

{"id":4,"name":"Umbenannter Ordner"}

DELETE /api/folders?id={id}

Löscht einen Ordner anhand seiner ID.

  • Antwortformat: JSON mit Erfolgs- oder Fehlermeldung
  • Auth erforderlich: Ja
  • Einschränkung: Über die API können nur leere Ordner gelöscht werden.

Linux-Beispiel (curl):

curl -X DELETE "http://localhost:9090/api/folders?id=4" \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8"

Erwartete Antwort:

Ordner erfolgreich gelöscht.

Mögliche Fehlermeldung (bei Ordner mit Inhalt):

Ordner mit Inhalt können nicht über die API gelöscht werden. Bitte verwenden Sie die grafische Benutzeroberfläche (GUI), um Ordner mit Unterordnern oder Dateien zu löschen.

GET /api/files

Listet alle verfügbaren Dateien auf.

  • Antwortformat: JSON-Array mit Dateien
  • Auth erforderlich: Ja

Linux-Beispiel (curl):

curl -X GET http://localhost:9090/api/files \
  -H "Authorization: d123e4a4-5b6c-78d9-0e1f-2g3h4i56j7k8"

Erwartete Antwort:

[{"id":1,"name":"bericht.pdf","folderId":2},{"id":2,"name":"notizen.txt","folderId":1}]

GET /

Bietet ein einfaches Web-Interface zum Testen der API.

  • Antwortformat: HTML
  • Auth erforderlich: Nein (aber Funktionalität innerhalb des Interfaces erfordert Authentifizierung)

Linux-Beispiel (curl):

curl http://localhost:9090/

Dies gibt die HTML-Seite des Web-Interfaces zurück, die Sie in einem Browser öffnen können.

Fehlerbehandlung

Die API gibt verschiedene HTTP-Statuscodes zurück, um den Erfolg oder Misserfolg einer Anfrage anzuzeigen:

  • 200: Erfolgreiche Anfrage
  • 201: Ressource erfolgreich erstellt
  • 401: Nicht autorisiert (fehlende oder ungültige Authentifizierung)
  • 405: Methode nicht erlaubt (falsche HTTP-Methode für den Endpunkt)

Fehlermeldungen werden im JSON-Format zurückgegeben, um weitere Informationen über den Fehler zu liefern.

Beispiele für Fehlerbehandlung

Beispiel für ungültige Authentifizierung:

curl -X POST http://localhost:9090/api/auth \
  -H "Content-Type: application/json" \
  -d '{"password":"falschespasswort"}'

Erwartete Antwort:

{"error":"Ungültiges Passwort. Zugriff verweigert."}

Beispiel für eine Anfrage ohne Token:

curl -X GET http://localhost:9090/api/folders

Erwartete Antwort:

{"error":"Unauthorized: Invalid or missing authentication token."}

Beispiel für eine Anfrage mit ungültigem Token:

curl -X GET http://localhost:9090/api/folders \
  -H "Authorization: ungültigestoken"

Erwartete Antwort:

{"error":"Unauthorized: Invalid or missing authentication token."}

Bekannte Einschränkungen

  • Ordner mit Inhalt: Ordner, die Unterordner oder Dateien enthalten, können nicht über die API gelöscht werden. Verwenden Sie stattdessen die grafische Benutzeroberfläche (GUI) für diese Operation.
  • Datei-Upload: Die aktuelle API-Version unterstützt keine vollständige Datei-Upload-Funktionalität über die API. Dateien müssen über die GUI hochgeladen werden.

Sicherheitsüberlegungen

  • Die API verwendet eine einfache tokenbasierte Authentifizierung.
  • Die Tokens werden im Speicher verwaltet und sind nicht persistent über Neustarts hinweg.
  • In einer Produktionsumgebung sollten zusätzliche Sicherheitsmaßnahmen wie HTTPS, Token-Zeitlimits und sichere Passwörter implementiert werden.