Files
IPV4-proxyserver-zu-IPV6-on…/sync-ispconfig-cleanup.sh
2026-01-28 13:57:45 +01:00

92 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# 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';"
DB_DOMAINS=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "$SQL_QUERY")
if [ $? -ne 0 ]; then
echo "Fehler: Datenbankverbindung fehlgeschlagen."
exit 1
fi
# 3. Cleanup-Schleife
for file in "$CONFIG_DIR"/*.conf; do
[ -e "$file" ] || continue
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 [ "$DRY_RUN" = true ]; then
echo "[Simuliert] Lösche: $file"
FILES_DELETED=true
else
echo "Lösche veraltete Config: $file"
rm "$file"
FILES_DELETED=true
fi
fi
done
# 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