#!/bin/sh
# 一键给云服务器 Caddy 添加 download.liuyun.host 反代 (安全: 先备份+校验+失败回滚)
set -e
BLOCK='download.liuyun.host {
    reverse_proxy 127.0.0.1:18086
}'

# 1) 定位 Caddyfile
CFG=""
[ -f /etc/caddy/Caddyfile ] && CFG=/etc/caddy/Caddyfile
if [ -z "$CFG" ]; then
    CFG=$(ps aux 2>/dev/null | grep -o '\-\-config [^ ]*Caddyfile[^ ]*' | head -1 | awk '{print $2}')
fi

# 2) docker 版 caddy
if [ -z "$CFG" ]; then
    DC=$(docker ps --format '{{.Names}}' 2>/dev/null | grep -i caddy | head -1)
    if [ -n "$DC" ]; then
        if docker exec "$DC" grep -q download.liuyun.host /etc/caddy/Caddyfile 2>/dev/null; then
            echo "ALREADY-CONFIGURED"
            exit 0
        fi
        docker exec "$DC" cp /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak-dl
        docker exec "$DC" sh -c "printf '\n$BLOCK\n' >> /etc/caddy/Caddyfile"
        if docker exec "$DC" caddy validate --config /etc/caddy/Caddyfile >/dev/null 2>&1; then
            docker exec "$DC" caddy reload --config /etc/caddy/Caddyfile && echo "DOCKER-CADDY-OK" && exit 0
        fi
        docker exec "$DC" cp /etc/caddy/Caddyfile.bak-dl /etc/caddy/Caddyfile
        docker exec "$DC" caddy reload --config /etc/caddy/Caddyfile 2>/dev/null || true
        echo "VALIDATE-FAILED-ROLLED-BACK"
        exit 1
    fi
fi

# 3) 宿主机 systemd 版 caddy
if [ -n "$CFG" ] && [ -f "$CFG" ]; then
    if grep -q download.liuyun.host "$CFG"; then
        echo "ALREADY-CONFIGURED"
        exit 0
    fi
    cp "$CFG" "$CFG.bak-dl"
    printf '\n%s\n' "$BLOCK" >> "$CFG"
    if command -v caddy >/dev/null 2>&1 && caddy validate --config "$CFG" >/dev/null 2>&1; then
        caddy reload --config "$CFG" 2>/dev/null || systemctl restart caddy
        echo "HOST-CADDY-OK"
        exit 0
    fi
    if command -v caddy >/dev/null 2>&1; then
        cp "$CFG.bak-dl" "$CFG"
        caddy reload --config "$CFG" 2>/dev/null || systemctl restart caddy
        echo "VALIDATE-FAILED-ROLLED-BACK"
        exit 1
    fi
    systemctl reload caddy 2>/dev/null || systemctl restart caddy
    echo "HOST-CADDY-OK"
    exit 0
fi

echo "CADDY-NOT-FOUND-please-tell-lao-bu"
