#!/usr/bin/env bash # ARIA Geoblocking - Installer # # Installiert aria_geoblock.py + .ini nach /opt/aria-geoblock (oder ein # anderes Zielverzeichnis), legt das Log-Verzeichnis an und richtet einen # systemd-Timer ein, der den Block beim Systemstart UND einmal taeglich # aktualisiert. # # Nutzung (als root, im Verzeichnis mit allen Repo-Dateien): # sudo ./install_aria_geoblock.sh [ZIELVERZEICHNIS] # # Installiert ausserdem optional einen kleinen Test-Webserver # (aria_geoblock_testserver.py + aria-geoblock-testserver.service), gegen # den man von aussen connecten kann um die Geoblocking-Regeln zu pruefen. # # Benoetigt im selben Verzeichnis: # aria_geoblock.py # aria_geoblock.ini # aria-geoblock.service # aria-geoblock.timer # aria_geoblock_testserver.py # aria-geoblock-testserver.service # # Voraussetzungen auf dem Host: python3, iptables, ipset, systemd. set -euo pipefail if [[ $EUID -ne 0 ]]; then echo "Bitte als root ausfuehren (sudo ./install_aria_geoblock.sh)." >&2 exit 1 fi SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" INSTALL_DIR="${1:-/opt/aria-geoblock}" LOG_DIR="/var/log/aria_geoblock" for f in aria_geoblock.py aria_geoblock.ini aria-geoblock.service aria-geoblock.timer \ aria_geoblock_testserver.py aria-geoblock-testserver.service; do if [[ ! -f "$SRC_DIR/$f" ]]; then echo "FEHLER: $f fehlt in $SRC_DIR - bitte komplettes Repo verwenden." >&2 exit 1 fi done for bin in python3 iptables ipset systemctl; do if ! command -v "$bin" >/dev/null 2>&1; then echo "FEHLER: '$bin' ist nicht installiert. Bitte nachinstallieren (z.B. apt install iptables ipset)." >&2 exit 1 fi done echo "==> Installiere Script + Config nach $INSTALL_DIR" mkdir -p "$INSTALL_DIR" cp "$SRC_DIR/aria_geoblock.py" "$INSTALL_DIR/aria_geoblock.py" chmod 755 "$INSTALL_DIR/aria_geoblock.py" if [[ -f "$INSTALL_DIR/aria_geoblock.ini" ]]; then echo "==> Bestehende $INSTALL_DIR/aria_geoblock.ini gefunden - wird NICHT ueberschrieben." cp "$SRC_DIR/aria_geoblock.ini" "$INSTALL_DIR/aria_geoblock.ini.example" echo " Neue Beispiel-Config liegt unter $INSTALL_DIR/aria_geoblock.ini.example (zum Vergleich)." else cp "$SRC_DIR/aria_geoblock.ini" "$INSTALL_DIR/aria_geoblock.ini" echo " -> bitte $INSTALL_DIR/aria_geoblock.ini pruefen/anpassen (Laenderliste!)." fi echo "==> Lege Log-Verzeichnis an: $LOG_DIR" mkdir -p "$LOG_DIR" chmod 750 "$LOG_DIR" echo "==> Installiere Test-Webserver nach $INSTALL_DIR" cp "$SRC_DIR/aria_geoblock_testserver.py" "$INSTALL_DIR/aria_geoblock_testserver.py" chmod 755 "$INSTALL_DIR/aria_geoblock_testserver.py" echo "==> Installiere systemd-Units" sed "s#__INSTALL_DIR__#$INSTALL_DIR#g" "$SRC_DIR/aria-geoblock.service" \ > /etc/systemd/system/aria-geoblock.service cp "$SRC_DIR/aria-geoblock.timer" /etc/systemd/system/aria-geoblock.timer sed "s#__INSTALL_DIR__#$INSTALL_DIR#g" "$SRC_DIR/aria-geoblock-testserver.service" \ > /etc/systemd/system/aria-geoblock-testserver.service systemctl daemon-reload systemctl enable --now aria-geoblock.timer systemctl enable --now aria-geoblock-testserver.service echo "" echo "==> Fertig." echo " Config anpassen: $INSTALL_DIR/aria_geoblock.ini" echo " Jetzt sofort testen: systemctl start aria-geoblock.service && journalctl -u aria-geoblock.service -f" echo " Timer-Status: systemctl list-timers aria-geoblock.timer" echo " Naechste/letzte Läufe: systemctl status aria-geoblock.timer" echo " Log-Datei: $LOG_DIR/aria_geoblock.log" echo " Test-Webserver: systemctl status aria-geoblock-testserver.service" echo " Port/Bind/Log siehe [testserver] in $INSTALL_DIR/aria_geoblock.ini" echo " checkmk-Plugin: siehe aria_geoblock_checkmk im Repo (manuell kopieren, README beachten)"