From 0cb05942330f26abe66061f0b60be25e6b4bef02 Mon Sep 17 00:00:00 2001 From: ARIA Date: Tue, 21 Jul 2026 13:34:14 +0200 Subject: [PATCH] Testserver-Installation optional machen (--with-testserver) --- README.md | 23 +++++++++--- install_aria_geoblock.sh | 77 +++++++++++++++++++++++++++++++--------- 2 files changed, 79 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 2edd745..8821c02 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ und droppt Pakete bereits auf Netzwerk-Ebene. | `aria_geoblock.ini` | Konfiguration (Laenderliste, Chain, Logging, ...) | | `aria-geoblock.service` | systemd-Unit, fuehrt `--apply` aus | | `aria-geoblock.timer` | systemd-Timer: beim Booten + einmal taeglich | -| `install_aria_geoblock.sh` | Installer: kopiert alles nach `/opt/aria-geoblock`, richtet Timer + Testserver ein | +| `install_aria_geoblock.sh` | Installer: kopiert alles nach `/opt/aria-geoblock`, richtet Timer ein (Testserver optional, siehe unten) | | `aria_geoblock_checkmk` | checkmk local-check Plugin (manuell kopieren) | | `aria_geoblock_testserver.py` | Kleiner Test-Webserver, um die Regeln von aussen zu pruefen | | `aria-geoblock-testserver.service` | systemd-Unit, startet den Test-Webserver dauerhaft | @@ -37,8 +37,21 @@ Das: (bestehende `.ini` wird NICHT ueberschrieben, neue landet als `.example`) - legt `/var/log/aria_geoblock/` an - installiert + aktiviert `aria-geoblock.timer` (`systemctl enable --now`) -- installiert + startet `aria-geoblock-testserver.service` (Test-Webserver, - siehe Abschnitt "Verbindungstest" unten) + +**Der Test-Webserver wird standardmaessig NICHT installiert.** Wer ihn +braucht (siehe Abschnitt "Verbindungstest" unten), haengt die Option +`--with-testserver` an: + +```bash +sudo ./install_aria_geoblock.sh --with-testserver +# optional mit eigenem Zielverzeichnis: +sudo ./install_aria_geoblock.sh --with-testserver /opt/aria-geoblock +``` + +Nur dann wird `aria_geoblock_testserver.py` kopiert und +`aria-geoblock-testserver.service` installiert + gestartet (offener Port +8899 standardmaessig). Ohne die Option bleibt der Port zu — nachtraeglich +installieren geht jederzeit per erneutem Aufruf mit `--with-testserver`. Danach `/opt/aria-geoblock/aria_geoblock.ini` anpassen (Laenderliste!) und einmal manuell testen: @@ -80,7 +93,9 @@ Request. Er weiss selbst NICHTS von Laendern/Blocklisten — der eigentliche Test ist der Netzwerkeffekt: **geblockte** IPs erreichen ihn gar nicht erst (iptables droppt vor dem TCP-Handshake), **erlaubte** IPs bekommen die Seite. -Laeuft nach `install_aria_geoblock.sh` automatisch als +Wird nur installiert, wenn `install_aria_geoblock.sh` mit der Option +`--with-testserver` aufgerufen wurde (Default: nicht installiert, siehe +Abschnitt "Installation" oben). Ist er installiert, laeuft er als `aria-geoblock-testserver.service` auf Port `8899` (einstellbar unter `[testserver]` in `aria_geoblock.ini`, siehe unten). diff --git a/install_aria_geoblock.sh b/install_aria_geoblock.sh index 2606368..4983951 100755 --- a/install_aria_geoblock.sh +++ b/install_aria_geoblock.sh @@ -7,17 +7,27 @@ # aktualisiert. # # Nutzung (als root, im Verzeichnis mit allen Repo-Dateien): -# sudo ./install_aria_geoblock.sh [ZIELVERZEICHNIS] +# sudo ./install_aria_geoblock.sh [--with-testserver] [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. +# Der kleine Test-Webserver (aria_geoblock_testserver.py + +# aria-geoblock-testserver.service), gegen den man von aussen connecten +# kann um die Geoblocking-Regeln zu pruefen, wird NUR installiert wenn +# die Option --with-testserver angegeben wird. Ohne die Option passiert +# in Sachen Testserver gar nichts (kein Copy, kein systemd-Unit, kein +# offener Port). +# +# Beispiele: +# sudo ./install_aria_geoblock.sh +# sudo ./install_aria_geoblock.sh --with-testserver +# sudo ./install_aria_geoblock.sh --with-testserver /opt/aria-geoblock +# sudo ./install_aria_geoblock.sh /opt/aria-geoblock # # Benoetigt im selben Verzeichnis: # aria_geoblock.py # aria_geoblock.ini # aria-geoblock.service # aria-geoblock.timer +# (nur bei --with-testserver:) # aria_geoblock_testserver.py # aria-geoblock-testserver.service # @@ -31,11 +41,32 @@ if [[ $EUID -ne 0 ]]; then fi SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -INSTALL_DIR="${1:-/opt/aria-geoblock}" + +WITH_TESTSERVER=0 +INSTALL_DIR="" +for arg in "$@"; do + case "$arg" in + --with-testserver) + WITH_TESTSERVER=1 + ;; + -h|--help) + grep '^# ' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' + exit 0 + ;; + *) + INSTALL_DIR="$arg" + ;; + esac +done +INSTALL_DIR="${INSTALL_DIR:-/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 +REQUIRED_FILES=(aria_geoblock.py aria_geoblock.ini aria-geoblock.service aria-geoblock.timer) +if [[ "$WITH_TESTSERVER" -eq 1 ]]; then + REQUIRED_FILES+=(aria_geoblock_testserver.py aria-geoblock-testserver.service) +fi + +for f in "${REQUIRED_FILES[@]}"; do if [[ ! -f "$SRC_DIR/$f" ]]; then echo "FEHLER: $f fehlt in $SRC_DIR - bitte komplettes Repo verwenden." >&2 exit 1 @@ -67,20 +98,28 @@ 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" +echo "==> Installiere systemd-Units (Geoblock-Timer)" 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 + +if [[ "$WITH_TESTSERVER" -eq 1 ]]; then + echo "==> --with-testserver gesetzt: 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" + + sed "s#__INSTALL_DIR__#$INSTALL_DIR#g" "$SRC_DIR/aria-geoblock-testserver.service" \ + > /etc/systemd/system/aria-geoblock-testserver.service +else + echo "==> Test-Webserver wird NICHT installiert (Option --with-testserver nicht angegeben)." +fi systemctl daemon-reload systemctl enable --now aria-geoblock.timer -systemctl enable --now aria-geoblock-testserver.service + +if [[ "$WITH_TESTSERVER" -eq 1 ]]; then + systemctl enable --now aria-geoblock-testserver.service +fi echo "" echo "==> Fertig." @@ -89,6 +128,10 @@ echo " Jetzt sofort testen: systemctl start aria-geoblock.service && journal 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" +if [[ "$WITH_TESTSERVER" -eq 1 ]]; then + echo " Test-Webserver: systemctl status aria-geoblock-testserver.service" + echo " Port/Bind/Log siehe [testserver] in $INSTALL_DIR/aria_geoblock.ini" +else + echo " Test-Webserver: nicht installiert (spaeter nachruesten mit: sudo $0 --with-testserver $INSTALL_DIR)" +fi echo " checkmk-Plugin: siehe aria_geoblock_checkmk im Repo (manuell kopieren, README beachten)"