mirror of
https://github.com/Flowseal/zapret-discord-youtube.git
synced 2025-12-10 05:19:45 +05:00
757 lines
20 KiB
Batchfile
757 lines
20 KiB
Batchfile
@echo off
|
|
set "LOCAL_VERSION=1.9.0b"
|
|
|
|
:: External commands
|
|
if "%~1"=="status_zapret" (
|
|
call :test_service zapret soft
|
|
call :tcp_enable
|
|
exit /b
|
|
)
|
|
|
|
if "%~1"=="check_updates" (
|
|
if not "%~2"=="soft" (
|
|
start /b service check_updates soft
|
|
) else (
|
|
call :service_check_updates soft
|
|
)
|
|
exit /b
|
|
)
|
|
|
|
if "%~1"=="load_game_filter" (
|
|
call :game_switch_status
|
|
exit /b
|
|
)
|
|
|
|
|
|
if "%1"=="admin" (
|
|
echo Started with admin rights
|
|
) else (
|
|
echo Requesting admin rights...
|
|
powershell -Command "Start-Process 'cmd.exe' -ArgumentList '/c \"\"%~f0\" admin\"' -Verb RunAs"
|
|
exit
|
|
)
|
|
|
|
|
|
:: MENU ================================
|
|
setlocal EnableDelayedExpansion
|
|
:menu
|
|
cls
|
|
call :ipset_switch_status
|
|
call :game_switch_status
|
|
|
|
set "menu_choice=null"
|
|
echo ========= v!LOCAL_VERSION! =========
|
|
echo 1. Install Service
|
|
echo 2. Remove Services
|
|
echo 3. Check Status
|
|
echo 4. Run Diagnostics
|
|
echo 5. Check Updates
|
|
echo 6. Switch Game Filter (%GameFilterStatus%)
|
|
echo 7. Switch ipset (%IPsetStatus%)
|
|
echo 8. Update ipset list
|
|
echo 0. Exit
|
|
set /p menu_choice=Enter choice (0-8):
|
|
|
|
if "%menu_choice%"=="1" goto service_install
|
|
if "%menu_choice%"=="2" goto service_remove
|
|
if "%menu_choice%"=="3" goto service_status
|
|
if "%menu_choice%"=="4" goto service_diagnostics
|
|
if "%menu_choice%"=="5" goto service_check_updates
|
|
if "%menu_choice%"=="6" goto game_switch
|
|
if "%menu_choice%"=="7" goto ipset_switch
|
|
if "%menu_choice%"=="8" goto ipset_update
|
|
if "%menu_choice%"=="0" exit /b
|
|
goto menu
|
|
|
|
|
|
:: TCP ENABLE ==========================
|
|
:tcp_enable
|
|
netsh interface tcp show global | findstr /i "timestamps" | findstr /i "enabled" > nul || netsh interface tcp set global timestamps=enabled > nul 2>&1
|
|
exit /b
|
|
|
|
|
|
:: STATUS ==============================
|
|
:service_status
|
|
cls
|
|
chcp 437 > nul
|
|
|
|
sc query "zapret" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
for /f "tokens=2*" %%A in ('reg query "HKLM\System\CurrentControlSet\Services\zapret" /v zapret-discord-youtube 2^>nul') do echo Service strategy installed from "%%B"
|
|
)
|
|
|
|
call :test_service zapret
|
|
call :test_service WinDivert
|
|
echo:
|
|
|
|
tasklist /FI "IMAGENAME eq winws.exe" | find /I "winws.exe" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "Bypass (winws.exe) is ACTIVE"
|
|
) else (
|
|
call :PrintRed "Bypass (winws.exe) NOT FOUND"
|
|
)
|
|
|
|
pause
|
|
goto menu
|
|
|
|
:test_service
|
|
set "ServiceName=%~1"
|
|
set "ServiceStatus="
|
|
|
|
for /f "tokens=3 delims=: " %%A in ('sc query "%ServiceName%" ^| findstr /i "STATE"') do set "ServiceStatus=%%A"
|
|
set "ServiceStatus=%ServiceStatus: =%"
|
|
|
|
if "%ServiceStatus%"=="RUNNING" (
|
|
if "%~2"=="soft" (
|
|
echo "%ServiceName%" is ALREADY RUNNING as service, use "service.bat" and choose "Remove Services" first if you want to run standalone bat.
|
|
pause
|
|
exit /b
|
|
) else (
|
|
echo "%ServiceName%" service is RUNNING.
|
|
)
|
|
) else if "%ServiceStatus%"=="STOP_PENDING" (
|
|
call :PrintYellow "!ServiceName! is STOP_PENDING, that may be caused by a conflict with another bypass. Run Diagnostics to try to fix conflicts"
|
|
) else if not "%~2"=="soft" (
|
|
echo "%ServiceName%" service is NOT running.
|
|
)
|
|
|
|
exit /b
|
|
|
|
|
|
:: REMOVE ==============================
|
|
:service_remove
|
|
cls
|
|
chcp 65001 > nul
|
|
|
|
set SRVCNAME=zapret
|
|
sc query "!SRVCNAME!" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
net stop %SRVCNAME%
|
|
sc delete %SRVCNAME%
|
|
) else (
|
|
echo Service "%SRVCNAME%" is not installed.
|
|
)
|
|
|
|
tasklist /FI "IMAGENAME eq winws.exe" | find /I "winws.exe" > nul
|
|
if !errorlevel!==0 (
|
|
taskkill /IM winws.exe /F > nul
|
|
)
|
|
|
|
sc query "WinDivert" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
net stop "WinDivert"
|
|
|
|
sc query "WinDivert" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
sc delete "WinDivert"
|
|
)
|
|
)
|
|
net stop "WinDivert14" >nul 2>&1
|
|
sc delete "WinDivert14" >nul 2>&1
|
|
|
|
pause
|
|
goto menu
|
|
|
|
|
|
:: INSTALL =============================
|
|
:service_install
|
|
cls
|
|
chcp 65001 > nul
|
|
|
|
:: Main
|
|
cd /d "%~dp0"
|
|
set "BIN_PATH=%~dp0bin\"
|
|
set "LISTS_PATH=%~dp0lists\"
|
|
|
|
:: Searching for .bat files in current folder, except files that start with "service"
|
|
echo Pick one of the options:
|
|
set "count=0"
|
|
for %%f in (*.bat) do (
|
|
set "filename=%%~nxf"
|
|
if /i not "!filename:~0,7!"=="service" (
|
|
set /a count+=1
|
|
echo !count!. %%f
|
|
set "file!count!=%%f"
|
|
)
|
|
)
|
|
|
|
:: Choosing file
|
|
set "choice="
|
|
set /p "choice=Input file index (number): "
|
|
if "!choice!"=="" goto :eof
|
|
|
|
set "selectedFile=!file%choice%!"
|
|
if not defined selectedFile (
|
|
echo Invalid choice, exiting...
|
|
pause
|
|
goto menu
|
|
)
|
|
|
|
:: Args that should be followed by value
|
|
set "args_with_value=sni host altorder"
|
|
|
|
:: Parsing args (mergeargs: 2=start param|3=arg with value|1=params args|0=default)
|
|
set "args="
|
|
set "capture=0"
|
|
set "mergeargs=0"
|
|
set QUOTE="
|
|
|
|
for /f "tokens=*" %%a in ('type "!selectedFile!"') do (
|
|
set "line=%%a"
|
|
call set "line=%%line:^!=EXCL_MARK%%"
|
|
|
|
echo !line! | findstr /i "%BIN%winws.exe" >nul
|
|
if not errorlevel 1 (
|
|
set "capture=1"
|
|
)
|
|
|
|
if !capture!==1 (
|
|
if not defined args (
|
|
set "line=!line:*%BIN%winws.exe"=!"
|
|
)
|
|
|
|
set "temp_args="
|
|
for %%i in (!line!) do (
|
|
set "arg=%%i"
|
|
|
|
if not "!arg!"=="^" (
|
|
if "!arg:~0,2!" EQU "--" if not !mergeargs!==0 (
|
|
set "mergeargs=0"
|
|
)
|
|
|
|
if "!arg:~0,1!" EQU "!QUOTE!" (
|
|
set "arg=!arg:~1,-1!"
|
|
|
|
echo !arg! | findstr ":" >nul
|
|
if !errorlevel!==0 (
|
|
set "arg=\!QUOTE!!arg!\!QUOTE!"
|
|
) else if "!arg:~0,1!"=="@" (
|
|
set "arg=\!QUOTE!@%~dp0!arg:~1!\!QUOTE!"
|
|
) else if "!arg:~0,5!"=="%%BIN%%" (
|
|
set "arg=\!QUOTE!!BIN_PATH!!arg:~5!\!QUOTE!"
|
|
) else if "!arg:~0,7!"=="%%LISTS%%" (
|
|
set "arg=\!QUOTE!!LISTS_PATH!!arg:~7!\!QUOTE!"
|
|
) else (
|
|
set "arg=\!QUOTE!%~dp0!arg!\!QUOTE!"
|
|
)
|
|
) else if "!arg:~0,12!" EQU "%%GameFilter%%" (
|
|
set "arg=%GameFilter%"
|
|
)
|
|
|
|
if !mergeargs!==1 (
|
|
set "temp_args=!temp_args!,!arg!"
|
|
) else if !mergeargs!==3 (
|
|
set "temp_args=!temp_args!=!arg!"
|
|
set "mergeargs=1"
|
|
) else (
|
|
set "temp_args=!temp_args! !arg!"
|
|
)
|
|
|
|
if "!arg:~0,2!" EQU "--" (
|
|
set "mergeargs=2"
|
|
) else if !mergeargs! GEQ 1 (
|
|
if !mergeargs!==2 set "mergeargs=1"
|
|
|
|
for %%x in (!args_with_value!) do (
|
|
if /i "%%x"=="!arg!" (
|
|
set "mergeargs=3"
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
if not "!temp_args!"=="" (
|
|
set "args=!args! !temp_args!"
|
|
)
|
|
)
|
|
)
|
|
|
|
:: Creating service with parsed args
|
|
call :tcp_enable
|
|
|
|
set ARGS=%args%
|
|
call set "ARGS=%%ARGS:EXCL_MARK=^!%%"
|
|
echo Final args: !ARGS!
|
|
set SRVCNAME=zapret
|
|
|
|
net stop %SRVCNAME% >nul 2>&1
|
|
sc delete %SRVCNAME% >nul 2>&1
|
|
sc create %SRVCNAME% binPath= "\"%BIN_PATH%winws.exe\" !ARGS!" DisplayName= "zapret" start= auto
|
|
sc description %SRVCNAME% "Zapret DPI bypass software"
|
|
sc start %SRVCNAME%
|
|
for %%F in ("!file%choice%!") do (
|
|
set "filename=%%~nF"
|
|
)
|
|
reg add "HKLM\System\CurrentControlSet\Services\zapret" /v zapret-discord-youtube /t REG_SZ /d "!filename!" /f
|
|
|
|
pause
|
|
goto menu
|
|
|
|
|
|
:: CHECK UPDATES =======================
|
|
:service_check_updates
|
|
chcp 437 > nul
|
|
cls
|
|
|
|
:: Set current version and URLs
|
|
set "GITHUB_VERSION_URL=https://raw.githubusercontent.com/Flowseal/zapret-discord-youtube/main/.service/version.txt"
|
|
set "GITHUB_RELEASE_URL=https://github.com/Flowseal/zapret-discord-youtube/releases/tag/"
|
|
set "GITHUB_DOWNLOAD_URL=https://github.com/Flowseal/zapret-discord-youtube/releases/latest/download/zapret-discord-youtube-"
|
|
|
|
:: Get the latest version from GitHub
|
|
for /f "delims=" %%A in ('powershell -command "(Invoke-WebRequest -Uri \"%GITHUB_VERSION_URL%\" -Headers @{\"Cache-Control\"=\"no-cache\"} -TimeoutSec 5).Content.Trim()" 2^>nul') do set "GITHUB_VERSION=%%A"
|
|
|
|
:: Error handling
|
|
if not defined GITHUB_VERSION (
|
|
echo Warning: failed to fetch the latest version. This warning does not affect the operation of zapret
|
|
timeout /T 9
|
|
if "%1"=="soft" exit
|
|
goto menu
|
|
)
|
|
|
|
:: Version comparison
|
|
if "%LOCAL_VERSION%"=="%GITHUB_VERSION%" (
|
|
echo Latest version installed: %LOCAL_VERSION%
|
|
|
|
if "%1"=="soft" exit
|
|
pause
|
|
goto menu
|
|
)
|
|
|
|
echo New version available: %GITHUB_VERSION%
|
|
echo Release page: %GITHUB_RELEASE_URL%%GITHUB_VERSION%
|
|
|
|
set "CHOICE="
|
|
set /p "CHOICE=Do you want to automatically download the new version? (Y/N) (default: Y) "
|
|
if "%CHOICE%"=="" set "CHOICE=Y"
|
|
if /i "%CHOICE%"=="y" set "CHOICE=Y"
|
|
|
|
if /i "%CHOICE%"=="Y" (
|
|
echo Opening the download page...
|
|
start "" "%GITHUB_DOWNLOAD_URL%%GITHUB_VERSION%.rar"
|
|
)
|
|
|
|
|
|
if "%1"=="soft" exit
|
|
pause
|
|
goto menu
|
|
|
|
|
|
|
|
:: DIAGNOSTICS =========================
|
|
:service_diagnostics
|
|
chcp 437 > nul
|
|
cls
|
|
|
|
:: Base Filtering Engine
|
|
sc query BFE | findstr /I "RUNNING" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "Base Filtering Engine check passed"
|
|
) else (
|
|
call :PrintRed "[X] Base Filtering Engine is not running. This service is required for zapret to work"
|
|
)
|
|
echo:
|
|
|
|
:: Proxy check
|
|
set "proxyEnabled=0"
|
|
set "proxyServer="
|
|
|
|
for /f "tokens=2*" %%A in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable 2^>nul ^| findstr /i "ProxyEnable"') do (
|
|
if "%%B"=="0x1" set "proxyEnabled=1"
|
|
)
|
|
|
|
if !proxyEnabled!==1 (
|
|
for /f "tokens=2*" %%A in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer 2^>nul ^| findstr /i "ProxyServer"') do (
|
|
set "proxyServer=%%B"
|
|
)
|
|
|
|
call :PrintYellow "[?] System proxy is enabled: !proxyServer!"
|
|
call :PrintYellow "Make sure it's valid or disable it if you don't use a proxy"
|
|
) else (
|
|
call :PrintGreen "Proxy check passed"
|
|
)
|
|
echo:
|
|
|
|
:: TCP timestamps check
|
|
netsh interface tcp show global | findstr /i "timestamps" | findstr /i "enabled" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "TCP timestamps check passed"
|
|
) else (
|
|
call :PrintYellow "[?] TCP timestamps are disabled. Enabling timestamps..."
|
|
netsh interface tcp set global timestamps=enabled > nul 2>&1
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "TCP timestamps successfully enabled"
|
|
) else (
|
|
call :PrintRed "[X] Failed to enable TCP timestamps"
|
|
)
|
|
)
|
|
echo:
|
|
|
|
:: AdguardSvc.exe
|
|
tasklist /FI "IMAGENAME eq AdguardSvc.exe" | find /I "AdguardSvc.exe" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintRed "[X] Adguard process found. Adguard may cause problems with Discord"
|
|
call :PrintRed "https://github.com/Flowseal/zapret-discord-youtube/issues/417"
|
|
) else (
|
|
call :PrintGreen "Adguard check passed"
|
|
)
|
|
echo:
|
|
|
|
:: Killer
|
|
sc query | findstr /I "Killer" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintRed "[X] Killer services found. Killer conflicts with zapret"
|
|
call :PrintRed "https://github.com/Flowseal/zapret-discord-youtube/issues/2512#issuecomment-2821119513"
|
|
) else (
|
|
call :PrintGreen "Killer check passed"
|
|
)
|
|
echo:
|
|
|
|
:: Intel Connectivity Network Service
|
|
sc query | findstr /I "Intel" | findstr /I "Connectivity" | findstr /I "Network" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintRed "[X] Intel Connectivity Network Service found. It conflicts with zapret"
|
|
call :PrintRed "https://github.com/ValdikSS/GoodbyeDPI/issues/541#issuecomment-2661670982"
|
|
) else (
|
|
call :PrintGreen "Intel Connectivity check passed"
|
|
)
|
|
echo:
|
|
|
|
:: Check Point
|
|
set "checkpointFound=0"
|
|
sc query | findstr /I "TracSrvWrapper" > nul
|
|
if !errorlevel!==0 (
|
|
set "checkpointFound=1"
|
|
)
|
|
|
|
sc query | findstr /I "EPWD" > nul
|
|
if !errorlevel!==0 (
|
|
set "checkpointFound=1"
|
|
)
|
|
|
|
if !checkpointFound!==1 (
|
|
call :PrintRed "[X] Check Point services found. Check Point conflicts with zapret"
|
|
call :PrintRed "Try to uninstall Check Point"
|
|
) else (
|
|
call :PrintGreen "Check Point check passed"
|
|
)
|
|
echo:
|
|
|
|
:: SmartByte
|
|
sc query | findstr /I "SmartByte" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintRed "[X] SmartByte services found. SmartByte conflicts with zapret"
|
|
call :PrintRed "Try to uninstall or disable SmartByte through services.msc"
|
|
) else (
|
|
call :PrintGreen "SmartByte check passed"
|
|
)
|
|
echo:
|
|
|
|
:: VPN
|
|
sc query | findstr /I "VPN" > nul
|
|
if !errorlevel!==0 (
|
|
call :PrintYellow "[?] Some VPN services found. Some VPNs can conflict with zapret"
|
|
call :PrintYellow "Make sure that all VPNs are disabled"
|
|
) else (
|
|
call :PrintGreen "VPN check passed"
|
|
)
|
|
echo:
|
|
|
|
:: DNS
|
|
set "dohfound=0"
|
|
for /f "delims=" %%a in ('powershell -Command "Get-ChildItem -Recurse -Path 'HKLM:System\CurrentControlSet\Services\Dnscache\InterfaceSpecificParameters\' | Get-ItemProperty | Where-Object { $_.DohFlags -gt 0 } | Measure-Object | Select-Object -ExpandProperty Count"') do (
|
|
if %%a gtr 0 (
|
|
set "dohfound=1"
|
|
)
|
|
)
|
|
if !dohfound!==0 (
|
|
call :PrintYellow "[?] Make sure you have configured secure DNS in a browser with some non-default DNS service provider,"
|
|
call :PrintYellow "If you use Windows 11 you can configure encrypted DNS in the Settings to hide this warning"
|
|
) else (
|
|
call :PrintGreen "Secure DNS check passed"
|
|
)
|
|
echo:
|
|
|
|
:: WinDivert conflict
|
|
tasklist /FI "IMAGENAME eq winws.exe" | find /I "winws.exe" > nul
|
|
set "winws_running=!errorlevel!"
|
|
|
|
sc query "WinDivert" | findstr /I "RUNNING STOP_PENDING" > nul
|
|
set "windivert_running=!errorlevel!"
|
|
|
|
if !winws_running! neq 0 if !windivert_running!==0 (
|
|
call :PrintYellow "[?] winws.exe is not running but WinDivert service is active. Attempting to delete WinDivert..."
|
|
|
|
net stop "WinDivert" >nul 2>&1
|
|
sc delete "WinDivert" >nul 2>&1
|
|
sc query "WinDivert" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
call :PrintRed "[X] Failed to delete WinDivert. Checking for conflicting services..."
|
|
|
|
set "conflicting_services=GoodbyeDPI"
|
|
set "found_conflict=0"
|
|
|
|
for %%s in (!conflicting_services!) do (
|
|
sc query "%%s" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
call :PrintYellow "[?] Found conflicting service: %%s. Stopping and removing..."
|
|
net stop "%%s" >nul 2>&1
|
|
sc delete "%%s" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "Successfully removed service: %%s"
|
|
) else (
|
|
call :PrintRed "[X] Failed to remove service: %%s"
|
|
)
|
|
set "found_conflict=1"
|
|
)
|
|
)
|
|
|
|
if !found_conflict!==0 (
|
|
call :PrintRed "[X] No conflicting services found. Check manually if any other bypass is using WinDivert."
|
|
) else (
|
|
call :PrintYellow "[?] Attempting to delete WinDivert again..."
|
|
|
|
net stop "WinDivert" >nul 2>&1
|
|
sc delete "WinDivert" >nul 2>&1
|
|
sc query "WinDivert" >nul 2>&1
|
|
if !errorlevel! neq 0 (
|
|
call :PrintGreen "WinDivert successfully deleted after removing conflicting services"
|
|
) else (
|
|
call :PrintRed "[X] WinDivert still cannot be deleted. Check manually if any other bypass is using WinDivert."
|
|
)
|
|
)
|
|
) else (
|
|
call :PrintGreen "WinDivert successfully removed"
|
|
)
|
|
|
|
echo:
|
|
)
|
|
|
|
:: Conflicting bypasses
|
|
set "conflicting_services=GoodbyeDPI discordfix_zapret winws1 winws2"
|
|
set "found_any_conflict=0"
|
|
set "found_conflicts="
|
|
|
|
for %%s in (!conflicting_services!) do (
|
|
sc query "%%s" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
if "!found_conflicts!"=="" (
|
|
set "found_conflicts=%%s"
|
|
) else (
|
|
set "found_conflicts=!found_conflicts! %%s"
|
|
)
|
|
set "found_any_conflict=1"
|
|
)
|
|
)
|
|
|
|
if !found_any_conflict!==1 (
|
|
call :PrintRed "[X] Conflicting bypass services found: !found_conflicts!"
|
|
|
|
set "CHOICE="
|
|
set /p "CHOICE=Do you want to remove these conflicting services? (Y/N) (default: N) "
|
|
if "!CHOICE!"=="" set "CHOICE=N"
|
|
if "!CHOICE!"=="y" set "CHOICE=Y"
|
|
|
|
if /i "!CHOICE!"=="Y" (
|
|
for %%s in (!found_conflicts!) do (
|
|
call :PrintYellow "Stopping and removing service: %%s"
|
|
net stop "%%s" >nul 2>&1
|
|
sc delete "%%s" >nul 2>&1
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "Successfully removed service: %%s"
|
|
) else (
|
|
call :PrintRed "[X] Failed to remove service: %%s"
|
|
)
|
|
)
|
|
|
|
net stop "WinDivert" >nul 2>&1
|
|
sc delete "WinDivert" >nul 2>&1
|
|
net stop "WinDivert14" >nul 2>&1
|
|
sc delete "WinDivert14" >nul 2>&1
|
|
)
|
|
|
|
echo:
|
|
)
|
|
|
|
:: Discord cache clearing
|
|
set "CHOICE="
|
|
set /p "CHOICE=Do you want to clear the Discord cache? (Y/N) (default: Y) "
|
|
if "!CHOICE!"=="" set "CHOICE=Y"
|
|
if "!CHOICE!"=="y" set "CHOICE=Y"
|
|
|
|
if /i "!CHOICE!"=="Y" (
|
|
tasklist /FI "IMAGENAME eq Discord.exe" | findstr /I "Discord.exe" > nul
|
|
if !errorlevel!==0 (
|
|
echo Discord is running, closing...
|
|
taskkill /IM Discord.exe /F > nul
|
|
if !errorlevel! == 0 (
|
|
call :PrintGreen "Discord was successfully closed"
|
|
) else (
|
|
call :PrintRed "Unable to close Discord"
|
|
)
|
|
)
|
|
|
|
set "discordCacheDir=%appdata%\discord"
|
|
|
|
for %%d in ("Cache" "Code Cache" "GPUCache") do (
|
|
set "dirPath=!discordCacheDir!\%%~d"
|
|
if exist "!dirPath!" (
|
|
rd /s /q "!dirPath!"
|
|
if !errorlevel!==0 (
|
|
call :PrintGreen "Successfully deleted !dirPath!"
|
|
) else (
|
|
call :PrintRed "Failed to delete !dirPath!"
|
|
)
|
|
) else (
|
|
call :PrintRed "!dirPath! does not exist"
|
|
)
|
|
)
|
|
)
|
|
echo:
|
|
|
|
pause
|
|
goto menu
|
|
|
|
|
|
:: GAME SWITCH ========================
|
|
:game_switch_status
|
|
chcp 437 > nul
|
|
|
|
set "gameFlagFile=%~dp0bin\game_filter.enabled"
|
|
|
|
if exist "%gameFlagFile%" (
|
|
set "GameFilterStatus=enabled"
|
|
set "GameFilter=1024-65535"
|
|
) else (
|
|
set "GameFilterStatus=disabled"
|
|
set "GameFilter=12"
|
|
)
|
|
exit /b
|
|
|
|
|
|
:game_switch
|
|
chcp 437 > nul
|
|
cls
|
|
|
|
if not exist "%gameFlagFile%" (
|
|
echo Enabling game filter...
|
|
echo ENABLED > "%gameFlagFile%"
|
|
call :PrintYellow "Restart the zapret to apply the changes"
|
|
) else (
|
|
echo Disabling game filter...
|
|
del /f /q "%gameFlagFile%"
|
|
call :PrintYellow "Restart the zapret to apply the changes"
|
|
)
|
|
|
|
pause
|
|
goto menu
|
|
|
|
|
|
:: IPSET SWITCH =======================
|
|
:ipset_switch_status
|
|
chcp 437 > nul
|
|
|
|
set "listFile=%~dp0lists\ipset-all.txt"
|
|
for /f %%i in ('type "%listFile%" 2^>nul ^| find /c /v ""') do set "lineCount=%%i"
|
|
|
|
if !lineCount!==0 (
|
|
set "IPsetStatus=any"
|
|
) else (
|
|
findstr /R "^203\.0\.113\.113/32$" "%listFile%" >nul
|
|
if !errorlevel!==0 (
|
|
set "IPsetStatus=none"
|
|
) else (
|
|
set "IPsetStatus=loaded"
|
|
)
|
|
)
|
|
exit /b
|
|
|
|
|
|
:ipset_switch
|
|
chcp 437 > nul
|
|
cls
|
|
|
|
set "listFile=%~dp0lists\ipset-all.txt"
|
|
set "backupFile=%listFile%.backup"
|
|
|
|
if "%IPsetStatus%"=="loaded" (
|
|
echo Switching to none mode...
|
|
|
|
if not exist "%backupFile%" (
|
|
ren "%listFile%" "ipset-all.txt.backup"
|
|
) else (
|
|
del /f /q "%backupFile%"
|
|
ren "%listFile%" "ipset-all.txt.backup"
|
|
)
|
|
|
|
>"%listFile%" (
|
|
echo 203.0.113.113/32
|
|
)
|
|
|
|
) else if "%IPsetStatus%"=="none" (
|
|
echo Switching to any mode...
|
|
|
|
>"%listFile%" (
|
|
rem Creating empty file
|
|
)
|
|
|
|
) else if "%IPsetStatus%"=="any" (
|
|
echo Switching to loaded mode...
|
|
|
|
if exist "%backupFile%" (
|
|
del /f /q "%listFile%"
|
|
ren "%backupFile%" "ipset-all.txt"
|
|
) else (
|
|
echo Error: no backup to restore. Update list from service menu first
|
|
pause
|
|
goto menu
|
|
)
|
|
|
|
)
|
|
|
|
pause
|
|
goto menu
|
|
|
|
|
|
:: IPSET UPDATE =======================
|
|
:ipset_update
|
|
chcp 437 > nul
|
|
cls
|
|
|
|
set "listFile=%~dp0lists\ipset-all.txt"
|
|
set "url=https://raw.githubusercontent.com/Flowseal/zapret-discord-youtube/refs/heads/main/.service/ipset-service.txt"
|
|
|
|
echo Updating ipset-all...
|
|
|
|
if exist "%SystemRoot%\System32\curl.exe" (
|
|
curl -L -o "%listFile%" "%url%"
|
|
) else (
|
|
powershell -Command ^
|
|
"$url = '%url%';" ^
|
|
"$out = '%listFile%';" ^
|
|
"$dir = Split-Path -Parent $out;" ^
|
|
"if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir | Out-Null };" ^
|
|
"$res = Invoke-WebRequest -Uri $url -TimeoutSec 10 -UseBasicParsing;" ^
|
|
"if ($res.StatusCode -eq 200) { $res.Content | Out-File -FilePath $out -Encoding UTF8 } else { exit 1 }"
|
|
)
|
|
|
|
echo Finished
|
|
|
|
pause
|
|
goto menu
|
|
|
|
:: Utility functions
|
|
|
|
:PrintGreen
|
|
powershell -Command "Write-Host \"%~1\" -ForegroundColor Green"
|
|
exit /b
|
|
|
|
:PrintRed
|
|
powershell -Command "Write-Host \"%~1\" -ForegroundColor Red"
|
|
exit /b
|
|
|
|
:PrintYellow
|
|
powershell -Command "Write-Host \"%~1\" -ForegroundColor Yellow"
|
|
exit /b
|