134 lines
3.1 KiB
Markdown
134 lines
3.1 KiB
Markdown
# Server Folders Agent per JSON
|
|
|
|
## Agent starten
|
|
|
|
Lege `server-folders-agent.json` neben die `server-folders-agent.exe` und starte den Agent ohne weitere Parameter:
|
|
|
|
```powershell
|
|
.\server-folders-agent.exe
|
|
```
|
|
|
|
Beispiel:
|
|
|
|
```json
|
|
{
|
|
"listenAddr": ":8099",
|
|
"storageRoots": [
|
|
{
|
|
"label": "Storage D",
|
|
"path": "D:/Milestone-Speicher"
|
|
}
|
|
],
|
|
"archiveRoots": [
|
|
{
|
|
"label": "Archive E",
|
|
"path": "E:/"
|
|
}
|
|
],
|
|
"token": ""
|
|
}
|
|
```
|
|
|
|
Alternativ kann die Config explizit angegeben werden:
|
|
|
|
```powershell
|
|
.\server-folders-agent.exe -config "C:\Milestone\server-folders-agent.json"
|
|
```
|
|
|
|
Oder per ENV:
|
|
|
|
```powershell
|
|
$env:SERVER_FOLDER_AGENT_CONFIG="C:\Milestone\server-folders-agent.json"
|
|
.\server-folders-agent.exe
|
|
```
|
|
|
|
## Token-Handling
|
|
|
|
Der Agent kann ohne initialen Token gestartet werden. Das Backend erzeugt beim Speichern der Milestone-Einstellungen automatisch einen zufälligen Token und überträgt ihn per `PUT /agent-token` an den Agent.
|
|
|
|
Wenn keine `tokenFile` in der JSON gesetzt ist, schreibt der Agent den aktuellen Token direkt ins Feld `token` der JSON-Datei. Damit überlebt der Token einen Neustart und alle Einstellungen liegen in einer Datei.
|
|
|
|
```http
|
|
PUT /agent-token
|
|
X-Server-Folders-Token: <aktueller-token> # nur nötig, wenn bereits ein Token gesetzt ist
|
|
Content-Type: application/json
|
|
|
|
{ "token": "<neuer-token>" }
|
|
```
|
|
|
|
Solange noch kein Token gesetzt ist, akzeptiert der Agent `PUT /agent-token` auch ohne Header. Betreibe den Agent daher in einem vertrauenswürdigen Netzwerk und speichere die Einstellungen nach dem Start zeitnah.
|
|
|
|
Falls du den Token weiterhin getrennt speichern möchtest, kannst du in der JSON `tokenFile` setzen:
|
|
|
|
```json
|
|
{
|
|
"listenAddr": ":8099",
|
|
"storageRoots": [
|
|
{
|
|
"label": "Storage D",
|
|
"path": "D:/Milestone/Storage"
|
|
}
|
|
],
|
|
"tokenFile": "C:/Milestone/server-folders-agent.token"
|
|
}
|
|
```
|
|
|
|
## Root-Pfade per API aktualisieren
|
|
|
|
Das Backend kann die Storage- und Archive-Roots zur Laufzeit an den Agent schicken. Der Agent aktualisiert die laufende Konfiguration und schreibt die Werte in `server-folders-agent.json`:
|
|
|
|
```http
|
|
PUT /agent-config
|
|
X-Server-Folders-Token: <aktueller-token>
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"storageRoots": [
|
|
{
|
|
"label": "Storage D",
|
|
"path": "D:/Milestone-Speicher"
|
|
}
|
|
],
|
|
"archiveRoots": [
|
|
{
|
|
"label": "Archive E",
|
|
"path": "E:/"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Kompatibilität
|
|
|
|
Die bisherigen Parameter und ENV-Variablen funktionieren weiter und überschreiben Werte aus der JSON:
|
|
|
|
```powershell
|
|
.\server-folders-agent.exe -port 8099 -storage-root "Storage D=D:/Milestone/Storage" -archive-root "Archive E=E:/Milestone/Archive"
|
|
```
|
|
|
|
Unterstützte ENV-Variablen:
|
|
|
|
- `SERVER_FOLDER_AGENT_CONFIG`
|
|
- `LISTEN_ADDR`
|
|
- `SERVER_FOLDER_AGENT_PORT`
|
|
- `SERVER_STORAGE_ROOTS`
|
|
- `SERVER_ARCHIVE_ROOTS`
|
|
- `SERVER_FOLDER_ROOTS`
|
|
- `SERVER_FOLDER_AGENT_TOKEN`
|
|
- `SERVER_FOLDER_AGENT_TOKEN_FILE`
|
|
|
|
## Backend-Proxy
|
|
|
|
Der bestehende Frontend-Endpunkt bleibt:
|
|
|
|
```http
|
|
GET /admin/server-folders?path=D:/Milestone
|
|
POST /admin/server-folders
|
|
```
|
|
|
|
Der Proxy gibt den Token als Header an den Agent weiter:
|
|
|
|
```http
|
|
X-Server-Folders-Token: <token>
|
|
```
|