Testserver-Installation optional machen (--with-testserver)

This commit is contained in:
ARIA
2026-07-21 13:34:14 +02:00
parent 7d8aeabbd2
commit 0cb0594233
2 changed files with 79 additions and 21 deletions
+19 -4
View File
@@ -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).
+60 -17
View File
@@ -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)"