#!/bin/bash
set -e

# Ensure root
if [ "$EUID" -ne 0 ]; then
  echo "❌ Please run as root."
  exit 1
fi



echo "🛠️ Creating VPN watchdog script..."

WATCHDOG="/usr/local/bin/check-vpn.sh"
cat << 'EOF' > "$WATCHDOG"
#!/bin/bash

VPN_IF="tun0"
PING_TARGET="google.co.uk"
LOGFILE="/var/log/check-vpn.log"

while true; do
    echo "$(date) - Running VPN check..." >> "$LOGFILE"

    if ip link show "$VPN_IF" > /dev/null 2>&1; then
        if ping -I "$VPN_IF" -c 3 -W 5 "$PING_TARGET" > /dev/null 2>&1; then
            echo "$(date) - VPN is up and ping successful." >> "$LOGFILE"
        else
            echo "$(date) - VPN interface present but ping failed. Restarting NetworkManager..." >> "$LOGFILE"
            systemctl restart NetworkManager
        fi
    else
        echo "$(date) - VPN interface $VPN_IF not found. Restarting NetworkManager..." >> "$LOGFILE"
        systemctl restart NetworkManager
    fi

    sleep 60
done
EOF

chmod +x "$WATCHDOG"

echo "✅ Watchdog script created at $WATCHDOG"

echo "🛠️ Creating systemd service for watchdog..."

SERVICE="/etc/systemd/system/check-vpn.service"
cat << EOF > "$SERVICE"
[Unit]
Description=VPN Watchdog Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=$WATCHDOG
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable check-vpn.service
systemctl start check-vpn.service

echo "✅ VPN watchdog service installed and started."
echo "Logs available at /var/log/check-vpn.log"