Files
geoblocking-python-script/install_aria_geoblock.sh
T

95 lines
3.8 KiB
Bash
Executable File

#!/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)"