cleanup und INSTALL

This commit is contained in:
root
2026-01-28 13:57:45 +01:00
parent d1b4b926e4
commit 468534979e
2 changed files with 92 additions and 10 deletions

View File

@@ -32,6 +32,8 @@ ACME Zertifikatserneuerung wie gewohnt über crontab
Pfad: `/usr/local/bin/sync-ispconfig-proxy.conf` Pfad: `/usr/local/bin/sync-ispconfig-proxy.conf`
Sollte als Cronjob laufen um Änderungen vom ISPconfg Master zu übernehmen
### 2.2 Server-Liste ### 2.2 Server-Liste
Pfad: `/usr/local/bin/proxy_based_server.conf` Pfad: `/usr/local/bin/proxy_based_server.conf`
@@ -41,6 +43,17 @@ Pfad: `/usr/local/bin/proxy_based_server.conf`
Pfad: `/usr/local/bin/sync-ispconfig-proxy.sh` Pfad: `/usr/local/bin/sync-ispconfig-proxy.sh`
### 2.4 Das Cleanup Script
Pfad: `/usr/local/bin/sync-ispconfig-cleanup.sh
ISPcconfig löscht unabhängig vom Proxyserver auf den clients die apache vhost oder ngingx conf Dateien
Auf dem Proxyserver müssen die nginx .conf Dateien manuell gelöscht werden.
Das Script mit Parameter -e führt dies durch.
Ohne Parameter läuft es im dry-run.
**Derzeit in der Testphase - deshalb zur Sicherheit manuell mit dry-run ausführen.**
Verwaiste nginx .conf Dateien beinträchtigen das System nicht.
## 3. Client Setup (vServer / Apache) ## 3. Client Setup (vServer / Apache)
Die Backends müssen den Proxy als vertrauenswürdig einstufen. Die Backends müssen den Proxy als vertrauenswürdig einstufen.

87
sync-ispconfig-cleanup.sh Normal file → Executable file
View File

@@ -1,22 +1,91 @@
#!/bin/bash #!/bin/bash
# Vergleicht lokale Configs mit der Datenbank und löscht Überreste
source /usr/local/bin/sync-ispconfig-proxy.conf
# Hol alle aktuell aktiven Domains aus der DB # Konfiguration laden
source /usr/local/bin/sync-ispconfig-proxy.conf
PROXY_CONF="/usr/local/bin/proxy_based_server.conf"
# Standardeinstellungen
DRY_RUN=true
CONFIG_DIR="/etc/nginx/conf.d/proxy_generated"
FILES_DELETED=false
# Hilfe-Funktion
show_help() {
cat << EOF
Nutzung: $(basename "$0") [OPTIONEN]
Vergleicht lokale Nginx-Konfigurationen mit der ISPConfig-Datenbank.
Entfernt verwaiste Dateien, sofern sie nicht in der Blocklist stehen.
Optionen:
-e, --execute Führt Löschvorgänge und Nginx-Reload tatsächlich aus.
-h, --help Zeigt diese Hilfe an.
EOF
}
# Parameter-Parsing
while [[ "$#" -gt 0 ]]; do
case $1 in
-e|--execute) DRY_RUN=false ;;
-h|--help) show_help; exit 0 ;;
*) echo "Fehler: Unbekannte Option $1"; show_help; exit 1 ;;
esac
shift
done
if [ "$DRY_RUN" = true ]; then
echo "--- DRY-RUN MODUS: Keine Änderungen am System ---"
fi
# 1. Blocklist extrahieren
BLOCKLIST=$(sed -n '/^\[blocklist\]/,/^\[/p' "$PROXY_CONF" | grep -v '^\[' | grep -v '^#' | sed '/^$/d')
# 2. Aktive Domains aus DB holen
SQL_QUERY="SELECT domain FROM web_domain WHERE active = 'y';" SQL_QUERY="SELECT domain FROM web_domain WHERE active = 'y';"
DB_DOMAINS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "$SQL_QUERY") DB_DOMAINS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "$SQL_QUERY")
# Gehe durch alle Dateien im Proxy-Ordner if [ $? -ne 0 ]; then
for file in /etc/nginx/conf.d/proxy_generated/*.conf; do echo "Fehler: Datenbankverbindung fehlgeschlagen."
exit 1
fi
# 3. Cleanup-Schleife
for file in "$CONFIG_DIR"/*.conf; do
[ -e "$file" ] || continue [ -e "$file" ] || continue
filename=$(basename "$file" .conf) filename=$(basename "$file" .conf)
# Blocklist Check
if echo "$BLOCKLIST" | grep -qxw "$filename"; then
continue
fi
# DB Check
if ! echo "$DB_DOMAINS" | grep -qxw "$filename"; then if ! echo "$DB_DOMAINS" | grep -qxw "$filename"; then
echo "Lösche veraltete Config: $filename" if [ "$DRY_RUN" = true ]; then
echo "[Simuliert] Lösche: $file"
FILES_DELETED=true
else
echo "Lösche veraltete Config: $file"
rm "$file" rm "$file"
# Optional: acme.sh Zertifikate auch entfernen FILES_DELETED=true
# /root/.acme.sh/acme.sh --remove -d "$filename" --ecc fi
fi fi
done done
nginx -t && systemctl reload nginx # 4. Bedingter Nginx Reload
if [ "$FILES_DELETED" = true ]; then
if [ "$DRY_RUN" = true ]; then
echo "[Simuliert] Änderungen gefunden: nginx -t && systemctl reload nginx"
else
echo "Änderungen vorgenommen. Prüfe Nginx Syntax..."
if nginx -t; then
systemctl reload nginx
echo "Nginx erfolgreich neu geladen."
else
echo "Fehler in Nginx-Konfiguration! Reload abgebrochen."
exit 1
fi
fi
else
echo "Keine verwaisten Dateien gefunden. Kein Reload notwendig."
fi