31 Commits

Author SHA1 Message Date
Flowseal
d75903b44c Version bump 2026-07-04 21:46:57 +03:00
Matvey Beloded
36f4452342 Improve "Install Service" menu (#15571) 2026-06-30 17:11:19 +03:00
lxstwxrden
cb6c83d13b Обновить QUIC бинарник для игр (#15532) 2026-06-30 17:10:08 +03:00
ControlRe
d3aabff5d8 Update github-bot.yml (#15334) 2026-06-23 18:11:20 +03:00
Flowseal
0f2b8dd6eb revert twitch 2026-06-23 13:03:50 +03:00
Flowseal
d7eedce22a hosts update 2026-06-23 13:00:33 +03:00
Flowseal
7174c5bcb3 kick, twitch fix 2026-06-23 12:41:12 +03:00
Flowseal
02f6e89f81 Version bump 2026-06-15 07:45:11 +03:00
Flowseal
b62f558c7b release workflow changes 2026-06-15 07:44:24 +03:00
Flowseal
100a0c9a41 fixes #15004 2026-06-15 07:36:51 +03:00
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
15 changed files with 8091 additions and 5698 deletions

3
.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

@@ -1,6 +1,6 @@
trusted_users: trusted_users:
- Flowseal - Flowseal
- Kail-225 - ControlRe
- ekungurov - ekungurov
- V3nilla - V3nilla
- serpen7 - serpen7
@@ -11,3 +11,4 @@ trusted_users:
- prettyleaf - prettyleaf
- amozebus - amozebus
- fridorin - fridorin
- kinlay0

View File

@@ -26,18 +26,45 @@ jobs:
fi fi
- name: Install tools - name: Install tools
run: sudo apt-get install -y rar p7zip-full run: |
sudo apt-get update
sudo apt-get install -y zip tar rar
- name: Prepare release bundle
run: |
NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}"
mkdir "$NAME"
cp -r bin "$NAME/"
cp -r lists "$NAME/"
cp -r utils "$NAME/"
cp *.bat "$NAME/"
cp README.md "$NAME/"
cp LICENSE.txt "$NAME/"
(
cd "$NAME"
find . -type f -exec sha256sum {} \;
) > "$NAME/SHA256SUMS.txt"
- name: Create archives - name: Create archives
run: | run: |
NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}" NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}"
7z a "${NAME}.zip" bin/ lists/ utils/ *.bat
rar a "${NAME}.rar" bin/ lists/ utils/ *.bat zip -qr "${NAME}.zip" "$NAME"
rar a -idq "${NAME}.rar" "$NAME"
tar --owner=0 --group=0 -czf "${NAME}.tar.gz" "$NAME"
- name: Print SHA256 checksums - name: Print SHA256 checksums
run: | run: |
NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}" NAME="zapret-discord-youtube-${{ github.event.inputs.tag }}"
sha256sum "${NAME}.zip" "${NAME}.rar"
sha256sum \
"${NAME}.zip" \
"${NAME}.rar" \
"${NAME}.tar.gz"
- name: Create GitHub Release - name: Create GitHub Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
@@ -47,3 +74,4 @@ jobs:
files: | files: |
zapret-discord-youtube-${{ github.event.inputs.tag }}.zip zapret-discord-youtube-${{ github.event.inputs.tag }}.zip
zapret-discord-youtube-${{ github.event.inputs.tag }}.rar zapret-discord-youtube-${{ github.event.inputs.tag }}.rar
zapret-discord-youtube-${{ github.event.inputs.tag }}.tar.gz

View File

@@ -1,3 +1,10 @@
185.199.109.133 objects.githubusercontent.com
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
149.154.167.220 my.telegram.org 149.154.167.220 my.telegram.org
149.154.167.220 oauth.telegram.org 149.154.167.220 oauth.telegram.org
149.154.167.220 cdn.telesco.pe 149.154.167.220 cdn.telesco.pe
@@ -6,7 +13,6 @@
149.154.167.220 cdn3.telesco.pe 149.154.167.220 cdn3.telesco.pe
149.154.167.220 cdn4.telesco.pe 149.154.167.220 cdn4.telesco.pe
149.154.167.220 cdn5.telesco.pe 149.154.167.220 cdn5.telesco.pe
149.154.167.220 api.telegram.org
149.154.167.220 core.telegram.org 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
@@ -31,10 +37,6 @@
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
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.8c 1.9.9d

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)
## 🗒️Добавление адресов прочих ресурсов ## 🗒️Добавление адресов прочих ресурсов

Binary file not shown.

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

@@ -1,29 +1,47 @@
pusher.com pusher.com
live-video.net
ttvnw.net
twitch.tv 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
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
@@ -38,12 +56,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
@@ -86,6 +105,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

@@ -47,3 +47,4 @@ betterttv.net
7tv.io 7tv.io
localizeapi.com localizeapi.com
klipy.com klipy.com
live-video.net

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.8c" set "LOCAL_VERSION=1.9.9d"
:: External commands :: External commands
if "%~1"=="status_zapret" ( if "%~1"=="status_zapret" (
@@ -53,8 +53,11 @@ if "%1"=="admin" (
:: MENU ================================ :: MENU ================================
setlocal EnableDelayedExpansion setlocal EnableDelayedExpansion
title ZAPRET SERVICE MANAGER v!LOCAL_VERSION!
: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
@@ -115,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"
@@ -234,16 +238,22 @@ echo Pick one of the options:
set "count=0" set "count=0"
for /f "delims=" %%F in ('powershell -NoProfile -Command "Get-ChildItem -LiteralPath '.' -Filter '*.bat' | Where-Object { $_.Name -notlike 'service*' } | Sort-Object { [Regex]::Replace($_.Name, '(\d+)', { $args[0].Value.PadLeft(8, '0') }) } | ForEach-Object { $_.Name }"') do ( for /f "delims=" %%F in ('powershell -NoProfile -Command "Get-ChildItem -LiteralPath '.' -Filter '*.bat' | Where-Object { $_.Name -notlike 'service*' } | Sort-Object { [Regex]::Replace($_.Name, '(\d+)', { $args[0].Value.PadLeft(8, '0') }) } | ForEach-Object { $_.Name }"') do (
set /a count+=1 set /a count+=1
echo !count!. %%F echo !count!. %%F
set "file!count!=%%F" set "file!count!=%%F"
) )
echo 0. Exit
echo.
:: Choosing file :: Choosing file
set "choice=" set "choice="
set /p "choice=Input file index (number): " set /p "choice=Input option (0-!count!, default: 0): "
if "!choice!"=="" ( if "!choice!"=="" (
echo The choice is empty, exiting... set "choice=0"
pause )
if "!choice!"=="0" (
goto menu goto menu
) )
@@ -819,7 +829,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 (

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
@@ -916,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"