mirror of
https://github.com/Grasscutters/GrassClipper.git
synced 2024-11-29 10:36:32 +00:00
96 lines
3.5 KiB
Batchfile
96 lines
3.5 KiB
Batchfile
@echo off
|
|
|
|
:: Ensure admin
|
|
@REM >nul 2>&1 reg query "HKU\S-1-5-19" || (
|
|
@REM set params = %*:"="""%
|
|
@REM cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %1 %2 %3 "%4" ""%cd%"" %6", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
|
|
@REM )
|
|
|
|
:: Use to force task kill
|
|
title PS Launcher Script
|
|
|
|
:: Use a character encoding that allows for use of Chinese characters. This should work but doesn't, but I'm keeping it in here just in case
|
|
chcp 65001
|
|
|
|
echo Starting Proxy Server
|
|
|
|
set IP=%1
|
|
set PORT=%2
|
|
set USE_HTTPS=%3
|
|
set GAME_PATH=%4
|
|
set GAME_PATH=%GAME_PATH:"=%
|
|
set ORIGIN=%5
|
|
set ORIGIN=%ORIGIN:"=%
|
|
set ENABLE_KILLSWITCH=%6
|
|
|
|
:: For registry
|
|
set GAME_REG="HKEY_CURRENT_USER\Software\miHoYo\Genshin Impact"
|
|
|
|
if "%ENABLE_KILLSWITCH%" EQU "true" (
|
|
:: Restart in elevated if need be
|
|
>nul 2>&1 reg query "HKU\S-1-5-19" || (
|
|
set params = %*:"="""%
|
|
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %1 %2 %3 "%4" ""%cd%"" %6", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && taskkill /f /fi "WINDOWTITLE eq PS Launcher Script" && exit /b )
|
|
)
|
|
)
|
|
|
|
set PROXY=true
|
|
@rem Store original proxy settings
|
|
for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable 2^>nul') do set "ORIG_PROXY_ENABLE=%%b"
|
|
for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer 2^>nul') do set "ORIG_PROXY_SERVER=%%b"
|
|
|
|
:: Set proxy settings in Windows
|
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f >nul 2>nul
|
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "127.0.0.1:8080" /f >nul 2>nul
|
|
|
|
:: Start proxy server
|
|
start "Proxy Server" "%ORIGIN%\ext\mitmdump.exe" -s "%ORIGIN%/proxy/proxy.py" -k --allow-hosts ".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com" --ssl-insecure --set ip=%IP% --set port=%PORT% --set use_https=%USE_HTTPS%
|
|
|
|
echo Opening %GAME_PATH%
|
|
|
|
:: Allow the proxy server to open fully
|
|
ping 127.0.0.1 -n 5 > nul
|
|
|
|
for %%A in ("%GAME_PATH%") do (
|
|
set GAME_EXE=%%~nxA
|
|
)
|
|
|
|
echo Killswitch: %ENABLE_KILLSWITCH%
|
|
|
|
if "%ENABLE_KILLSWITCH%" EQU "true" (
|
|
echo Killswitch is enabled!
|
|
:: Start killswitch
|
|
start /b %ORIGIN%\scripts\killswitch.cmd "%GAME_EXE%" 127.0.0.1
|
|
)
|
|
|
|
:: Launch game
|
|
"%GAME_PATH%"
|
|
|
|
:: On exit clean proxy stuff
|
|
:EXIT
|
|
echo Exiting...
|
|
|
|
if "%PROXY%" EQU "" (
|
|
echo Proxy not started, no need to clean up.
|
|
|
|
exit /b
|
|
)
|
|
|
|
:: Clean proxy settings
|
|
echo Cleaning up proxy settings...
|
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d "%ORIG_PROXY_ENABLE%" /f >nul 2>nul
|
|
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "%ORIG_PROXY_SERVER%" /f >nul 2>nul
|
|
|
|
:: Kill proxy server
|
|
taskkill /f /im mitmdump.exe
|
|
|
|
echo Done, see you next time
|
|
|
|
:: Just in case the user has corutils installed, use this hacky timeout instead of the timeout command
|
|
ping 127.0.0.1 -n 2 > nul
|
|
|
|
:: Attempt to kill either
|
|
taskkill /f /fi "WINDOWTITLE eq Administrator: PS Launcher Script"
|
|
taskkill /f /fi "WINDOWTITLE eq PS Launcher Script"
|
|
|
|
exit /b |