31 Commits

Author SHA1 Message Date
Flowseal
0b923f9b5c Version bump 2026-06-14 20:45:17 +03:00
Flowseal
2af70b9f8b title set moved 2026-06-14 20:42:54 +03:00
Funsy
22a04fc6e8 add window title (#14979) 2026-06-14 20:42:38 +03:00
Flowseal
394d12ce33 Warning in user's list 2026-06-14 19:08:52 +03:00
Flowseal
d1638825c6 fixes #14972 - ipset status detection 2026-06-14 18:21:40 +03:00
fluffydaddy
132df16b20 list-exclude, list-general update (#14555) 2026-06-14 18:19:14 +03:00
Fr̫̎e̗̔e͉̗͗̕ď̖ỏ̘͉̎m̫̓
d7e154a351 ExcludeOneDrive (#14947) 2026-06-13 20:07:04 +03:00
lxstwxrden
f26572fa90 Обновить IPSet до последней версии (#14896)
* Update ipset-all.txt.backup

* Update ipset-service.txt
2026-06-12 10:15:10 +03:00
Kail-225
03866b1b2f Update list (#14753) 2026-06-08 23:16:13 +03:00
Murchik
7e9b42a00b Align test analytics output (#14115) 2026-05-30 16:50:29 +03:00
Flowseal
ef19845a80 version bump 2026-05-28 19:06:06 +03:00
Flowseal
047cc04fd6 version bump 2026-05-28 19:00:36 +03:00
Flowseal
57b91239f7 alt12 tune 2026-05-28 18:35:22 +03:00
Flowseal
32a6830373 alt12 strategy 2026-05-28 17:19:11 +03:00
PelmeshkaGrom
9407cd31cc Update list-exclude.txt (#13900) 2026-05-28 16:43:40 +03:00
Yevgeny Kungurov
d28460499e Update README.md (#13931) 2026-05-28 15:09:00 +03:00
Yevgeny Kungurov
197dafcaa3 Update README.md (#13455) 2026-05-15 12:01:47 +03:00
kinlay0
8195c466c3 Add new domains to list-exclude.txt (#13377) 2026-05-14 20:15:18 +03:00
Yevgeny Kungurov
459c4c2a2e Update README.md (#13283) 2026-05-10 17:22:44 +03:00
Dum4G
7b39f1bbb8 Update hosts (#13132) 2026-05-09 17:09:06 +03:00
KG7x
68c57eacc8 Remove duplicate line (#13139) 2026-05-09 17:06:30 +03:00
Flowseal
d60e21c1bb Version bump 2026-05-07 14:20:25 +03:00
Flowseal
f474a9f3f0 tg hosts 2026-05-07 14:19:53 +03:00
Flowseal
3ca61f3ab6 improved current strategy output 2026-05-07 14:13:55 +03:00
Flowseal
e609f1550b gitignore 2026-05-07 14:09:56 +03:00
Artyom Bebroy
ff334e5767 отображение текущей стратегии в меню сервиса (#13053) 2026-05-07 14:05:32 +03:00
Artyom Bebroy
8b47f91512 Исправлен вывод результатов DPI (#13066) 2026-05-06 18:52:13 +03:00
lxstwxrden
4456f6ee1c Update hosts (#13057) 2026-05-06 10:18:52 +03:00
Fr̫̎e̗̔e͉̗͗̕ď̖ỏ̘͉̎m̫̓
1963ad068d Delete Duplicate (#12898) 2026-05-03 07:43:32 +03:00
Flowseal
68fa02f9a4 Release workflow: changed zip packaging tool & sha256 output 2026-05-02 12:31:35 +03:00
Yevgeny Kungurov
f6f22e20e1 Fix rfc1323 timestamps check (#12805) 2026-05-02 00:17:52 +03:00
14 changed files with 8087 additions and 5695 deletions

1
.gitattributes vendored
View File

@@ -1,2 +1,3 @@
*.bat text eol=crlf *.bat text eol=crlf
*.ps1 text eol=crlf *.ps1 text eol=crlf
*.txt text eol=crlf

View File

@@ -11,3 +11,4 @@ trusted_users:
- prettyleaf - prettyleaf
- amozebus - amozebus
- fridorin - fridorin
- kinlay0

View File

@@ -25,15 +25,20 @@ jobs:
exit 1 exit 1
fi fi
- name: Install RAR - name: Install tools
run: sudo apt-get install -y rar run: sudo apt-get install -y rar p7zip-full
- name: Create archives - name: Create archives
run: | run: |
NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}" NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}"
zip -r "${NAME}.zip" bin/ lists/ utils/ *.bat 7z a "${NAME}.zip" bin/ lists/ utils/ *.bat
rar a "${NAME}.rar" bin/ lists/ utils/ *.bat rar a "${NAME}.rar" bin/ lists/ utils/ *.bat
- name: Print SHA256 checksums
run: |
NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}"
sha256sum "${NAME}.zip" "${NAME}.rar"
- name: Create GitHub Release - name: Create GitHub Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
with: with:

3
.gitignore vendored
View File

@@ -3,3 +3,6 @@
/lists/ipset-exclude-user.txt /lists/ipset-exclude-user.txt
/lists/list-general-user.txt /lists/list-general-user.txt
/lists/list-exclude-user.txt /lists/list-exclude-user.txt
.vscode/
/build/

View File

@@ -1,3 +1,12 @@
149.154.167.220 my.telegram.org
149.154.167.220 oauth.telegram.org
149.154.167.220 cdn.telesco.pe
149.154.167.220 cdn1.telesco.pe
149.154.167.220 cdn2.telesco.pe
149.154.167.220 cdn3.telesco.pe
149.154.167.220 cdn4.telesco.pe
149.154.167.220 cdn5.telesco.pe
149.154.167.220 core.telegram.org
149.154.167.220 zws4.web.telegram.org 149.154.167.220 zws4.web.telegram.org
149.154.167.220 vesta.web.telegram.org 149.154.167.220 vesta.web.telegram.org
149.154.167.220 vesta-1.web.telegram.org 149.154.167.220 vesta-1.web.telegram.org
@@ -21,6 +30,12 @@
149.154.167.220 zws2.web.telegram.org 149.154.167.220 zws2.web.telegram.org
149.154.167.220 zws4-1.web.telegram.org 149.154.167.220 zws4-1.web.telegram.org
185.199.109.133 raw.githubusercontent.com
185.199.109.133 release-assets.githubusercontent.com
185.199.108.133 private-user-images.githubusercontent.com
185.199.108.133 gist.githubusercontent.com
185.199.108.133 avatars.githubusercontent.com
104.25.158.178 finland10000.discord.media 104.25.158.178 finland10000.discord.media
104.25.158.178 finland10001.discord.media 104.25.158.178 finland10001.discord.media
104.25.158.178 finland10002.discord.media 104.25.158.178 finland10002.discord.media

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
1.9.8b 1.9.9b

View File

@@ -36,7 +36,8 @@
1. Включите Secure DNS 1. Включите Secure DNS
* В Chrome - "Использовать безопасный DNS", и выбрать поставщика услуг DNS (выбрать вариант, отличный от поставщика по умолчанию) * В Chrome - "Использовать безопасный DNS", и выбрать поставщика услуг DNS (выбрать вариант, отличный от поставщика по умолчанию)
* В Firefox - "Включить DNS через HTTPS, используя: Максимальную защиту", затем "Выбрать поставщика" и вписать URL поставщика вручную, например можно использовать `https://dns.google/dns-query` (т.к. поставщик Cloudflare может быть заблокирован) * В Firefox - "Включить DNS через HTTPS, используя: Максимальную защиту", затем "Выбрать поставщика" и вписать URL поставщика вручную, например можно использовать `https://dns.google/dns-query` (т.к. поставщик Cloudflare может быть заблокирован)
* В Windows 11 поддерживается включение Secure DNS прямо в настройках ОС - [инструкция тут](https://www.howtogeek.com/765940/how-to-enable-dns-over-https-on-windows-11/). Рекомендуется, если вы пользуетесь Windows 11 * В Windows 11 поддерживается включение Secure DNS прямо в настройках ОС - [инструкция тут](https://remontka.pro/dns-over-https-windows-11/). Рекомендуется, если вы пользуетесь Windows 11
* Если у вас роутер Keenetic, включите в настройках роутера опцию "Транзит запросов". Отключение этой опции может привести к проблемам при настройке и использовании Secure DNS на компьютере
2. Скачайте архив (zip/rar) со [страницы последнего релиза](https://github.com/Flowseal/zapret-discord-youtube/releases/latest) 2. Скачайте архив (zip/rar) со [страницы последнего релиза](https://github.com/Flowseal/zapret-discord-youtube/releases/latest)
@@ -162,9 +163,26 @@ sc delete название_из_первогоага
- Если Discord и в браузере не работает, убедитесь что вы настроили Secure DNS, и после этого ещё раз пробуйте все стратегии. Бывает такое, что на одной стратегии YouTube работает, а Discord нет. - Если Discord и в браузере не работает, убедитесь что вы настроили Secure DNS, и после этого ещё раз пробуйте все стратегии. Бывает такое, что на одной стратегии YouTube работает, а Discord нет.
- См. также [#252](https://github.com/Flowseal/zapret-discord-youtube/discussions/252) - См. также [#252](https://github.com/Flowseal/zapret-discord-youtube/discussions/252)
### Не работает <img src="https://cdn-icons-png.flaticon.com/128/5968/5968804.png" height=18 /> Telegram
- Используйте программу [tg-ws-proxy](https://github.com/Flowseal/tg-ws-proxy)
- Или используйте бесплатные MTProto прокси из интернета
### Не работают игры
Есть много разных игр. Исследовать и чинить каждую из них нет возможности.
Наиболее универсальный рецепт такой:
- через `service.bat` обновите ipset и включите `Game Filter`
- если это не поможет, то попробуйте также включить настройку `ipset any`
Но помните, что при включении `ipset any` появятся проблемы с открытием многих сайтов. Чтобы этого избежать, не используйте `ipset any` на постоянной основе. Вместо этого нужно выяснить все IP адреса, которые используются игрой, и добавить их в `ipset-all.txt`
Если и это не помогло, создайте ветку обсуждений в разделе [Discussions](https://github.com/Flowseal/zapret-discord-youtube/discussions) (не в issues) и ждите помощи от других игроков.
### Не нашли своей проблемы ### Не нашли своей проблемы
* Создайте её [тут](https://github.com/Flowseal/zapret-discord-youtube/issues) - Создайте её [тут](https://github.com/Flowseal/zapret-discord-youtube/issues)
## 🗒️Добавление адресов прочих ресурсов ## 🗒️Добавление адресов прочих ресурсов

25
general (ALT12).bat Normal file
View File

@@ -0,0 +1,25 @@
@echo off
chcp 65001 > nul
:: 65001 - UTF-8
cd /d "%~dp0"
call service.bat status_zapret
call service.bat check_updates
call service.bat load_game_filter
call service.bat load_user_lists
echo:
set "BIN=%~dp0bin\"
set "LISTS=%~dp0lists\"
cd /d %BIN%
start "zapret: %~n0" /min "%BIN%winws.exe" --wf-tcp=80,443,2053,2083,2087,2096,8443,%GameFilterTCP% --wf-udp=443,19294-19344,50000-50100,%GameFilterUDP% ^
--filter-udp=443 --hostlist="%LISTS%list-general.txt" --hostlist="%LISTS%list-general-user.txt" --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic="%BIN%quic_initial_www_google_com.bin" --new ^
--filter-udp=19294-19344,50000-50100 --filter-l7=discord,stun --dpi-desync=fake --dpi-desync-fake-discord="%BIN%stun.bin" --dpi-desync-fake-discord="%BIN%quic_initial_dbankcloud_ru.bin" --dpi-desync-fake-stun="%BIN%quic_initial_dbankcloud_ru.bin" --dpi-desync-repeats=3 --new ^
--filter-tcp=2053,2083,2087,2096,8443 --hostlist-domains=discord.media --dpi-desync=fake,multisplit --dpi-desync-split-seqovl=681 --dpi-desync-split-pos=1 --dpi-desync-fooling=ts --dpi-desync-repeats=8 --dpi-desync-split-seqovl-pattern="%BIN%tls_clienthello_www_google_com.bin" --dpi-desync-fake-tls="%BIN%tls_clienthello_www_google_com.bin" --new ^
--filter-tcp=443 --hostlist="%LISTS%list-google.txt" --ip-id=zero --dpi-desync=hostfakesplit --dpi-desync-fooling=ts --dpi-desync-hostfakesplit-mod=host=www.google.com --new ^
--filter-tcp=80,443 --hostlist="%LISTS%list-general.txt" --hostlist="%LISTS%list-general-user.txt" --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake,multisplit --dpi-desync-split-seqovl=664 --dpi-desync-split-pos=1 --dpi-desync-fooling=ts --dpi-desync-repeats=8 --dpi-desync-split-seqovl-pattern="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-tls="%BIN%stun.bin" --dpi-desync-fake-tls="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-http="%BIN%tls_clienthello_max_ru.bin" --new ^
--filter-udp=443 --ipset="%LISTS%ipset-all.txt" --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=11 --dpi-desync-fake-quic="%BIN%quic_initial_www_google_com.bin" --new ^
--filter-tcp=80,443,8443 --ipset="%LISTS%ipset-all.txt" --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake,multisplit --dpi-desync-split-seqovl=664 --dpi-desync-split-pos=1 --dpi-desync-fooling=ts --dpi-desync-repeats=8 --dpi-desync-split-seqovl-pattern="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-tls="%BIN%stun.bin" --dpi-desync-fake-tls="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-http="%BIN%tls_clienthello_max_ru.bin" --new ^
--filter-tcp=%GameFilterTCP% --ipset="%LISTS%ipset-all.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake,multisplit --dpi-desync-any-protocol=1 --dpi-desync-cutoff=n4 --dpi-desync-split-seqovl=664 --dpi-desync-split-pos=1 --dpi-desync-fooling=ts --dpi-desync-repeats=8 --dpi-desync-split-seqovl-pattern="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-tls="%BIN%stun.bin" --dpi-desync-fake-tls="%BIN%tls_clienthello_max_ru.bin" --dpi-desync-fake-http="%BIN%tls_clienthello_max_ru.bin" --new ^
--filter-udp=%GameFilterUDP% --ipset="%LISTS%ipset-all.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=10 --dpi-desync-any-protocol=1 --dpi-desync-fake-unknown-udp="%BIN%quic_initial_dbankcloud_ru.bin" --dpi-desync-cutoff=n4

File diff suppressed because it is too large Load Diff

View File

@@ -5,28 +5,45 @@ twitch.tv
mail.ru mail.ru
citilink.ru citilink.ru
yandex.com yandex.com
yandex.net
yandex.org
yandex.md
yandex.ru
yandexadexchange.net
yandexcloud.net
yandexcom.net
yandexmetrica.com
yandexwebcache.net
yandexwebcache.org
yastat.net
yastatic-net.ru
yastatic.net
ya.ru
adfox.ru
admetrica.ru
naydex.net
rostaxi.org
turbopages.org
webvisor.com
webvisor.org
nvidia.com nvidia.com
donationalerts.com donationalerts.com
vk.com vk.com
yandex.kz yandex.kz
mts.ru mts.ru
multimc.org multimc.org
ya.ru
dns-shop.ru dns-shop.ru
habr.com habr.com
3dnews.ru 3dnews.ru
sberbank.ru
ozon.ru
wildberries.ru
microsoft.com microsoft.com
microsoftonline.com microsoftonline.com
live.com live.com
sharepoint.com
minecraft.net minecraft.net
xboxlive.com xboxlive.com
akamaitechnologies.com akamaitechnologies.com
msi.com msi.com
2ip.ru 2ip.ru
yandex.ru
boosty.to boosty.to
tanki.su tanki.su
lesta.ru lesta.ru
@@ -41,12 +58,13 @@ riotcdn.net
leagueoflegends.com leagueoflegends.com
playvalorant.com playvalorant.com
marketplace.visualstudio.com marketplace.visualstudio.com
gallery.vsassets.io
gallerycdn.vsassets.io
gosuslugi.ru gosuslugi.ru
gov.ru gov.ru
nalog.ru nalog.ru
spb.ru spb.ru
mos.ru mos.ru
yandex.net
vk.ru vk.ru
vk.me vk.me
vkvideo.ru vkvideo.ru
@@ -54,14 +72,11 @@ ok.ru
mycdn.me mycdn.me
okcdn.ru okcdn.ru
odkl.ru odkl.ru
wbbasket.ru
wb.ru wb.ru
ozone.ru
geobasket.ru geobasket.ru
paywb.com paywb.com
rwb.ru rwb.ru
wb-basket.ru wb-basket.ru
wb.ru
wbbasket.ru wbbasket.ru
wbpay.ru wbpay.ru
wibes.ru wibes.ru
@@ -92,6 +107,8 @@ sberbank.ru
cdn-tinkoff.ru cdn-tinkoff.ru
tbank-online.com tbank-online.com
tbank.ru tbank.ru
t-bank-app.ru
tochka-tech.com tochka-tech.com
tochka.com tochka.com
vtb.ru vtb.ru
steamcommunity.com

View File

@@ -10,9 +10,11 @@ youtube-ui.l.google.com
youtube.com youtube.com
youtubeembeddedplayer.googleapis.com youtubeembeddedplayer.googleapis.com
youtubekids.com youtubekids.com
youtube.googleapis.com
youtubei.googleapis.com youtubei.googleapis.com
youtu.be youtu.be
yt-video-upload.l.google.com yt-video-upload.l.google.com
ytimg.com ytimg.com
ytimg.l.google.com ytimg.l.google.com
play.google.com play.google.com
google.ru

View File

@@ -1,5 +1,5 @@
@echo off @echo off
set "LOCAL_VERSION=1.9.8b" set "LOCAL_VERSION=1.9.9b"
:: External commands :: External commands
if "%~1"=="status_zapret" ( if "%~1"=="status_zapret" (
@@ -52,17 +52,22 @@ if "%1"=="admin" (
:: MENU ================================ :: MENU ================================
title ZAPRET SERVICE MANAGER v!LOCAL_VERSION!
setlocal EnableDelayedExpansion setlocal EnableDelayedExpansion
:menu :menu
cls cls
call :ipset_switch_status call :ipset_switch_status
call :game_switch_status call :game_switch_status
call :check_updates_switch_status call :check_updates_switch_status
call :get_strategy_name
set "menu_choice=null" set "menu_choice=null"
echo. echo.
echo ZAPRET SERVICE MANAGER v!LOCAL_VERSION! echo ZAPRET SERVICE MANAGER v!LOCAL_VERSION!
echo. !CurrentStrategy!
echo ---------------------------------------- echo ----------------------------------------
echo. echo.
echo :: SERVICE echo :: SERVICE
@@ -113,7 +118,8 @@ if not exist "%LISTS_PATH%ipset-exclude-user.txt" (
echo 203.0.113.113/32>"%LISTS_PATH%ipset-exclude-user.txt" echo 203.0.113.113/32>"%LISTS_PATH%ipset-exclude-user.txt"
) )
if not exist "%LISTS_PATH%list-general-user.txt" ( if not exist "%LISTS_PATH%list-general-user.txt" (
echo domain.example.abc>"%LISTS_PATH%list-general-user.txt" echo # Never leave this file empty>"%LISTS_PATH%list-general-user.txt"
echo domain.example.abc>>"%LISTS_PATH%list-general-user.txt"
) )
if not exist "%LISTS_PATH%list-exclude-user.txt" ( if not exist "%LISTS_PATH%list-exclude-user.txt" (
echo domain.example.abc>"%LISTS_PATH%list-exclude-user.txt" echo domain.example.abc>"%LISTS_PATH%list-exclude-user.txt"
@@ -124,6 +130,7 @@ exit /b
:: TCP ENABLE ========================== :: TCP ENABLE ==========================
:tcp_enable :tcp_enable
chcp 437 > nul
netsh interface tcp show global | findstr /i "timestamps" | findstr /i "enabled" > nul || netsh interface tcp set global timestamps=enabled > nul 2>&1 netsh interface tcp show global | findstr /i "timestamps" | findstr /i "enabled" > nul || netsh interface tcp set global timestamps=enabled > nul 2>&1
exit /b exit /b
@@ -816,7 +823,7 @@ for /f %%i in ('type "%listFile%" 2^>nul ^| find /c /v ""') do set "lineCount=%%
if !lineCount!==0 ( if !lineCount!==0 (
set "IPsetStatus=any" set "IPsetStatus=any"
) else ( ) else (
findstr /R "^203\.0\.113\.113/32$" "%listFile%" >nul findstr /C:"203.0.113.113/32" "%listFile%" >nul
if !errorlevel!==0 ( if !errorlevel!==0 (
set "IPsetStatus=none" set "IPsetStatus=none"
) else ( ) else (
@@ -994,6 +1001,13 @@ pause
goto menu goto menu
:: Get strategy name
:get_strategy_name
set "CurrentStrategy="
for /f "tokens=2*" %%A in ('reg query "HKLM\System\CurrentControlSet\Services\zapret" /v zapret-discord-youtube 2^>nul') do set "CurrentStrategy=Strategy: %%B"
exit /b
:: Utility functions :: Utility functions
:PrintGreen :PrintGreen

View File

@@ -838,13 +838,18 @@ try {
Write-Host "" Write-Host ""
Write-Host "=== ANALYTICS ===" -ForegroundColor Cyan Write-Host "=== ANALYTICS ===" -ForegroundColor Cyan
$maxConfigLen = ($analytics.Keys | ForEach-Object { $_.Length } | Measure-Object -Maximum).Maximum
foreach ($config in $analytics.Keys) { foreach ($config in $analytics.Keys) {
$a = $analytics[$config] $a = $analytics[$config]
$configPadded = $config.PadRight($maxConfigLen)
if ($a.ContainsKey('PingOK')) { if ($a.ContainsKey('PingOK')) {
Write-Host "$config : HTTP OK: $($a.OK), ERR: $($a.ERROR), UNSUP: $($a.UNSUP), Ping OK: $($a.PingOK), Fail: $($a.PingFail)" -ForegroundColor Yellow $line = "{0} : HTTP OK: {1,3}, ERR: {2,3}, UNSUP: {3,3}, Ping OK: {4,3}, Fail: {5,3}" -f `
$configPadded, $a.OK, $a.ERROR, $a.UNSUP, $a.PingOK, $a.PingFail
} else { } else {
Write-Host "$config : OK: $($a.OK), FAIL: $($a.FAIL), UNSUP: $($a.UNSUPPORTED), BLOCKED: $($a.LIKELY_BLOCKED)" -ForegroundColor Yellow $line = "{0} : OK: {1,3}, FAIL: {2,3}, UNSUP: {3,3}, BLOCKED: {4,3}" -f `
$configPadded, $a.OK, $a.FAIL, $a.UNSUPPORTED, $a.LIKELY_BLOCKED
} }
Write-Host $line -ForegroundColor Yellow
} }
# Determine best strategy # Determine best strategy
@@ -894,13 +899,20 @@ try {
foreach ($targetRes in $results) { foreach ($targetRes in $results) {
$id = $targetRes.TargetId $id = $targetRes.TargetId
$provider = $targetRes.Provider $provider = $targetRes.Provider
Add-Content $resultFile " Target: $id ($provider)" $country = $targetRes.Country
if ($country) {
Add-Content $resultFile " Target: [$country] $id ($provider)"
} else {
Add-Content $resultFile " Target: $id ($provider)"
}
foreach ($line in $targetRes.Lines) { foreach ($line in $targetRes.Lines) {
$test = $line.TestLabel $test = $line.TestLabel
$code = $line.Code $code = $line.Code
$size = $line.SizeKB $up = $line.UpKB
$down = $line.DownKB
$time = $line.Time
$status = $line.Status $status = $line.Status
Add-Content $resultFile " ${test}: code=${code} size=${size} KB status=${status}" Add-Content $resultFile " ${test}: code=${code} up=${up} KB down=${down} KB time=${time}s status=${status}"
} }
} }
} }
@@ -909,13 +921,18 @@ try {
# Add analytics # Add analytics
Add-Content $resultFile "=== ANALYTICS ===" Add-Content $resultFile "=== ANALYTICS ==="
$maxConfigLen = ($analytics.Keys | ForEach-Object { $_.Length } | Measure-Object -Maximum).Maximum
foreach ($config in $analytics.Keys) { foreach ($config in $analytics.Keys) {
$a = $analytics[$config] $a = $analytics[$config]
$configPadded = $config.PadRight($maxConfigLen)
if ($a.ContainsKey('PingOK')) { if ($a.ContainsKey('PingOK')) {
Add-Content $resultFile "$config : HTTP OK: $($a.OK), ERR: $($a.ERROR), UNSUP: $($a.UNSUP), Ping OK: $($a.PingOK), Fail: $($a.PingFail)" $line = "{0} : HTTP OK: {1,3}, ERR: {2,3}, UNSUP: {3,3}, Ping OK: {4,3}, Fail: {5,3}" -f `
$configPadded, $a.OK, $a.ERROR, $a.UNSUP, $a.PingOK, $a.PingFail
} else { } else {
Add-Content $resultFile "$config : OK: $($a.OK), FAIL: $($a.FAIL), UNSUP: $($a.UNSUPPORTED), BLOCKED: $($a.LIKELY_BLOCKED)" $line = "{0} : OK: {1,3}, FAIL: {2,3}, UNSUP: {3,3}, BLOCKED: {4,3}" -f `
$configPadded, $a.OK, $a.FAIL, $a.UNSUPPORTED, $a.LIKELY_BLOCKED
} }
Add-Content $resultFile $line
} }
Add-Content $resultFile "Best strategy: $bestConfig" Add-Content $resultFile "Best strategy: $bestConfig"