Namen 'ARIA' aus Dateinamen und Texten entfernen (nur noch 'geoblock')

This commit is contained in:
ARIA
2026-07-21 11:47:02 +00:00
parent 38ccdc2eff
commit 8d5908ac78
11 changed files with 264 additions and 264 deletions
+123
View File
@@ -0,0 +1,123 @@
#!/usr/bin/env bash
# Geoblocking - Deinstaller
#
# Macht die Installation von install_geoblock.sh wieder rueckgaengig.
# Standardmaessig wird ALLES entfernt: Timer/Service, ggf. der Testserver,
# die iptables/ipset-Regeln und das Installationsverzeichnis. Mit
# --testserver-only wird NUR der Test-Webserver entfernt, das eigentliche
# Geoblocking (Timer, Regeln, Config) bleibt unangetastet.
#
# Nutzung (als root):
# sudo ./uninstall_geoblock.sh [--testserver-only] [--purge-logs] [ZIELVERZEICHNIS]
#
# Beispiele:
# sudo ./uninstall_geoblock.sh # alles runter
# sudo ./uninstall_geoblock.sh --testserver-only # nur Testserver runter
# sudo ./uninstall_geoblock.sh --purge-logs # alles + Logs loeschen
# sudo ./uninstall_geoblock.sh /opt/geoblock # abweichendes Zielverzeichnis
#
# Ohne --purge-logs bleibt /var/log/geoblock erhalten (falls vorhanden),
# damit alte Laeufe/Fehler weiter nachvollziehbar sind.
#
# Ohne --testserver-only werden VOR dem Entfernen der Regeln automatisch
# "geoblock.py --remove" ausgefuehrt, damit iptables/ipset sauber
# aufgeraeumt werden (kein verwaistes DROP, kein verwaistes ipset).
set -euo pipefail
if [[ $EUID -ne 0 ]]; then
echo "Bitte als root ausfuehren (sudo ./uninstall_geoblock.sh)." >&2
exit 1
fi
TESTSERVER_ONLY=0
PURGE_LOGS=0
INSTALL_DIR=""
for arg in "$@"; do
case "$arg" in
--testserver-only)
TESTSERVER_ONLY=1
;;
--purge-logs)
PURGE_LOGS=1
;;
-h|--help)
grep '^# ' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
exit 0
;;
*)
INSTALL_DIR="$arg"
;;
esac
done
INSTALL_DIR="${INSTALL_DIR:-/opt/geoblock}"
LOG_DIR="/var/log/geoblock"
stop_disable_rm_unit() {
local unit="$1"
if systemctl list-unit-files "$unit" >/dev/null 2>&1 && systemctl list-unit-files "$unit" | grep -q "$unit"; then
echo "==> Stoppe/deaktiviere $unit"
systemctl stop "$unit" >/dev/null 2>&1 || true
systemctl disable "$unit" >/dev/null 2>&1 || true
fi
if [[ -f "/etc/systemd/system/$unit" ]]; then
rm -f "/etc/systemd/system/$unit"
fi
}
# --- Nur Testserver entfernen -----------------------------------------------
if [[ "$TESTSERVER_ONLY" -eq 1 ]]; then
echo "==> --testserver-only: entferne NUR den Test-Webserver, Geoblocking bleibt aktiv"
stop_disable_rm_unit "geoblock-testserver.service"
rm -f "$INSTALL_DIR/geoblock_testserver.py"
systemctl daemon-reload
echo ""
echo "==> Fertig. Testserver entfernt, Geoblock-Timer/Regeln unveraendert."
exit 0
fi
# --- Komplett-Deinstallation -------------------------------------------------
echo "==> Deinstalliere Geoblocking komplett ($INSTALL_DIR)"
# Testserver zuerst (falls vorhanden), damit kein Dienst mehr auf die
# Config/das Verzeichnis zugreift, waehrend wir aufraeumen.
stop_disable_rm_unit "geoblock-testserver.service"
rm -f "$INSTALL_DIR/geoblock_testserver.py"
# iptables/ipset-Regeln sauber abbauen, SOLANGE Script+Config noch da sind.
if [[ -f "$INSTALL_DIR/geoblock.py" && -f "$INSTALL_DIR/geoblock.ini" ]]; then
echo "==> Entferne iptables/ipset-Regeln (geoblock.py --remove)"
if command -v python3 >/dev/null 2>&1; then
python3 "$INSTALL_DIR/geoblock.py" --config "$INSTALL_DIR/geoblock.ini" --remove || \
echo "WARNUNG: --remove ist fehlgeschlagen - iptables/ipset ggf. manuell pruefen (iptables -L, ipset list)." >&2
else
echo "WARNUNG: python3 nicht gefunden - Regeln konnten nicht automatisch entfernt werden. Manuell pruefen (iptables -L, ipset list)." >&2
fi
else
echo "WARNUNG: $INSTALL_DIR/geoblock.py oder .ini nicht gefunden - ueberspringe automatischen Regel-Abbau. Manuell pruefen (iptables -L, ipset list)." >&2
fi
echo "==> Stoppe/deaktiviere Timer + Service"
stop_disable_rm_unit "geoblock.timer"
stop_disable_rm_unit "geoblock.service"
systemctl daemon-reload
echo "==> Entferne Installationsverzeichnis $INSTALL_DIR"
rm -rf "$INSTALL_DIR"
if [[ "$PURGE_LOGS" -eq 1 ]]; then
echo "==> --purge-logs gesetzt: entferne $LOG_DIR"
rm -rf "$LOG_DIR"
else
if [[ -d "$LOG_DIR" ]]; then
echo "==> Logs bleiben erhalten: $LOG_DIR (mit --purge-logs zusaetzlich loeschen)"
fi
fi
echo ""
echo "==> Fertig. Geoblocking wurde komplett deinstalliert."
echo " Kurze Kontrolle falls gewuenscht:"
echo " iptables -L -n | grep -i geoblock"
echo " ipset list -n | grep -i geoblock"
echo " systemctl list-timers | grep -i geoblock"