Программа зовётся NetZapret.exe
Запускается тот же файл, только под своим именем: NetZapret.exe вместо
NetZapret.Gui.exe. Окно и есть программа, и носить приставку ему больше
незачем.
Обновление это учитывает: старый файл убирается, новый запускается сам.
Распаковывая архив поверх руками, удалите NetZapret.Gui.exe — иначе рядом
останутся два, и какой из них запускать, станет неочевидно.
Задачу автозапуска придётся завести заново. Её команда записана внутрь
задачи целиком и указывает на прежнее имя. «Главная» такую задачу узнаёт
и говорит «заведена, но устарела» — лечится двумя кнопками, «Убрать»
и «Завести».
Ссылки-обёртки принимаются
happ://add/, clash://install-config и sn://subscription — те самые,
за которыми у поставщика одна кнопка «добавить в клиент». Программа их
понимала и раньше, но проверка при добавлении стояла раньше разбора
и требовала непременно http или https.
Десинк не трогает прибитые в hosts имена
Пин — это выбранный руками адрес вместо того, что даёт резолвер, и выбран он
потому, что работает. Десинк судит по имени в ClientHello, про подмену адреса
не знает и применяет к постороннему узлу рецепт, выверенный на настоящей сети
доставки. Рукопожатие рвётся, браузер показывает ERR_SSL_PROTOCOL_ERROR,
и виноватым выглядит пин.
Замер: TLS к прибитому адресу при остановленных движках проходит целиком —
TLS 1.3, сертификат тот самый. Адрес жив, ломал его запуск.
Отсюда же следствие, которое стоит знать: пин и VPN для одного имени
исключают друг друга. Пин говорит «иди на этот адрес», правило «через VPN» —
«иди через зарубежный выход», и вместе выходит «зайди на отечественный узел
из-за границы». Поэтому пин теперь сам ставит маршрут «напрямую», а часть
так и называется — «прибит в hosts», а не «напрямую».
Выбор выхода — в разделе VPN
Вернуть автоподбор стало можно. Прежде закрепить сервер кнопка «выбрать»
умела, а снять закрепление не умело ничто, кроме удаления подписки целиком.
Рядом сказано, что именно происходит: автоподбор опрашивает серверы и берёт
быстрейший из живых, а закреплённый не меняется, даже если перестанет
отвечать.
«Автоподбор только по зарубежным» переехал сюда же из «Ещё», где лежал
среди выключателей журнала и обновлений и находился только тем, кто знал,
что он есть.
Маршруты
Раскрытые папки переживают перерисовку. Прежде любое действие внутри —
пин, свой маршрут, обновление списка — собирало строки заново, и всё
захлопывалось: выбрал маршрут одной части, а следующую ищи с начала.
Выбранный маршрут виден сразу. Подпись слева и сводка папки считались при
сборке строк и показывали прежний маршрут до тех пор, пока не уйдёшь
с вкладки и не вернёшься, — даже после перезапуска движков.
Уведомление о перезапуске больше не всплывает при простом раскрытии папки.
Пресеты зовутся по своим файлам
Название бралось изнутри файла, и два разных файла с одинаковым названием
внутри выглядели как одна строка, повторённая дважды. Переименование файла
при этом ничего не меняло, а сохранённый выбор и поиск при запуске
расходились: запуск-то искал по имени файла. Название изнутри осталось
в подписи — по нему пресет узнают в чужих советах.
Движки видно и остановленными
На «Главной» они показаны серыми, а не исчезают. Пустое место читалось как
«их нет вовсе», тогда как раздел отвечает на другой вопрос: что должно
работать и работает ли.
Чем это собрано и как сверить
NetZapret.zip 155766AA151BAFA85C79BD498DE90C2465B05DB782A924179C54A7D03C798FC1
NetZapret.exe 1C2DB8D881294D46138BF6AC34CF32BCD7175C3EA56EECEFDE34FDF2F410F8C0
Пакет SDK .NET 8.0.424, сборка Release, win-x64, self-contained, один файл.
Проверить скачанное:
Get-FileHash NetZapret.zip -Algorithm SHA256
Собрать самому и сравнить:
git checkout v0.5.2
pack.cmd
Совпасть должен NetZapret.exe. Архив — нет: в нём лежат winws2 и sing-box,
собранные не нами, и их версии у вас могут отличаться.