Namen 'ARIA' aus Dateinamen und Texten entfernen (nur noch 'geoblock')
This commit is contained in:
Executable
+137
@@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env bash
|
||||
# Geoblocking - Installer
|
||||
#
|
||||
# Installiert geoblock.py + .ini nach /opt/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_geoblock.sh [--with-testserver] [ZIELVERZEICHNIS]
|
||||
#
|
||||
# Der kleine Test-Webserver (geoblock_testserver.py +
|
||||
# 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_geoblock.sh
|
||||
# sudo ./install_geoblock.sh --with-testserver
|
||||
# sudo ./install_geoblock.sh --with-testserver /opt/geoblock
|
||||
# sudo ./install_geoblock.sh /opt/geoblock
|
||||
#
|
||||
# Benoetigt im selben Verzeichnis:
|
||||
# geoblock.py
|
||||
# geoblock.ini
|
||||
# geoblock.service
|
||||
# geoblock.timer
|
||||
# (nur bei --with-testserver:)
|
||||
# geoblock_testserver.py
|
||||
# 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_geoblock.sh)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
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/geoblock}"
|
||||
LOG_DIR="/var/log/geoblock"
|
||||
|
||||
REQUIRED_FILES=(geoblock.py geoblock.ini geoblock.service geoblock.timer)
|
||||
if [[ "$WITH_TESTSERVER" -eq 1 ]]; then
|
||||
REQUIRED_FILES+=(geoblock_testserver.py 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
|
||||
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/geoblock.py" "$INSTALL_DIR/geoblock.py"
|
||||
chmod 755 "$INSTALL_DIR/geoblock.py"
|
||||
|
||||
if [[ -f "$INSTALL_DIR/geoblock.ini" ]]; then
|
||||
echo "==> Bestehende $INSTALL_DIR/geoblock.ini gefunden - wird NICHT ueberschrieben."
|
||||
cp "$SRC_DIR/geoblock.ini" "$INSTALL_DIR/geoblock.ini.example"
|
||||
echo " Neue Beispiel-Config liegt unter $INSTALL_DIR/geoblock.ini.example (zum Vergleich)."
|
||||
else
|
||||
cp "$SRC_DIR/geoblock.ini" "$INSTALL_DIR/geoblock.ini"
|
||||
echo " -> bitte $INSTALL_DIR/geoblock.ini pruefen/anpassen (Laenderliste!)."
|
||||
fi
|
||||
|
||||
echo "==> Lege Log-Verzeichnis an: $LOG_DIR"
|
||||
mkdir -p "$LOG_DIR"
|
||||
chmod 750 "$LOG_DIR"
|
||||
|
||||
echo "==> Installiere systemd-Units (Geoblock-Timer)"
|
||||
sed "s#__INSTALL_DIR__#$INSTALL_DIR#g" "$SRC_DIR/geoblock.service" \
|
||||
> /etc/systemd/system/geoblock.service
|
||||
cp "$SRC_DIR/geoblock.timer" /etc/systemd/system/geoblock.timer
|
||||
|
||||
if [[ "$WITH_TESTSERVER" -eq 1 ]]; then
|
||||
echo "==> --with-testserver gesetzt: installiere Test-Webserver nach $INSTALL_DIR"
|
||||
cp "$SRC_DIR/geoblock_testserver.py" "$INSTALL_DIR/geoblock_testserver.py"
|
||||
chmod 755 "$INSTALL_DIR/geoblock_testserver.py"
|
||||
|
||||
sed "s#__INSTALL_DIR__#$INSTALL_DIR#g" "$SRC_DIR/geoblock-testserver.service" \
|
||||
> /etc/systemd/system/geoblock-testserver.service
|
||||
else
|
||||
echo "==> Test-Webserver wird NICHT installiert (Option --with-testserver nicht angegeben)."
|
||||
fi
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now geoblock.timer
|
||||
|
||||
if [[ "$WITH_TESTSERVER" -eq 1 ]]; then
|
||||
systemctl enable --now geoblock-testserver.service
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "==> Fertig."
|
||||
echo " Config anpassen: $INSTALL_DIR/geoblock.ini"
|
||||
echo " Jetzt sofort testen: systemctl start geoblock.service && journalctl -u geoblock.service -f"
|
||||
echo " Timer-Status: systemctl list-timers geoblock.timer"
|
||||
echo " Naechste/letzte Läufe: systemctl status geoblock.timer"
|
||||
echo " Log-Datei: $LOG_DIR/geoblock.log"
|
||||
if [[ "$WITH_TESTSERVER" -eq 1 ]]; then
|
||||
echo " Test-Webserver: systemctl status geoblock-testserver.service"
|
||||
echo " Port/Bind/Log siehe [testserver] in $INSTALL_DIR/geoblock.ini"
|
||||
else
|
||||
echo " Test-Webserver: nicht installiert (spaeter nachruesten mit: sudo $0 --with-testserver $INSTALL_DIR)"
|
||||
fi
|
||||
echo " checkmk-Plugin: siehe geoblock_checkmk im Repo (manuell kopieren, README beachten)"
|
||||
Reference in New Issue
Block a user