cleanup und INSTALL
This commit is contained in:
13
INSTALL.md
13
INSTALL.md
@@ -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
87
sync-ispconfig-cleanup.sh
Normal file → Executable 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
|
||||||
|
|||||||
Reference in New Issue
Block a user