mirror of
https://github.com/Flowseal/zapret-discord-youtube.git
synced 2026-03-25 17:59:57 +05:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4180d36b68 | ||
|
|
5033f20594 | ||
|
|
789254328a | ||
|
|
f754baa650 | ||
|
|
04df4830e7 | ||
|
|
e20eecd37c | ||
|
|
8a1885d7d0 | ||
|
|
d2cf5c005c |
200
.service/hosts
Normal file
200
.service/hosts
Normal file
@@ -0,0 +1,200 @@
|
||||
104.25.158.178 finland10000.discord.media
|
||||
104.25.158.178 finland10001.discord.media
|
||||
104.25.158.178 finland10002.discord.media
|
||||
104.25.158.178 finland10003.discord.media
|
||||
104.25.158.178 finland10004.discord.media
|
||||
104.25.158.178 finland10005.discord.media
|
||||
104.25.158.178 finland10006.discord.media
|
||||
104.25.158.178 finland10007.discord.media
|
||||
104.25.158.178 finland10008.discord.media
|
||||
104.25.158.178 finland10009.discord.media
|
||||
104.25.158.178 finland10010.discord.media
|
||||
104.25.158.178 finland10011.discord.media
|
||||
104.25.158.178 finland10012.discord.media
|
||||
104.25.158.178 finland10013.discord.media
|
||||
104.25.158.178 finland10014.discord.media
|
||||
104.25.158.178 finland10015.discord.media
|
||||
104.25.158.178 finland10016.discord.media
|
||||
104.25.158.178 finland10017.discord.media
|
||||
104.25.158.178 finland10018.discord.media
|
||||
104.25.158.178 finland10019.discord.media
|
||||
104.25.158.178 finland10020.discord.media
|
||||
104.25.158.178 finland10021.discord.media
|
||||
104.25.158.178 finland10022.discord.media
|
||||
104.25.158.178 finland10023.discord.media
|
||||
104.25.158.178 finland10024.discord.media
|
||||
104.25.158.178 finland10025.discord.media
|
||||
104.25.158.178 finland10026.discord.media
|
||||
104.25.158.178 finland10027.discord.media
|
||||
104.25.158.178 finland10028.discord.media
|
||||
104.25.158.178 finland10029.discord.media
|
||||
104.25.158.178 finland10030.discord.media
|
||||
104.25.158.178 finland10031.discord.media
|
||||
104.25.158.178 finland10032.discord.media
|
||||
104.25.158.178 finland10033.discord.media
|
||||
104.25.158.178 finland10034.discord.media
|
||||
104.25.158.178 finland10035.discord.media
|
||||
104.25.158.178 finland10036.discord.media
|
||||
104.25.158.178 finland10037.discord.media
|
||||
104.25.158.178 finland10038.discord.media
|
||||
104.25.158.178 finland10039.discord.media
|
||||
104.25.158.178 finland10040.discord.media
|
||||
104.25.158.178 finland10041.discord.media
|
||||
104.25.158.178 finland10042.discord.media
|
||||
104.25.158.178 finland10043.discord.media
|
||||
104.25.158.178 finland10044.discord.media
|
||||
104.25.158.178 finland10045.discord.media
|
||||
104.25.158.178 finland10046.discord.media
|
||||
104.25.158.178 finland10047.discord.media
|
||||
104.25.158.178 finland10048.discord.media
|
||||
104.25.158.178 finland10049.discord.media
|
||||
104.25.158.178 finland10050.discord.media
|
||||
104.25.158.178 finland10051.discord.media
|
||||
104.25.158.178 finland10052.discord.media
|
||||
104.25.158.178 finland10053.discord.media
|
||||
104.25.158.178 finland10054.discord.media
|
||||
104.25.158.178 finland10055.discord.media
|
||||
104.25.158.178 finland10056.discord.media
|
||||
104.25.158.178 finland10057.discord.media
|
||||
104.25.158.178 finland10058.discord.media
|
||||
104.25.158.178 finland10059.discord.media
|
||||
104.25.158.178 finland10060.discord.media
|
||||
104.25.158.178 finland10061.discord.media
|
||||
104.25.158.178 finland10062.discord.media
|
||||
104.25.158.178 finland10063.discord.media
|
||||
104.25.158.178 finland10064.discord.media
|
||||
104.25.158.178 finland10065.discord.media
|
||||
104.25.158.178 finland10066.discord.media
|
||||
104.25.158.178 finland10067.discord.media
|
||||
104.25.158.178 finland10068.discord.media
|
||||
104.25.158.178 finland10069.discord.media
|
||||
104.25.158.178 finland10070.discord.media
|
||||
104.25.158.178 finland10071.discord.media
|
||||
104.25.158.178 finland10072.discord.media
|
||||
104.25.158.178 finland10073.discord.media
|
||||
104.25.158.178 finland10074.discord.media
|
||||
104.25.158.178 finland10075.discord.media
|
||||
104.25.158.178 finland10076.discord.media
|
||||
104.25.158.178 finland10077.discord.media
|
||||
104.25.158.178 finland10078.discord.media
|
||||
104.25.158.178 finland10079.discord.media
|
||||
104.25.158.178 finland10080.discord.media
|
||||
104.25.158.178 finland10081.discord.media
|
||||
104.25.158.178 finland10082.discord.media
|
||||
104.25.158.178 finland10083.discord.media
|
||||
104.25.158.178 finland10084.discord.media
|
||||
104.25.158.178 finland10085.discord.media
|
||||
104.25.158.178 finland10086.discord.media
|
||||
104.25.158.178 finland10087.discord.media
|
||||
104.25.158.178 finland10088.discord.media
|
||||
104.25.158.178 finland10089.discord.media
|
||||
104.25.158.178 finland10090.discord.media
|
||||
104.25.158.178 finland10091.discord.media
|
||||
104.25.158.178 finland10092.discord.media
|
||||
104.25.158.178 finland10093.discord.media
|
||||
104.25.158.178 finland10094.discord.media
|
||||
104.25.158.178 finland10095.discord.media
|
||||
104.25.158.178 finland10096.discord.media
|
||||
104.25.158.178 finland10097.discord.media
|
||||
104.25.158.178 finland10098.discord.media
|
||||
104.25.158.178 finland10099.discord.media
|
||||
104.25.158.178 finland10100.discord.media
|
||||
104.25.158.178 finland10101.discord.media
|
||||
104.25.158.178 finland10102.discord.media
|
||||
104.25.158.178 finland10103.discord.media
|
||||
104.25.158.178 finland10104.discord.media
|
||||
104.25.158.178 finland10105.discord.media
|
||||
104.25.158.178 finland10106.discord.media
|
||||
104.25.158.178 finland10107.discord.media
|
||||
104.25.158.178 finland10108.discord.media
|
||||
104.25.158.178 finland10109.discord.media
|
||||
104.25.158.178 finland10110.discord.media
|
||||
104.25.158.178 finland10111.discord.media
|
||||
104.25.158.178 finland10112.discord.media
|
||||
104.25.158.178 finland10113.discord.media
|
||||
104.25.158.178 finland10114.discord.media
|
||||
104.25.158.178 finland10115.discord.media
|
||||
104.25.158.178 finland10116.discord.media
|
||||
104.25.158.178 finland10117.discord.media
|
||||
104.25.158.178 finland10118.discord.media
|
||||
104.25.158.178 finland10119.discord.media
|
||||
104.25.158.178 finland10120.discord.media
|
||||
104.25.158.178 finland10121.discord.media
|
||||
104.25.158.178 finland10122.discord.media
|
||||
104.25.158.178 finland10123.discord.media
|
||||
104.25.158.178 finland10124.discord.media
|
||||
104.25.158.178 finland10125.discord.media
|
||||
104.25.158.178 finland10126.discord.media
|
||||
104.25.158.178 finland10127.discord.media
|
||||
104.25.158.178 finland10128.discord.media
|
||||
104.25.158.178 finland10129.discord.media
|
||||
104.25.158.178 finland10130.discord.media
|
||||
104.25.158.178 finland10131.discord.media
|
||||
104.25.158.178 finland10132.discord.media
|
||||
104.25.158.178 finland10133.discord.media
|
||||
104.25.158.178 finland10134.discord.media
|
||||
104.25.158.178 finland10135.discord.media
|
||||
104.25.158.178 finland10136.discord.media
|
||||
104.25.158.178 finland10137.discord.media
|
||||
104.25.158.178 finland10138.discord.media
|
||||
104.25.158.178 finland10139.discord.media
|
||||
104.25.158.178 finland10140.discord.media
|
||||
104.25.158.178 finland10141.discord.media
|
||||
104.25.158.178 finland10142.discord.media
|
||||
104.25.158.178 finland10143.discord.media
|
||||
104.25.158.178 finland10144.discord.media
|
||||
104.25.158.178 finland10145.discord.media
|
||||
104.25.158.178 finland10146.discord.media
|
||||
104.25.158.178 finland10147.discord.media
|
||||
104.25.158.178 finland10148.discord.media
|
||||
104.25.158.178 finland10149.discord.media
|
||||
104.25.158.178 finland10150.discord.media
|
||||
104.25.158.178 finland10151.discord.media
|
||||
104.25.158.178 finland10152.discord.media
|
||||
104.25.158.178 finland10153.discord.media
|
||||
104.25.158.178 finland10154.discord.media
|
||||
104.25.158.178 finland10155.discord.media
|
||||
104.25.158.178 finland10156.discord.media
|
||||
104.25.158.178 finland10157.discord.media
|
||||
104.25.158.178 finland10158.discord.media
|
||||
104.25.158.178 finland10159.discord.media
|
||||
104.25.158.178 finland10160.discord.media
|
||||
104.25.158.178 finland10161.discord.media
|
||||
104.25.158.178 finland10162.discord.media
|
||||
104.25.158.178 finland10163.discord.media
|
||||
104.25.158.178 finland10164.discord.media
|
||||
104.25.158.178 finland10165.discord.media
|
||||
104.25.158.178 finland10166.discord.media
|
||||
104.25.158.178 finland10167.discord.media
|
||||
104.25.158.178 finland10168.discord.media
|
||||
104.25.158.178 finland10169.discord.media
|
||||
104.25.158.178 finland10170.discord.media
|
||||
104.25.158.178 finland10171.discord.media
|
||||
104.25.158.178 finland10172.discord.media
|
||||
104.25.158.178 finland10173.discord.media
|
||||
104.25.158.178 finland10174.discord.media
|
||||
104.25.158.178 finland10175.discord.media
|
||||
104.25.158.178 finland10176.discord.media
|
||||
104.25.158.178 finland10177.discord.media
|
||||
104.25.158.178 finland10178.discord.media
|
||||
104.25.158.178 finland10179.discord.media
|
||||
104.25.158.178 finland10180.discord.media
|
||||
104.25.158.178 finland10181.discord.media
|
||||
104.25.158.178 finland10182.discord.media
|
||||
104.25.158.178 finland10183.discord.media
|
||||
104.25.158.178 finland10184.discord.media
|
||||
104.25.158.178 finland10185.discord.media
|
||||
104.25.158.178 finland10186.discord.media
|
||||
104.25.158.178 finland10187.discord.media
|
||||
104.25.158.178 finland10188.discord.media
|
||||
104.25.158.178 finland10189.discord.media
|
||||
104.25.158.178 finland10190.discord.media
|
||||
104.25.158.178 finland10191.discord.media
|
||||
104.25.158.178 finland10192.discord.media
|
||||
104.25.158.178 finland10193.discord.media
|
||||
104.25.158.178 finland10194.discord.media
|
||||
104.25.158.178 finland10195.discord.media
|
||||
104.25.158.178 finland10196.discord.media
|
||||
104.25.158.178 finland10197.discord.media
|
||||
104.25.158.178 finland10198.discord.media
|
||||
104.25.158.178 finland10199.discord.media
|
||||
@@ -1 +1 @@
|
||||
1.9.1
|
||||
1.9.2
|
||||
12
README.md
12
README.md
@@ -56,6 +56,7 @@
|
||||
- **`Run Diagnostics`** - диагностика на распространённые причины, по которым zapret может не работать.
|
||||
В конце можно очистить кэш <img src="https://cdn-icons-png.flaticon.com/128/5968/5968756.png" height=11 /> `Discord`, что может помочь, если он неожиданно перестал работать
|
||||
- **`Check Updates`** - проверка на обновления
|
||||
- **`Switch Check Updates`** - Вкл/Выкл автоматическую проверку на обновления
|
||||
- **`Switch Game Filter`** - переключение режима обхода для игр (и других сервисов, использующих UDP и TCP на портах выше 1023).
|
||||
**После переключения требуется перезапуск стратегии.**
|
||||
В скобках указан текущий статус (включено/выключено).
|
||||
@@ -66,6 +67,10 @@
|
||||
- `loaded` - айпи проверяется на вхождение в список
|
||||
- `any` - любой айпи попадает под фильтр
|
||||
- **`Update ipset list`** - обновление списка `ipset-all.txt` актуальным из репозитория
|
||||
- **`Update hosts file`** - обновление файла hosts <ins>**для починки подключения к голосовому чату Discord**</ins>
|
||||
- **`Run Tests`** - запуск утилиты для проверки стратегий на работоспособность:
|
||||
- `Standard tests` - проверка сайтов из `utils/targets.txt`
|
||||
- `DPI checkers` - проверка DPI на различных провайдерах (Cloudflare, Amazon и др.)
|
||||
|
||||
|
||||
## ☑️Распространенные вопросы и проблемы
|
||||
@@ -75,6 +80,13 @@
|
||||
- После запуска стратегии (отдельным bat файлом, не через service), должен открыться winws.exe (обход), который можно увидеть в панели задач.
|
||||
Если этого не произошло, то см. [#522](https://github.com/Flowseal/zapret-discord-youtube/issues/522)
|
||||
|
||||
### Бесконечное "подключение" к голосовому чату Discord
|
||||
Запустите **`service.bat`**, выберите пункт **`Update hosts file (for discord voice)`**. После чего, если ваш hosts будет неактуальным, то Вам будет предложено обновить его самостоятельно:
|
||||
- Cкопируйте весь текст из открывшегося блокнота
|
||||
- Откройте файл `hosts` в появившейся папке с помощью текстового редактора
|
||||
- Добавьте в конец файла `hosts` то, что скопировали (или замените, если до этого Вы уже добавляли подобное)
|
||||
- Сохраните и перепроверьте подключение. Если не работает - убедитесь, что файл `hosts` действительно сохранился.
|
||||
|
||||
### Обход не работает / перестал работать
|
||||
|
||||
> [!IMPORTANT]
|
||||
|
||||
88
service.bat
88
service.bat
@@ -1,5 +1,5 @@
|
||||
@echo off
|
||||
set "LOCAL_VERSION=1.9.1"
|
||||
set "LOCAL_VERSION=1.9.2"
|
||||
|
||||
:: External commands
|
||||
if "%~1"=="status_zapret" (
|
||||
@@ -61,9 +61,10 @@ echo 6. Switch Check Updates (%CheckUpdatesStatus%)
|
||||
echo 7. Switch Game Filter (%GameFilterStatus%)
|
||||
echo 8. Switch ipset (%IPsetStatus%)
|
||||
echo 9. Update ipset list
|
||||
echo 10. Run Tests
|
||||
echo 10. Update hosts file (for discord voice)
|
||||
echo 11. Run Tests
|
||||
echo 0. Exit
|
||||
set /p menu_choice=Enter choice (0-9):
|
||||
set /p menu_choice=Enter choice (0-11):
|
||||
|
||||
if "%menu_choice%"=="1" goto service_install
|
||||
if "%menu_choice%"=="2" goto service_remove
|
||||
@@ -74,7 +75,8 @@ if "%menu_choice%"=="6" goto check_updates_switch
|
||||
if "%menu_choice%"=="7" goto game_switch
|
||||
if "%menu_choice%"=="8" goto ipset_switch
|
||||
if "%menu_choice%"=="9" goto ipset_update
|
||||
if "%menu_choice%"=="10" goto run_tests
|
||||
if "%menu_choice%"=="10" goto hosts_update
|
||||
if "%menu_choice%"=="11" goto run_tests
|
||||
if "%menu_choice%"=="0" exit /b
|
||||
goto menu
|
||||
|
||||
@@ -198,7 +200,11 @@ for %%f in (*.bat) do (
|
||||
:: Choosing file
|
||||
set "choice="
|
||||
set /p "choice=Input file index (number): "
|
||||
if "!choice!"=="" goto :eof
|
||||
if "!choice!"=="" (
|
||||
echo The choice is empty, exiting...
|
||||
pause
|
||||
goto menu
|
||||
)
|
||||
|
||||
set "selectedFile=!file%choice%!"
|
||||
if not defined selectedFile (
|
||||
@@ -817,15 +823,81 @@ pause
|
||||
goto menu
|
||||
|
||||
|
||||
:: HOSTS UPDATE =======================
|
||||
:hosts_update
|
||||
chcp 437 > nul
|
||||
cls
|
||||
|
||||
set "hostsFile=%SystemRoot%\System32\drivers\etc\hosts"
|
||||
set "hostsUrl=https://raw.githubusercontent.com/Flowseal/zapret-discord-youtube/refs/heads/main/.service/hosts"
|
||||
set "tempFile=%TEMP%\zapret_hosts.txt"
|
||||
set "needsUpdate=0"
|
||||
|
||||
echo Checking hosts file...
|
||||
|
||||
if exist "%SystemRoot%\System32\curl.exe" (
|
||||
curl -L -s -o "%tempFile%" "%hostsUrl%"
|
||||
) else (
|
||||
powershell -Command ^
|
||||
"$url = '%hostsUrl%';" ^
|
||||
"$out = '%tempFile%';" ^
|
||||
"$res = Invoke-WebRequest -Uri $url -TimeoutSec 10 -UseBasicParsing;" ^
|
||||
"if ($res.StatusCode -eq 200) { $res.Content | Out-File -FilePath $out -Encoding UTF8 } else { exit 1 }"
|
||||
)
|
||||
|
||||
if not exist "%tempFile%" (
|
||||
call :PrintRed "Failed to download hosts file from repository"
|
||||
pause
|
||||
goto menu
|
||||
)
|
||||
|
||||
set "firstLine="
|
||||
set "lastLine="
|
||||
for /f "usebackq delims=" %%a in ("%tempFile%") do (
|
||||
if not defined firstLine (
|
||||
set "firstLine=%%a"
|
||||
)
|
||||
set "lastLine=%%a"
|
||||
)
|
||||
|
||||
findstr /C:"!firstLine!" "%hostsFile%" >nul 2>&1
|
||||
if !errorlevel! neq 0 (
|
||||
echo First line from repository not found in hosts file
|
||||
set "needsUpdate=1"
|
||||
)
|
||||
|
||||
findstr /C:"!lastLine!" "%hostsFile%" >nul 2>&1
|
||||
if !errorlevel! neq 0 (
|
||||
echo Last line from repository not found in hosts file
|
||||
set "needsUpdate=1"
|
||||
)
|
||||
|
||||
if "%needsUpdate%"=="1" (
|
||||
echo:
|
||||
call :PrintYellow "Hosts file needs to be updated"
|
||||
call :PrintYellow "Please manually copy the content from the downloaded file to your hosts file"
|
||||
|
||||
start notepad "%tempFile%"
|
||||
explorer /select,"%hostsFile%"
|
||||
) else (
|
||||
call :PrintGreen "Hosts file is up to date"
|
||||
if exist "%tempFile%" del /f /q "%tempFile%"
|
||||
)
|
||||
|
||||
echo:
|
||||
pause
|
||||
goto menu
|
||||
|
||||
|
||||
:: RUN TESTS =============================
|
||||
:run_tests
|
||||
chcp 65001 >nul
|
||||
cls
|
||||
|
||||
:: Require PowerShell 2.0+
|
||||
powershell -NoProfile -Command "if ($PSVersionTable -and $PSVersionTable.PSVersion -and $PSVersionTable.PSVersion.Major -ge 2) { exit 0 } else { exit 1 }" >nul 2>&1
|
||||
:: Require PowerShell 3.0+
|
||||
powershell -NoProfile -Command "if ($PSVersionTable -and $PSVersionTable.PSVersion -and $PSVersionTable.PSVersion.Major -ge 3) { exit 0 } else { exit 1 }" >nul 2>&1
|
||||
if %errorLevel% neq 0 (
|
||||
echo PowerShell 2.0 or newer is required.
|
||||
echo PowerShell 3.0 or newer is required.
|
||||
echo Please upgrade PowerShell and rerun this script.
|
||||
echo.
|
||||
pause
|
||||
|
||||
@@ -182,7 +182,7 @@ function Invoke-DpiSuite {
|
||||
if ($text -match '^(?<code>\d{3})\s+(?<size>\d+)$') {
|
||||
$code = $matches['code']
|
||||
$sizeBytes = [int64]$matches['size']
|
||||
} elseif ($text -match 'not supported|does not support') {
|
||||
} elseif (($exit -eq 35) -or ($text -match "not supported|does not support|protocol\s+'.+'\s+not\s+supported|protocol\s+.+\s+not\s+supported|unsupported protocol|TLS.not supported|Unrecognized option|Unknown option|unsupported option|unsupported feature|schannel|SSL")) {
|
||||
$code = "UNSUP"
|
||||
} elseif ($text) {
|
||||
$code = "ERR"
|
||||
@@ -246,7 +246,36 @@ function Invoke-DpiSuite {
|
||||
|
||||
$results = @()
|
||||
foreach ($rs in $runspaces) {
|
||||
$results += $rs.Powershell.EndInvoke($rs.Handle)
|
||||
# Wait for the runspace to complete with a small grace period beyond curl's timeout
|
||||
try {
|
||||
$waitMs = ([int]$TimeoutSeconds + 5) * 1000
|
||||
$handle = $rs.Handle
|
||||
if ($handle -and $handle.AsyncWaitHandle) {
|
||||
$completed = $handle.AsyncWaitHandle.WaitOne($waitMs)
|
||||
if (-not $completed) {
|
||||
Write-Host "[WARN] Runspace for target timed out after $waitMs ms; stopping runspace..." -ForegroundColor Yellow
|
||||
try { $rs.Powershell.Stop() } catch {}
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
# ignore wait errors and attempt to EndInvoke
|
||||
}
|
||||
|
||||
try {
|
||||
$results += $rs.Powershell.EndInvoke($rs.Handle)
|
||||
} catch {
|
||||
Write-Host "[WARN] EndInvoke failed for a runspace; treating as failure." -ForegroundColor Yellow
|
||||
$failedLine = [PSCustomObject]@{
|
||||
TestLabel = 'RUNSPACE'
|
||||
Code = 'ERR'
|
||||
SizeBytes = 0
|
||||
SizeKB = 0
|
||||
Status = 'FAIL'
|
||||
Color = 'Red'
|
||||
Warned = $false
|
||||
}
|
||||
$results += [PSCustomObject]@{ TargetId = 'UNKNOWN'; Provider = 'UNKNOWN'; Lines = @($failedLine); Warned = $false }
|
||||
}
|
||||
$rs.Powershell.Dispose()
|
||||
}
|
||||
$runspacePool.Close()
|
||||
@@ -355,7 +384,7 @@ $dpiTargets = Build-DpiTargets -CustomUrl $dpiCustomUrl
|
||||
# Config
|
||||
$targetDir = $rootDir
|
||||
if (-not $targetDir) { $targetDir = Split-Path -Parent $MyInvocation.MyCommand.Path }
|
||||
$batFiles = Get-ChildItem -Path $targetDir -Filter "general*.bat" | Sort-Object Name
|
||||
$batFiles = Get-ChildItem -Path $targetDir -Filter "*.bat" | Where-Object { $_.Name -notlike "service*" } | Sort-Object Name
|
||||
|
||||
$globalResults = @()
|
||||
|
||||
@@ -477,8 +506,6 @@ if ($testType -eq 'standard') {
|
||||
if (-not $maxNameLen -or $maxNameLen -lt 10) { $maxNameLen = 10 }
|
||||
}
|
||||
|
||||
Write-Host "[WARNING] Tests may take several minutes to complete. Please wait..." -ForegroundColor Yellow
|
||||
|
||||
# Ensure we have configs to run
|
||||
if (-not $batFiles -or $batFiles.Count -eq 0) {
|
||||
Write-Host "[ERROR] No general*.bat files found" -ForegroundColor Red
|
||||
@@ -549,6 +576,7 @@ try {
|
||||
# Create flag file to indicate ipset was switched
|
||||
"" | Out-File -FilePath $ipsetFlagFile -Encoding UTF8
|
||||
}
|
||||
Write-Host "[WARNING] Tests may take several minutes to complete. Please wait..." -ForegroundColor Yellow
|
||||
|
||||
$configNum = 0
|
||||
foreach ($file in $batFiles) {
|
||||
@@ -594,7 +622,7 @@ try {
|
||||
$curlArgs = $baseArgs + $test.Args
|
||||
$output = & curl.exe @curlArgs $t.Url 2>&1
|
||||
$text = ($output | Out-String).Trim()
|
||||
$unsupported = $text -match "does not support|not supported"
|
||||
$unsupported = (($LASTEXITCODE -eq 35) -or ($text -match "does not support|not supported|protocol\s+'?.+'?\s+not\s+supported|unsupported protocol|TLS.*not supported|Unrecognized option|Unknown option|unsupported option|unsupported feature|schannel|SSL"))
|
||||
if ($unsupported) {
|
||||
$httpPieces += "$($test.Label):UNSUP"
|
||||
continue
|
||||
@@ -649,7 +677,26 @@ try {
|
||||
|
||||
$targetResults = @()
|
||||
foreach ($rs in $runspaces) {
|
||||
$targetResults += $rs.Powershell.EndInvoke($rs.Handle)
|
||||
try {
|
||||
$waitMs = ([int]$curlTimeoutSeconds + 5) * 1000
|
||||
$handle = $rs.Handle
|
||||
if ($handle -and $handle.AsyncWaitHandle) {
|
||||
$completed = $handle.AsyncWaitHandle.WaitOne($waitMs)
|
||||
if (-not $completed) {
|
||||
Write-Host "[WARN] Runspace for target timed out after $waitMs ms; stopping runspace..." -ForegroundColor Yellow
|
||||
try { $rs.Powershell.Stop() } catch {}
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
# ignore
|
||||
}
|
||||
|
||||
try {
|
||||
$targetResults += $rs.Powershell.EndInvoke($rs.Handle)
|
||||
} catch {
|
||||
Write-Host "[WARN] EndInvoke failed for a runspace; treating as failure." -ForegroundColor Yellow
|
||||
$targetResults += [PSCustomObject]@{ Name = 'UNKNOWN'; HttpTokens = @('HTTP:ERROR'); PingResult = 'Timeout'; IsUrl = $true }
|
||||
}
|
||||
$rs.Powershell.Dispose()
|
||||
}
|
||||
|
||||
@@ -752,12 +799,24 @@ try {
|
||||
# Determine best strategy
|
||||
$bestConfig = $null
|
||||
$maxScore = 0
|
||||
$maxPing = -1
|
||||
foreach ($config in $analytics.Keys) {
|
||||
$a = $analytics[$config]
|
||||
$score = $a.OK
|
||||
$score -gt $maxScore
|
||||
$maxScore = $score
|
||||
$bestConfig = $config
|
||||
$pingScore = 0
|
||||
if ($a.ContainsKey('PingOK')) {
|
||||
$pingScore = $a.PingOK
|
||||
}
|
||||
if ($score -gt $maxScore) {
|
||||
$maxScore = $score
|
||||
$maxPing = $pingScore
|
||||
$bestConfig = $config
|
||||
} elseif ($score -eq $maxScore) {
|
||||
if ($pingScore -gt $maxPing) {
|
||||
$maxPing = $pingScore
|
||||
$bestConfig = $config
|
||||
}
|
||||
}
|
||||
}
|
||||
Write-Host ""
|
||||
Write-Host "Best config: $bestConfig" -ForegroundColor Green
|
||||
@@ -818,7 +877,6 @@ try {
|
||||
Set-IpsetMode -mode "restore"
|
||||
}
|
||||
Remove-Item -Path $ipsetFlagFile -ErrorAction SilentlyContinue
|
||||
throw # Re-throw the error
|
||||
} finally {
|
||||
Stop-Zapret
|
||||
Restore-WinwsSnapshot -snapshot $originalWinws
|
||||
|
||||
Reference in New Issue
Block a user