GameFilter ports selection

This commit is contained in:
Flowseal committed 2026-09-20 11:19:30 +03:00
1 parent 6cec828910
commit 23849617df
1 file changed
+130 -37
+130 -37
View File
@@ -731,35 +731,51 @@ goto menu
chcp 437 > nul
set "gameFlagFile=%~dp0utils\game_filter.enabled"
set "GameFilterMode=disabled"
set "GameFilterTCPRange=1024-65535"
set "GameFilterUDPRange=1024-65535"
set "GameFilterStatus=disabled"
set "GameFilter=12"
set "GameFilterTCP=12"
set "GameFilterUDP=12"
if not exist "%gameFlagFile%" (
set "GameFilterStatus=disabled"
set "GameFilter=12"
set "GameFilterTCP=12"
set "GameFilterUDP=12"
exit /b
if not exist "%gameFlagFile%" exit /b
set "GameFilterTCPCandidate="
set "GameFilterUDPCandidate="
for /f "usebackq tokens=1,* delims==" %%A in ("%gameFlagFile%") do (
if /i "%%A"=="mode" set "GameFilterMode=%%B"
if /i "%%A"=="all" set "GameFilterMode=all"
if /i "%%A"=="udp" (
if "%%B"=="" (set "GameFilterMode=udp") else set "GameFilterUDPCandidate=%%B"
)
if /i "%%A"=="tcp" (
if "%%B"=="" (set "GameFilterMode=tcp") else set "GameFilterTCPCandidate=%%B"
)
)
set "GameFilterMode="
for /f "usebackq delims=" %%A in ("%gameFlagFile%") do (
if not defined GameFilterMode set "GameFilterMode=%%A"
)
call :validate_game_filter_range "%GameFilterTCPCandidate%"
if defined ValidatedGameFilterRange set "GameFilterTCPRange=%ValidatedGameFilterRange%"
call :validate_game_filter_range "%GameFilterUDPCandidate%"
if defined ValidatedGameFilterRange set "GameFilterUDPRange=%ValidatedGameFilterRange%"
if /i "%GameFilterMode%"=="all" (
set "GameFilterStatus=enabled (TCP and UDP)"
set "GameFilter=1024-65535"
set "GameFilterTCP=1024-65535"
set "GameFilterUDP=1024-65535"
set "GameFilter=%GameFilterTCPRange%"
set "GameFilterTCP=%GameFilterTCPRange%"
set "GameFilterUDP=%GameFilterUDPRange%"
) else if /i "%GameFilterMode%"=="tcp" (
set "GameFilterStatus=enabled (TCP)"
set "GameFilter=1024-65535"
set "GameFilterTCP=1024-65535"
set "GameFilter=%GameFilterTCPRange%"
set "GameFilterTCP=%GameFilterTCPRange%"
set "GameFilterUDP=12"
) else (
) else if /i "%GameFilterMode%"=="udp" (
set "GameFilterStatus=enabled (UDP)"
set "GameFilter=1024-65535"
set "GameFilter=%GameFilterUDPRange%"
set "GameFilterTCP=12"
set "GameFilterUDP=1024-65535"
set "GameFilterUDP=%GameFilterUDPRange%"
) else (
set "GameFilterMode=disabled"
)
exit /b
@@ -767,38 +783,115 @@ exit /b
:game_switch
chcp 437 > nul
cls
call :game_switch_status
echo Select game filter mode:
echo 0. Disable
echo 1. TCP and UDP
echo 2. TCP only
echo 3. UDP only
echo Select game filter option:
if "%GameFilterMode%"=="disabled" (echo 1. * Disable) else echo 1. Disable
if "%GameFilterMode%"=="all" (echo 2. * TCP and UDP) else echo 2. TCP and UDP
if "%GameFilterMode%"=="tcp" (echo 3. * TCP) else echo 3. TCP
if "%GameFilterMode%"=="udp" (echo 4. * UDP) else echo 4. UDP
echo.
echo 5. Change TCP port range (current: %GameFilterTCPRange%)
echo 6. Change UDP port range (current: %GameFilterUDPRange%)
echo 7. Change TCP and UDP port ranges
echo.
echo. 0. Exit
echo.
set "GameFilterChoice=0"
set /p "GameFilterChoice=Select option (0-3, default: 0): "
set /p "GameFilterChoice=Select option (0-7, default: 0): "
if "%GameFilterChoice%"=="" set "GameFilterChoice=0"
if "%GameFilterChoice%"=="0" (
if exist "%gameFlagFile%" (
del /f /q "%gameFlagFile%"
) else (
goto menu
)
) else if "%GameFilterChoice%"=="1" (
echo all>"%gameFlagFile%"
if "%GameFilterChoice%"=="1" (
set "GameFilterMode=disabled"
) else if "%GameFilterChoice%"=="2" (
echo tcp>"%gameFlagFile%"
set "GameFilterMode=all"
) else if "%GameFilterChoice%"=="3" (
echo udp>"%gameFlagFile%"
set "GameFilterMode=tcp"
) else if "%GameFilterChoice%"=="4" (
set "GameFilterMode=udp"
) else if "%GameFilterChoice%"=="5" (
call :change_game_filter_range tcp
) else if "%GameFilterChoice%"=="6" (
call :change_game_filter_range udp
) else if "%GameFilterChoice%"=="7" (
call :change_game_filter_range all
) else (
echo Invalid choice, exiting...
pause
goto menu
)
echo.
call :save_game_filter_settings
call :PrintYellow "Restart the zapret to apply the changes"
pause
goto menu
goto game_switch
:change_game_filter_range
set "GameFilterRangeInput="
echo.
echo Changing ports for %~1 (example: 1024-1934,1936-65535, default: 1024-65535)
set /p "GameFilterRangeInput=Enter ports/ranges: "
call :validate_game_filter_range "%GameFilterRangeInput%"
if not defined ValidatedGameFilterRange (
call :PrintRed "Invalid input. Please enter valid ports/ranges."
pause
goto game_switch
)
if /i "%~1"=="tcp" set "GameFilterTCPRange=%ValidatedGameFilterRange%"
if /i "%~1"=="udp" set "GameFilterUDPRange=%ValidatedGameFilterRange%"
if /i "%~1"=="all" (
set "GameFilterTCPRange=%ValidatedGameFilterRange%"
set "GameFilterUDPRange=%ValidatedGameFilterRange%"
)
exit /b
:validate_game_filter_range
set "ValidatedGameFilterRange="
setlocal EnableDelayedExpansion
set "GameFilterRangeToValidate=%~1"
set "GameFilterRangeToValidate=!GameFilterRangeToValidate: =!"
if not defined GameFilterRangeToValidate exit /b
for %%A in ("!GameFilterRangeToValidate:,=" "!") do (
call :gf_validate_item "%%~A"
if not defined GameFilterRangeItemValid exit /b
)
endlocal & set "ValidatedGameFilterRange=%GameFilterRangeToValidate%"
exit /b
:gf_validate_item
set "GameFilterRangeItemValid="
setlocal EnableDelayedExpansion
set "GameFilterRangeItem=%~1"
echo(!GameFilterRangeItem!| findstr /r /x /c:"[1-9][0-9]*" /c:"[1-9][0-9]*-[1-9][0-9]*" > nul || exit /b
for /f "tokens=1,2 delims=-" %%A in ("!GameFilterRangeItem!") do (
set "GameFilterRangeStart=%%A"
set "GameFilterRangeEnd=%%B"
)
if not defined GameFilterRangeEnd set "GameFilterRangeEnd=!GameFilterRangeStart!"
if not "!GameFilterRangeStart:~5,1!"=="" exit /b
if not "!GameFilterRangeEnd:~5,1!"=="" exit /b
set /a GameFilterRangeStartNumber=GameFilterRangeStart, GameFilterRangeEndNumber=GameFilterRangeEnd
if !GameFilterRangeStartNumber! gtr 65535 exit /b
if !GameFilterRangeEndNumber! gtr 65535 exit /b
if !GameFilterRangeStartNumber! gtr !GameFilterRangeEndNumber! exit /b
endlocal & set "GameFilterRangeItemValid=1"
exit /b
:save_game_filter_settings
>"%gameFlagFile%" (
echo mode=%GameFilterMode%
echo tcp=%GameFilterTCPRange%
echo udp=%GameFilterUDPRange%
)
exit /b
:: CHECK UPDATES SWITCH =================