#!/bin/sh
#
# Miner10KW 开机自启配置脚本
# 用法:
#   ./setup_autostart.sh
#   ./setup_autostart.sh start   (立即启动)
#   ./setup_autostart.sh stop    (停止)
#   ./setup_autostart.sh status  (查看状态)
#

GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
log_info()  { echo -e "${GREEN}[INFO]${NC}  $1"; }
log_warn()  { echo -e "${YELLOW}[WARN]${NC}  $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
log_ok()    { echo -e "${GREEN}[ OK]${NC}  $1"; }

INIT_SCRIPT="/etc/init.d/Miner10KW"
BIN="/usr/bin/Miner10KW"

# ========================================
# 配置本地 IP 为 192.168.21.1
# ========================================
configure_network() {
    CURRENT_IP=$(uci get network.lan.ipaddr 2>/dev/null)
    if [ "$CURRENT_IP" = "192.168.21.1" ]; then
        log_ok "本地 IP 已是 192.168.21.1，跳过配置"
        return
    fi
    log_info "配置本地 IP 为 192.168.21.1 ..."
    uci set network.lan.ipaddr='192.168.21.1'
    uci commit network
    /etc/init.d/network restart
    sleep 5
    log_ok "本地 IP 已配置为 192.168.21.1"
}

# ========================================
# 安装 init 脚本
# ========================================
install_init_script() {
    log_info "创建 /etc/init.d/Miner10KW ..."

    cat > "$INIT_SCRIPT" << 'INIT_EOF'
#!/bin/sh /etc/rc.common
#
# Miner10KW - Liquid Cooling Mining Control System
#

START=99
STOP=10

USE_PROCD=1
PROG=/usr/bin/Miner10KW

start_service() {
    procd_open_instance
    procd_set_param command "$PROG"
    procd_set_param respawn 3600 5 60
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}

service_triggers() {
    procd_add_reload_trigger "Miner10KW"
}

reload_service() {
    stop
    start
}
INIT_EOF

    chmod +x "$INIT_SCRIPT"
    log_ok "init 脚本已创建"
}

# ========================================
# 启用开机自启
# ========================================
enable_autostart() {
    log_info "启用开机自启..."
    "$INIT_SCRIPT" enable
    log_ok "已启用 (START=99)"
}

# ========================================
# 主流程
# ========================================
main() {
    echo ""
    echo "======================================"
    echo "  Miner10KW 开机自启配置"
    echo "======================================"
    echo ""

    [ "$(id -u)" -ne 0 ] && log_error "请使用 root 权限" && exit 1

    # 检查二进制
    if [ ! -f "$BIN" ]; then
        log_error "${BIN} 不存在！请先安装 Miner10KW.ipk"
        exit 1
    fi
    log_ok "检测到 ${BIN}"

    # 配置网络 (先配网络，因为 network restart 会影响后续操作)
    configure_network

    # 安装 init 脚本
    install_init_script

    # 启用开机自启
    enable_autostart

    # 处理命令行参数
    case "${1:-}" in
        start)
            log_info "立即启动服务..."
            "$INIT_SCRIPT" start
            sleep 1
            ;;
        stop)
            log_info "停止服务..."
            "$INIT_SCRIPT" stop
            sleep 1
            ;;
        restart)
            log_info "重启服务..."
            "$INIT_SCRIPT" restart
            sleep 1
            ;;
    esac

    # 显示状态
    echo ""
    echo "========== 服务状态 =========="
    if [ -f "$INIT_SCRIPT" ]; then
        "$INIT_SCRIPT" status 2>/dev/null || true
    fi
    echo ""
    ps | grep -E "Miner10KW" | grep -v grep || log_warn "进程未运行"
    echo ""

    echo "--- 常用命令 ---"
    echo "  启动: /etc/init.d/Miner10KW start"
    echo "  停止: /etc/init.d/Miner10KW stop"
    echo "  重启: /etc/init.d/Miner10KW restart"
    echo "  状态: /etc/init.d/Miner10KW status"
    echo "  日志: logread | grep Miner10KW"
    echo ""
    log_info "完成！重启设备后 Miner10KW 将自动启动。"
}

main "$@"
