@echo off
setlocal enabledelayedexpansion
color bc
echo ========================================
echo         欢迎使用打洞鼠
echo   请确认是否已经开启路由器UpNP功能
echo 建议关闭Windows防火墙否则可能导致端口无法访问
echo 需要删除记忆数据请删除文件 jiyi.txt
echo     请勿泄露 您的 唯一 UUID！！！
echo ========================================
:: 核心配置
set "EXE=natmouse.exe"
set "CONFIG=jiyi.txt"
set "UUID_FILE=uuid.json"

:: 读取UUID
set "UUID="
for /f "tokens=2 delims=:," %%a in ('type "%UUID_FILE%" 2^>nul') do (
    set "UUID=%%a"
    set "UUID=!UUID:"=!"
    set "UUID=!UUID: =!"
)

:: 读取配置
set "fValue="
set "serviceAddr="
set "rememberService="  :: 是否记忆服务地址的标记
if exist "%CONFIG%" (
    for /f "tokens=1,* delims==" %%a in (%CONFIG%) do (
        if /i "%%a"=="fValue" set "fValue=%%b"
        if /i "%%a"=="serviceAddr" set "serviceAddr=%%b"
        if /i "%%a"=="rememberService" set "rememberService=%%b"
    )
)

:: 询问重启选项
if "!fValue!"=="" (
    echo.
    echo 公网心跳包检测失败是否自动重启？
    set /p "restartChoice=输入 y 启用，其他键禁用："
    if /i "!restartChoice!"=="y" (
        set "fValue=1"
        echo 已启用自动重启
    ) else (
        set "fValue=0"
        echo 已禁用自动重启
    )
)

:: 询问服务地址（先输入地址，再决定是否记忆）
:inputService
:: 首次输入或不记忆时，强制输入地址
if "!rememberService!"=="0" (
    set "serviceAddr="
    set /p "serviceAddr=请输入本地服务地址（如 127.0.0.1:25565)："
) else if "!serviceAddr!"=="" (
    :: 记忆模式但无地址时，首次输入
    set /p "serviceAddr=请输入本地服务地址（如 127.0.0.1:25565）："
)
if "!serviceAddr!"=="" (
    echo 服务地址不能为空，请重新输入！
    goto inputService
)

:: 【关键调整】在输入服务地址后，询问是否记忆（仅首次或无标记时）
if "!rememberService!"=="" (
    echo.
    echo 您输入的服务地址为：!serviceAddr!
    set /p "rememberChoice=是否记忆该服务地址？（输入 y 记忆，其他键不记忆）："
    if /i "!rememberChoice!"=="y" (
        set "rememberService=1"
        echo 已选择：记忆服务地址
    ) else (
        set "rememberService=0"
        echo 已选择：不记忆服务地址
    )
)

:: 保存配置（根据记忆选择决定是否保存）
if "!rememberService!"=="1" (
    echo fValue=!fValue! > "%CONFIG%"
    echo serviceAddr=!serviceAddr! >> "%CONFIG%"
    echo rememberService=!rememberService! >> "%CONFIG%"
) else (
    :: 不记忆服务地址时，仅保存重启选项和记忆标记
    echo fValue=!fValue! > "%CONFIG%"
    echo rememberService=!rememberService! >> "%CONFIG%"
)

:: 主启动逻辑
:LOOP
title NAtMouse 超级打洞鼠 运行中 - UUID：!UUID!
echo.
echo ======================================
echo         欢迎使用打洞鼠
echo   请确认是否已经开启路由器UpNP功能
echo ======================================
echo 当前UUID：!UUID!
%EXE% tcp --mode proxy -f !fValue! --service !serviceAddr!

:: 处理退出码
set "EXIT_CODE=!ERRORLEVEL!"
if !EXIT_CODE! equ 0 (
    echo 程序正常退出，按任意键关闭...
    pause >nul
    exit /b 0
) else (
    echo 程序异常退出（代码!EXIT_CODE!），5秒后重启...
    timeout /t 5 /nobreak >nul
    goto LOOP
)