Przejdź do treści

Automatyzacja – Zoraxy – White List

  • przez

Analogiczne rozwiązanie z poprzedniego artykułu dla Zoraxy. W tym przypadku trzeba działać na pliku konfiguracyjnym json.

#!/bin/bash
REMOTE="..................."
SAVE_IP_FILE="/opt/zoraxy/conf/access/last_remote_ip.txt"
ACCESS_FILE="/opt/zoraxy/conf/access/default.json"
LTE_LABEL="D......"

NOWY_IP=$(ssh $REMOTE "curl -s --max-time 8 ifconfig.me")
[[ -z "$NOWY_IP" || "$NOWY_IP" =~ [^0-9.] ]] && { echo "Nie pobrano IP"; exit 1; }

echo "Zdalny IP: $NOWY_IP"

if [[ -f "$SAVE_IP_FILE" ]]; then
    LAST_IP=$(cat "$SAVE_IP_FILE" | tr -d '[:space:]')
else
    LAST_IP=""
fi

if [[ -n "$LAST_IP" && "$LAST_IP" != "$NOWY_IP" ]]; then
    echo "Usuwam stare IP z whitelisty: $LAST_IP"
    jq --arg ip "$LAST_IP" 'del(.WhiteListIP[$ip])' "$ACCESS_FILE" > "${ACCESS_FILE}.tmp" \
        && mv "${ACCESS_FILE}.tmp" "$ACCESS_FILE"
fi

echo "Dodaję/aktualizuję IP: $NOWY_IP ($LTE_LABEL)"
jq ".WhiteListIP.\"$NOWY_IP\" = \"$LTE_LABEL\"" "$ACCESS_FILE" > "${ACCESS_FILE}.tmp" \
    && mv "${ACCESS_FILE}.tmp" "$ACCESS_FILE" \
    || { echo "BŁĄD przy zapisie JSON!"; exit 1; }

echo "$NOWY_IP" > "$SAVE_IP_FILE"

echo "Gotowe! Restartuję Zoraxy..."
systemctl restart zoraxy || echo "Nie udało się zrestartować Zoraxy (może nie działa jako serwis?)"

echo "Wszystko OK – IP $NOWY_IP jest na whiteliscie"