#!/bin/bash
set -e

# openclaw frpc + gost backup tunnel deployment
# Usage: sudo bash deploy.sh

echo "=== openclaw frpc+gost backup tunnel deploy ==="

# 1. Download frpc
echo "[1/6] Downloading frpc..."
if [ ! -f /usr/local/bin/frpc ]; then
    cd /tmp
    curl -sL -o frp.tar.gz "https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_linux_amd64.tar.gz"
    tar xzf frp.tar.gz
    cp frp_0.69.1_linux_amd64/frpc /usr/local/bin/
    chmod +x /usr/local/bin/frpc
    rm -rf frp_0.69.1_linux_amd64 frp.tar.gz
    echo "  frpc installed: $(/usr/local/bin/frpc --version)"
else
    echo "  frpc already exists: $(/usr/local/bin/frpc --version)"
fi

# 2. Download gost
echo "[2/6] Downloading gost..."
if [ ! -f /usr/local/bin/gost ]; then
    cd /tmp
    curl -sL -o gost.zip "https://ghfast.top/https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.zip"
    apt-get install -y unzip > /dev/null 2>&1 || true
    unzip -o gost.zip -d gost_tmp
    cp gost_tmp/gost-linux-amd64-2.11.5 /usr/local/bin/gost
    chmod +x /usr/local/bin/gost
    rm -rf gost_tmp gost.zip
    echo "  gost installed"
else
    echo "  gost already exists"
fi

# 3. Create frpc config
echo "[3/6] Writing frpc config..."
mkdir -p /etc/frp
cat > /etc/frp/frpc.toml << 'CONF'
# frpc config - openclaw backup tunnel to kaka
serverAddr = "106.54.16.63"
serverPort = 7000
auth.method = "token"
auth.token = "25d77917e4e7b98ac0c8d0c4c1d207d62071318084e76151"

# openclaw backup: gost SOCKS5 on local 1081 -> kaka remote 1081
[[proxies]]
name = "socks5-openclaw"
type = "tcp"
localIP = "127.0.0.1"
localPort = 1081
remotePort = 1081
CONF
echo "  config written to /etc/frp/frpc.toml"

# 4. Install systemd services
echo "[4/6] Installing systemd services..."
cat > /etc/systemd/system/gost-openclaw.service << 'SVC'
[Unit]
Description=Gost SOCKS5 Proxy (openclaw backup, port 1081)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/gost -L socks5://127.0.0.1:1081

[Install]
WantedBy=multi-user.target
SVC

cat > /etc/systemd/system/frpc-openclaw.service << 'SVC'
[Unit]
Description=Frp Client (openclaw backup tunnel to kaka)
After=gost-openclaw.service network-online.target
Wants=gost-openclaw.service network-online.target

[Service]
Type=simple
User=root
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml

[Install]
WantedBy=multi-user.target
SVC

systemctl daemon-reload
echo "  services installed"

# 5. Enable and start
echo "[5/6] Starting services..."
systemctl enable gost-openclaw frpc-openclaw
systemctl restart gost-openclaw
sleep 1
systemctl restart frpc-openclaw
sleep 2

# 6. Verify
echo "[6/6] Verifying..."
echo "  gost status:"
systemctl is-active gost-openclaw
echo "  frpc status:"
systemctl is-active frpc-openclaw
echo "  port 1081:"
ss -tlnp | grep 1081 || echo "  (not listening yet)"

echo ""
echo "=== Deploy complete ==="
echo "gost: SOCKS5 on 127.0.0.1:1081"
echo "frpc: tunnel 1081 -> kaka:1081"
echo ""
echo "Logs:"
echo "  journalctl -u gost-openclaw -f"
echo "  journalctl -u frpc-openclaw -f"
