Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse

Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example)
in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die
Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten
das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber
IWZ_ENV (Fallback bin/.env).

Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die
IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report.
GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach
/mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den
Installationsweg. Doku in doc/analyse.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
Michael Stangl
2026-08-28 16:44:56 +02:00
parent 025e68b3b9
commit 2379f4ac9f
21 changed files with 760 additions and 59 deletions
+38
View File
@@ -0,0 +1,38 @@
# Kopieren nach .env und mit echten Werten befuellen.
# .env ist in .gitignore eingetragen und wird NICHT eingecheckt.
# Storage Zone -> Access-Tab im Bunny.net Dashboard
BUNNY_STORAGE_ZONE=iwz-ferienwohnungen
BUNNY_STORAGE_HOST=storage.bunnycdn.com
BUNNY_STORAGE_PASSWORD=
# Pull Zone -> CDN -> Security-Tab im Bunny.net Dashboard (Token Authentication)
BUNNY_PULL_ZONE_URL=https://iwz-ferienwohnungen.b-cdn.net
BUNNY_AUTH_KEY=
# Account-API-Key fuer den CDN-Cache-Purge nach dem Deploy.
# Dashboard -> oben rechts auf den Namen -> Account -> API -> "API Key".
# ACHTUNG: nicht der BUNNY_AUTH_KEY oben, sondern der Account-weite API-Key!
BUNNY_API_KEY=
# --- Nutzungsanalyse (analyze.py) ------------------------------------------
# SFTP-Zugang zu IONOS (gleiche Zugangsdaten wie im IONOS-Kundenbereich / SFTP).
IONOS_SFTP_HOST=
IONOS_SFTP_PORT=22
IONOS_SFTP_USER=
IONOS_SFTP_PASSWORD=
# Ordner mit den Access-Logs auf dem Server (im Screenshot: /logs).
IONOS_LOGS_DIR=/logs
# GoAccess-Aufruf:
# GOACCESS_MODE=wsl -> GoAccess laeuft in der WSL (empfohlen, Standard).
# Installation: bin\install_py.bat prueft WSL+GoAccess
# und zeigt sonst die Installationsbefehle.
# GOACCESS_MODE=exe -> nativer Windows-Build; dann GOACCESS_EXE auf die
# goaccess.exe setzen (Download: https://goaccess.io/download).
GOACCESS_MODE=wsl
GOACCESS_EXE=goaccess
# Apache-Logformat. IONOS nutzt i.d.R. das Combined Log Format.
# Falls der Report leer bleibt -> siehe doc/analyse.md (Format anpassen).
LOG_FORMAT=COMBINED
+20
View File
@@ -0,0 +1,20 @@
@echo off
REM ================================================================
REM SPS_SKEL - Python Virtual Environment aktivieren
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%IWZ%\.venv" (
echo FEHLER: Virtual environment nicht gefunden.
echo Bitte zuerst bin\install_py.bat ausfuehren.
exit /b 1
)
call "%IWZ%\.venv\Scripts\activate.bat"
echo Virtuelle Umgebung aktiviert.
echo Python-Version:
python --version
echo.
echo Installierte Pakete:
pip list
+26
View File
@@ -0,0 +1,26 @@
@echo off
REM ================================================================
REM IWZ Ferienwohnungen - Nutzungsanalyse (IONOS-Logs + GoAccess)
REM ================================================================
REM Aufruf:
REM bin\analyze.bat Logs laden + Report bauen + oeffnen
REM bin\analyze.bat --no-download nur neu auswerten (schon geladene Logs)
REM ================================================================
setlocal
call "%~dp0setenv.bat" >nul
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko liegt dort)
if exist "%IWZ%\.venv\Scripts\activate.bat" (
call "%IWZ%\.venv\Scripts\activate.bat"
)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
cd /d "%IWZ%"
"%PY%" "%IWZ_LIB%\analyze.py" %*
set "RC=%ERRORLEVEL%"
if not "%RC%"=="0" pause
endlocal & exit /b %RC%
+26
View File
@@ -0,0 +1,26 @@
@echo off
REM ================================================================
REM IWZ Ferienwohnungen - Deploy (nur geaenderte Dateien)
REM ================================================================
setlocal
call "%~dp0setenv.bat" >nul
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko etc. liegen dort)
if exist "%IWZ%\.venv\Scripts\activate.bat" (
call "%IWZ%\.venv\Scripts\activate.bat"
)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
echo.
echo === IWZ Ferienwohnungen - Deploy (nur Aenderungen) ===
echo.
cd /d "%IWZ%"
"%PY%" "%IWZ_LIB%\deploy_lastdiff.py" %*
set "RC=%ERRORLEVEL%"
if not "%RC%"=="0" pause
endlocal & exit /b %RC%
+29
View File
@@ -0,0 +1,29 @@
@echo off
REM ================================================================
REM IWZ Ferienwohnungen - Deploy (Vollupload nach Bunny.net)
REM ================================================================
setlocal
REM Umgebung setzen (IWZ, IWZ_LIB, IWZ_ENV, PYTHONPATH ...)
call "%~dp0setenv.bat" >nul
REM Virtuelle Umgebung nutzen, falls vorhanden (paramiko etc. liegen dort)
if exist "%IWZ%\.venv\Scripts\activate.bat" (
call "%IWZ%\.venv\Scripts\activate.bat"
)
REM Python-Interpreter bestimmen (py-Launcher bevorzugt, sonst python)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
echo.
echo === IWZ Ferienwohnungen - Deploy ===
echo.
REM Aus dem Projekt-Root heraus bauen (hugo + public liegen dort)
cd /d "%IWZ%"
"%PY%" "%IWZ_LIB%\deploy.py" %*
set "RC=%ERRORLEVEL%"
if not "%RC%"=="0" pause
endlocal & exit /b %RC%
+7
View File
@@ -0,0 +1,7 @@
@echo off
REM ================================================================
REM IWZ Ferienwohnungen - Shell mit gesetzten Umgebungsvariablen oeffnen
REM ================================================================
call "%~dp0setenv.bat"
start cmd /k "echo IWZ Umgebung aktiv. && echo IWZ=%IWZ%"
+54
View File
@@ -0,0 +1,54 @@
@echo off
REM ================================================================
REM IWZ - Python Virtual Environment einrichten
REM ================================================================
call "%~dp0setenv.bat"
if not exist "%IWZ%\.venv" (
echo Initialisiere Python virtual environment...
py -m venv "%IWZ%\.venv" --upgrade-deps
echo Erfolgreich.
call "%IWZ%\.venv\Scripts\activate.bat"
echo Installiere erforderliche Python Packages...
pip install -r "%IWZ%\requirements.txt" -q
echo Erfolgreich.
deactivate
) else (
echo Erforderliche Python Packages bereits installiert!
)
echo.
echo ================================================================
echo Pruefe Nutzungsanalyse-Voraussetzungen (WSL + GoAccess)
echo ================================================================
REM 1) Ist WSL verfuegbar?
where wsl >nul 2>&1
if errorlevel 1 (
echo [FEHLT] WSL ist nicht installiert.
echo So einrichten ^(einmalig, PowerShell als Administrator^):
echo wsl --install
echo Danach Windows neu starten und die Ubuntu-Ersteinrichtung
echo ^(Benutzername/Passwort^) durchlaufen. Anschliessend GoAccess
echo wie unten installieren.
goto :wsl_done
)
echo [OK] WSL gefunden.
REM 2) Ist GoAccess in der WSL installiert?
wsl -e bash -lc "command -v goaccess >/dev/null 2>&1"
if errorlevel 1 (
echo [FEHLT] GoAccess ist in der WSL nicht installiert.
echo So installieren:
echo wsl -e sudo apt update
echo wsl -e sudo apt install -y goaccess
echo ^(fragt einmalig nach dem WSL-sudo-Passwort^)
) else (
for /f "delims=" %%V in ('wsl -e bash -lc "goaccess --version ^| head -1"') do set "GA_VER=%%V"
echo [OK] GoAccess in der WSL: %GA_VER%
)
:wsl_done
echo ================================================================
+27
View File
@@ -0,0 +1,27 @@
@echo off
REM ================================================================
REM Ferienwohnungen Wolframm - Vorschau-Link erzeugen
REM ================================================================
setlocal
call "%~dp0setenv.bat" >nul
REM Virtuelle Umgebung nutzen, falls vorhanden
if exist "%IWZ%\.venv\Scripts\activate.bat" (
call "%IWZ%\.venv\Scripts\activate.bat"
)
set "PY=py"
py --version >nul 2>&1 || set "PY=python"
echo.
echo === Ferienwohnungen Wolframm - Vorschau-Link erzeugen ===
cd /d "%IWZ%"
"%PY%" "%IWZ_LIB%\preview_link.py" %*
echo.
echo Link oben markieren und mit Strg+C kopieren.
echo.
endlocal
cmd /k
+77
View File
@@ -0,0 +1,77 @@
@echo off
REM ================================================================
REM IWZ Ferienwohnungen - Umgebungsvariablen Setup
REM ================================================================
if defined IWZ_BIN (
echo IWZ Umgebung bereits gesetzt.
goto :show
)
echo Setting up environment variables for IWZ ...
REM Basis-Projektpfad (Ordner ueber bin\)
set "IWZ=%~dp0.."
if "%IWZ:~-6%"=="bin\.." set "IWZ=%IWZ:~0,-6%"
if "%IWZ:~-1%"=="\" set "IWZ=%IWZ:~0,-1%"
REM Pfade fuer verschiedene Komponenten
set "IWZ_BIN=%IWZ%\bin"
set "IWZ_LIB=%IWZ%\lib"
set "IWZ_DOC=%IWZ%\doc"
set "IWZ_CONTENT=%IWZ%\content"
set "IWZ_LAYOUTS=%IWZ%\layouts"
set "IWZ_STATIC=%IWZ%\static"
set "IWZ_PUBLIC=%IWZ%\public"
set "IWZ_LOGS=%IWZ%\logs"
set "IWZ_RESULTS=%IWZ%\results"
REM Pfad zur .env (liegt jetzt in bin\). Die Python-Skripte lesen IWZ_ENV.
set "IWZ_ENV=%IWZ_BIN%\.env"
REM Python-Pfad erweitern (nur wenn noch nicht vorhanden)
echo %PYTHONPATH% | find /i "%IWZ_LIB%" >nul
if errorlevel 1 (
set "PYTHONPATH=%IWZ_LIB%;%PYTHONPATH%"
)
REM Ordner erstellen falls sie nicht existieren
if not exist "%IWZ_BIN%" mkdir "%IWZ_BIN%"
if not exist "%IWZ_LIB%" mkdir "%IWZ_LIB%"
if not exist "%IWZ_LOGS%" mkdir "%IWZ_LOGS%"
if not exist "%IWZ_RESULTS%" mkdir "%IWZ_RESULTS%"
REM Optional dauerhaft in der Registry setzen: bin\setenv.bat --persist
if /i "%1"=="--persist" (
echo Setze Umgebungsvariablen dauerhaft in der Registry ^(setx^)...
setx IWZ "%IWZ%" >nul
setx IWZ_BIN "%IWZ_BIN%" >nul
setx IWZ_LIB "%IWZ_LIB%" >nul
setx IWZ_ENV "%IWZ_ENV%" >nul
echo Dauerhaft gesetzt. Gilt fuer alle neuen Prozesse.
)
REM Umgebungsvariablen anzeigen
:show
echo.
echo ================================================================
echo IWZ ENVIRONMENT SETUP COMPLETE
echo ================================================================
echo IWZ = %IWZ%
echo IWZ_BIN = %IWZ_BIN%
echo IWZ_LIB = %IWZ_LIB%
echo IWZ_DOC = %IWZ_DOC%
echo IWZ_CONTENT = %IWZ_CONTENT%
echo IWZ_LAYOUTS = %IWZ_LAYOUTS%
echo IWZ_STATIC = %IWZ_STATIC%
echo IWZ_PUBLIC = %IWZ_PUBLIC%
echo IWZ_LOGS = %IWZ_LOGS%
echo IWZ_RESULTS = %IWZ_RESULTS%
echo IWZ_ENV = %IWZ_ENV%
echo PYTHONPATH = %PYTHONPATH%
echo ================================================================
echo.
REM Optionally keep window open
if "%1"=="--keep-open" pause