- PROPFIND auf Dateipfade (rclone-Verifizierung nach PUT) - MKCOL: 'already exists' -> 201 statt 500 - resolveResource: name.bin-Fallback für Dateien ohne Erweiterung - recentFileCache für neu erstellte Dateien (API-Verzögerung) - Logging: webdav-debug.log, webdav-errors.log, REQ/RES - start-webdav.cmd: Log-Ausgabe in Datei, PORT aus .env - Troubleshooting-Doku für restic 500-Fehler Made-with: Cursor
50 lines
1.7 KiB
Batchfile
50 lines
1.7 KiB
Batchfile
@echo off
|
|
REM Duplicati Pre-Start: WebDAV-Server starten
|
|
REM In Duplicati: Einstellungen -> Erweitert -> Scripts -> Vor dem Backup ausfuehren
|
|
REM Pfad: C:\Pfad\zu\internxt-webdav\scripts\start-webdav.cmd
|
|
REM Optional: Port als Argument (z.B. start-webdav.cmd 8080)
|
|
|
|
cd /d "%~dp0.."
|
|
if "%1"=="" (set PORT=3005) else (set PORT=%1)
|
|
for /f "tokens=2 delims==" %%a in ('findstr /B "PORT=" .env 2^>nul') do set PORT=%%a
|
|
|
|
REM .env und Token pruefen
|
|
if not exist .env (
|
|
echo FEHLER: .env fehlt. Bitte von .env.example kopieren und INXT_TOKEN eintragen.
|
|
exit /b 1
|
|
)
|
|
findstr /B "INXT_TOKEN=" .env 2>nul | findstr "INXT_TOKEN=." > nul 2>&1
|
|
if %errorlevel% neq 0 (
|
|
echo FEHLER: INXT_TOKEN fehlt oder leer in .env. Token abgelaufen? npm run token-refresh ausfuehren.
|
|
exit /b 1
|
|
)
|
|
|
|
REM Pruefen ob Server bereits laeuft (0.0.0.0:0 = Listening)
|
|
netstat -an | findstr /C:":%PORT% " | findstr /C:"0.0.0.0:0" > nul 2>&1
|
|
if %errorlevel% equ 0 (
|
|
echo WebDAV-Server laeuft bereits.
|
|
exit /b 0
|
|
)
|
|
|
|
if not exist "%~dp0..\logs" mkdir "%~dp0..\logs"
|
|
set LOGFILE=%~dp0..\logs\webdav.log
|
|
echo [%date% %time%] WebDAV-Server starten... >> "%LOGFILE%"
|
|
echo Starte WebDAV-Server... Log: %LOGFILE%
|
|
start /B node src/server.js >> "%LOGFILE%" 2>&1
|
|
|
|
REM Warten und pruefen ob Server antwortet (OPTIONS braucht keine Auth)
|
|
set RETRIES=0
|
|
:wait
|
|
timeout /t 2 /nobreak > nul
|
|
powershell -NoProfile -Command "try { (Invoke-WebRequest -Uri http://127.0.0.1:%PORT%/ -Method OPTIONS -UseBasicParsing -TimeoutSec 2).StatusCode -eq 200 } catch { exit 1 }" > nul 2>&1
|
|
if %errorlevel% equ 0 (
|
|
echo WebDAV-Server gestartet.
|
|
exit /b 0
|
|
)
|
|
set /a RETRIES+=1
|
|
if %RETRIES% geq 5 (
|
|
echo FEHLER: Server antwortet nicht. Token pruefen: npm run token-test
|
|
exit /b 1
|
|
)
|
|
goto wait
|