Repository navigation
Releases: Asofwar/prokop
Release list
2.28.3
Исключение устройства снова применяется
Срочное исправление. Если в правиле были и «Исключить устройства», и встроенные списки с адресами (Telegram, Cloudflare, Discord, Meta, Twitter и подобные), Prokop собирал конфигурацию, которую sing-box 1.14 отвергал. Перезагрузка прерывалась, на роутере оставалась старая конфигурация, и устройство продолжало ходить через туннель, хотя в настройках уже было исключено. Обновление ставится поверх, настройки не меняются, ничего делать вручную не нужно.
Что изменилось
-
Исключение устройства больше не ломает конфигурацию sing-box. Для списков с адресами sing-box 1.14 сначала получает ответ DNS (шаг
evaluate), а уже потом сверяет адреса из ответа со списком. У этого шага нет собственных условий. Когда в правиле было исключённое устройство, Prokop оборачивал шаг в условие «и» с пустым первым условием, и sing-box отвечалparse dns rule[N]: missing conditions. В журнале это выглядело как[fatal] Generated sing-box configuration is invalid ... Aborted.сразу после сохранения правила, а nft и sing-box продолжали работать по старым правилам без исключения.Теперь у такого шага условием становится само исключение: «источник не исключённое устройство». Остальные правила с исключением не изменились.
Что проверено
- PASS: автоматические тесты бэкенда (полный прогон). Новая проверка
tests/sing_box_excluded_source_dns_rules.sh: ни одно правило DNS и маршрутизации не остаётся без условий, шагevaluateпропускает исключённое устройство. Без исправления она падает на том же правилеdns rule[5]. - PASS:
sing-box check(сборка 1.14.1 из исходников) на конфигурации, собранной по отчёту пользователя: до исправления та же ошибкаparse dns rule[5]: missing conditions, после исправления конфигурация принимается. - NOT TESTED: исправленная сборка на роутере.
2.28.2
sing-box больше не подключается сам к себе через DNS-вход устройств
Срочное исправление. Если у правила есть DNS-условия по устройствам (поиск DNS с учётом источника), sing-box мог по кругу открывать соединения сам к себе на 192.168.1.1:1603. Обновление ставится поверх, настройки не меняются, ничего делать вручную не нужно.
Что изменилось
-
DNS-входы sing-box принимают только DNS. DNS-запросы выбранных устройств nft перенаправляет с порта 53 на вход sing-box
:1603. Раньше такое соединение считалось DNS, только если его распознал сниффер. Если сниффер его не распознавал (обычно TCP DNS, у которого истёк таймаут распознавания), соединение уходило в правило по умолчанию «Напрямую». А его адресом назначения после перенаправления был сам вход192.168.1.1:1603. sing-box подключался к себе, новое соединение снова не распознавалось, и так по кругу.На роутере это выглядело так: в «Мониторинге» десятки соединений «192.168.1.1 → 192.168.1.1:1603, Напрямую, ни одно правило не сработало» с нулевым входящим трафиком. Под капотом были тысячи сокетов TIME_WAIT, около 13 тысяч записей conntrack, забитая очередь приёма на
:1603, высокая нагрузка на процессор и медленный DNS у этих устройств.Теперь всё, что приходит на DNS-входы sing-box (
dns-in,source-dns-inи входы проверки DNS-серверов), перехватывается как DNS, что бы ни сказал сниффер. Если в соединении не DNS, sing-box его закрывает, и в «Напрямую» оно больше не уходит.
Что проверено
- PASS: автоматические тесты бэкенда (полный прогон). Новая проверка в
tests/sing_box_runtime.sh: DNS-входы перехватываются правилом без условия на протокол сразу после сниффинга. Без исправления она падает. - PASS: на роутере (до исправления, только чтение) найдена сама петля: Clash API показывает соединения inbound
source-dns-in, 192.168.1.1 → 192.168.1.1:1603, правилоfinal, выходdirect-out. - NOT TESTED: исправленная сборка на роутере.
2.28.1
Названия встроенных списков без перевода
Встроенные наборы правил в разделе снова называются так же, как в источнике списков и в инструкциях: «Russia inside», «Russia outside», «Geo Block», «Porn» и так далее. Обновление ставится поверх, настройки не меняются.
Что изменилось
- Русские названия встроенных списков убраны. Перевод мешал понять, что включено: «Россия: блокируют извне» читалось как «то, что блокируют в России», хотя
russia_outsideнаоборот содержит российские сервисы (ozon.ru, gosuslugi.ru, nalog.ru, yandex.net и другие), недоступные из-за границы. Включённый вместе с «Russia inside» на роутере в России, он отправляет эти сервисы в VPN. - Сам состав списков и правила маршрутизации не менялись.
Что проверено
- PASS: фронтенд: prettier, eslint, tsc, vitest (1002 теста), сборка.
- PASS: полный прогон автоматических тестов бэкенда;
luci_builtin_ruleset_labelsпроверяет, что виджет встроенных списков показывает исходные названия в LuCI 24.10 и 25.12. - NOT TESTED: на роутере и в браузере. Стоит проверить, что в правиле список встроенных наборов показывает «Russia inside», «Russia outside» и остальные исходные названия.
2.28.0
Хранение истории и снимков
На странице «История и восстановление» теперь можно задать, сколько записей истории и снимков конфигурации хранить, и очистить их вручную. Длинные списки свёрнуты, страница стала короче. Обновление ставится поверх, настройки переносятся сами.
Что нужно знать при обновлении
- Снимков по умолчанию хранится 20 вместо 10, ручных из них может быть до 18 (было 8). Два места по-прежнему всегда остаются для автоматических снимков перед восстановлением, «Сохранить и применить» и автоподбором.
- История по умолчанию показывает 50 последних записей (было до 200). Если журнал длиннее, при следующей записи в нём останутся 50 последних.
Что изменилось
Лимиты хранения
- Новая карточка «Хранение»: сколько записей истории (от 20 до 200) и сколько снимков (от 6 до 50) хранить, и сколько их сейчас.
- Лимиты хранятся в
/etc/prokop/retention.json, а не в конфигурации Prokop. Восстановление снимка их не меняет, и для их смены не нужна перезагрузка. - Уменьшенный лимит действует сразу: лишние старые записи и самые старые автоматические снимки удаляются. Перед этим страница говорит, что именно будет удалено, и просит подтверждения.
Автоматическая очистка и «Очистить…»
- Сверх лимита удаляются только старые записи истории и автоматические снимки. Ручные снимки автоматически не удаляются никогда.
- «Очистить…» у снимков удаляет все автоматические снимки, которые ничем не защищены. Ручные остаются.
- Никакая очистка не трогает последний рабочий снимок, снимок, к которому ещё можно откатить автоподбор (в том числе если автоподбор прервался до того, как записал его), снимок неприменённого изменения из «Сохранить и применить», а также снимки «Перед восстановлением» и «Параллельная правка», пока стоит DPI-защита незавершённого восстановления или её состояние нельзя проверить. Такие снимки нельзя удалить и по одному: меню объясняет почему.
- «Очистить…» у истории удаляет записи журнала, в нём остаётся одна запись об очистке. Состояние восстановления от журнала не зависит: неудачное изменение по-прежнему потребует восстановления.
- Очистка и смена лимитов идут под блокировкой снимков и ждут, пока закончится автоподбор: проверка нового кандидата приняла бы их за помеху и откатила бы хорошую стратегию.
- Очистка и лимиты доступны только администратору. Пользователь с доступом только на чтение видит лимиты и счётчики, но кнопок не видит, и ACL на чтение новых команд не даёт.
Списки
- История показывает 10 последних событий, дальше кнопка «Показать ещё». Снимков сначала видно 5, остальные по кнопке «Показать все».
Что проверено
- PASS: полный прогон автоматических тестов бэкенда от root и от непривилегированного пользователя. Падают только тесты, которые так же падают на 2.27.0 в этом окружении (нет
jq, Node 18, нет nft для непривилегированного пользователя).readonly_hostile_envот root дважды упал при параллельном прогоне (другие тесты пишут в/var/run/prokopхоста) и трижды прошёл отдельно. Новые команды проверены: они не пишут в/var/run/prokopхоста. Фронтенд: prettier, eslint, tsc, vitest, сборка. - PASS: новый тест
history_retentionпроверяет границы лимитов, удаление сверх лимита, все виды защищённых снимков, отказ при занятой блокировке снимков и журнала, и что очистка истории не скрывает неудачное изменение. - PASS: вкладка «История и восстановление» отрисована в Chromium на 1440/1024/768 по-русски с раскрытыми списками, ошибкой ввода и диалогом подтверждения. Горизонтальной прокрутки и обрезанных кнопок нет, режим только чтения тоже проверен (без темы LuCI, данные подставлены).
- NOT TESTED: на роутере. В первую очередь стоит проверить: карточку «Хранение» и уменьшение лимита на настоящих снимках; «Очистить…» у снимков, когда стоит DPI-защита незавершённого восстановления; что история после обновления показывает 50 записей.
2.27.0
Оптимизации и защита TorrServer
Перезапуск быстрее, панель легче, у TorrServer появились пароль и изоляция, счётчики трафика дешевле. Обновление ставится поверх, настройки переносятся сами.
Что нужно знать при обновлении
- Счётчики трафика по устройствам один раз начнутся с нуля: при обновлении их таблица пересоздаётся.
- TorrServer один раз перезапустится: он получает мягкий предел памяти.
Что изменилось
TorrServer
- Новая вкладка «Настройки → TorrServer».
- Можно включить пароль на веб-страницу и API TorrServer. Приложения, которые работают через API (Lampa, MSX), тогда попросят имя пользователя и пароль. Ссылки на потоки остаются открытыми. Если пароль включён, но имя или пароль не годятся, TorrServer не запускается и пишет причину в журнал.
- Можно запускать TorrServer в изоляции procd (ujail): он видит только свою программу, свою базу, каталоги кэша на диске и несколько системных файлов. Опция доступна, только если на роутере установлен пакет
procd-ujail. - Пароль и изоляция по умолчанию выключены. Их изменение перезапускает TorrServer, изменение остальных настроек Prokop его не трогает.
- TorrServer получает мягкий предел памяти Go (размер кэша плюс 64 МБ). С ним Go раньше возвращает память, но TorrServer никогда не падает из-за этого предела. Если предел вышел бы больше половины памяти роутера, он не ставится.
- Рекомендуемые настройки выключают Bonjour: он объявлял TorrServer на всех адресах роутера, включая WAN.
Запуск
- Перезапуск, когда с проверки перед ним ничего не изменилось, больше не собирает и не проверяет конфигурацию sing-box второй раз. Это экономит несколько секунд и около 100 МБ пиковой памяти. Если изменилось хоть что-то (настройки, подписки, списки, кэши, сам sing-box или код Prokop), конфигурация собирается заново, как раньше. В журнале видно, какой путь выбран.
Трафик по устройствам
- Подсчёт пакетов дешевле: пакет только прибавляется к счётчику и не переписывает срок хранения записи. Адреса, по которым не было трафика 7 дней, удаляются раз в час.
- Страница «Устройства» обновляется раз в 5 секунд вместо 3.
Автоподбор
- После автоматической смены стратегии «последняя рабочая конфигурация» обновляется, только когда наблюдение прошло. Стратегия, которая не прошла наблюдение, истекла или была остановлена, никогда не становится конфигурацией, к которой Prokop откатывается. Карточка автоподбора показывает, что наблюдение прошло и ждёт записи, и отдельно, если оно закончилось без записи. Если наблюдение закончилось без результата (истекло или автоматический режим выключили), следующие автоматические применения не выполняются, пока вы не откатите стратегию или не смените её вручную: карточка объясняет это.
- Ответы серверов при подборе считаются одним правилом nft вместо одного правила на каждую стратегию. Если ядро не поддерживает такой счётчик, автоматически используется прежний способ.
Интерфейс
- Страницы Prokop в LuCI загружают меньше JavaScript: файлы страниц поставляются сжатыми (на 30% меньше, −122 КБ), а общий модуль панели стал на 12 КБ меньше. Прогресс обновления компонентов и таблица устройств загружаются только на своих страницах. Внешне ничего не меняется.
Что проверено
- PASS: полный прогон автоматических тестов бэкенда от root и от непривилегированного пользователя без
uci(как в CI). Фронтенд: prettier, eslint, tsc, vitest, сборка. На каждое изменение добавлен тест, который не проходит на 2.26.0 и проходит теперь. Счётчики трафика, удаление простаивающих адресов и счётчик ответов автоподбора проверены на настоящемnftс настоящими пакетами. - PASS: таблица устройств и панели прогресса, загруженные отдельными модулями, отрисованы в Chromium на 1440/1024/768 по-русски без горизонтальной прокрутки (без темы LuCI).
- NOT TESTED: на роутере. В первую очередь стоит проверить: пароль TorrServer с Lampa; запуск в ujail и работу TorrServer напрямую при нём; одну сборку конфигурации при перезапуске (строка в журнале); счётчик ответов автоподбора на ядре OpenWrt 25.12; что все страницы Prokop открываются без ошибок в консоли после очистки кэша браузера.
2.26.1
Исправление TorrServer после 2.26.0
Срочное исправление ошибок, найденных при проверке 2.26.0 на роутере. Обновление ставится поверх, ничего делать вручную не нужно.
Что изменилось
- TorrServer снова запускается на роутерах, где он был установлен до 2.26.0. Каталог
/opt/torrserver, созданный прежними версиями, был доступен только root, и TorrServer, который с 2.26.0 работает от пользователяtorrserver, не мог запустить свою программу: procd перезапускал его по кругу. Теперь каталог открывается на чтение для всех, а писать в него по-прежнему может только root. - Настройки TorrServer, сохранённые в
settings.json, больше не теряются. Если в TorrServer включено хранение настроек в JSON, файлsettings.json, а также история просмотровviewed.json, переезжают в/opt/torrserver/dataвместе с базой. При sysupgrade они сохраняются. - Уведомление «Конфигурация успешно применена» снова показывает значения обычных настроек, например
settings.intercept_client_dns: 1 → 0, а не*** → ***. Скрываются только настройки, где может быть секрет (пароли, токены, ссылки, chat ID, имена пользователей, HWID), и значения с адресами или произвольным текстом. - Сам роутер больше не показывается устройством в трафике по устройствам.
Что проверено
- PASS: полный прогон автоматических тестов бэкенда от root и от непривилегированного пользователя без
uci(как в CI). Новые проверки не проходят на 2.26.0 и проходят теперь: запуск из каталога 0700, переносsettings.jsonиviewed.json, список сохранения при sysupgrade, отказ запуска при ссылке вместо каталога, значения обычных настроек в уведомлении о применении при скрытых секретах, адрес роутера не считается устройством (на настоящемnft). - PASS на роутере (2.26.0): перенос настроек, DNS и HTTPS, расписание уведомлений, трафик по устройствам. Ошибки этого выпуска найдены там же.
- NOT TESTED: сам выпуск 2.26.1 на роутере.
2.26.0
Исправления по аудиту от 5 октября
Большой набор исправлений по аудиту версии 2.25.2: уведомления, TorrServer, перехват DNS, трафик по устройствам, запуск и sing-box, подписки, автоподбор, обновления. Обновление ставится поверх, настройки переносятся сами.
Что нужно знать при обновлении
- Перехват DNS клиентов теперь выключен по умолчанию, в том числе на уже установленных роутерах. Опция перехватывала любой трафик на порт 53, а не только DNS: ломались VPN-клиенты в LAN, подключённые к серверу на 53-м порту, и собственные резолверы в сети (Pi-hole, unbound). После обновления опция выключается один раз, в «Истории» появляется запись об этом. Если перехват нужен, включите его снова: «Настройки → Сеть». Для включённого перехвата появился список «Не перехватывать» (адреса и подсети, например VPN-сервер или резолвер в LAN). Делегированные IPv6-префиксы теперь тоже считаются локальными. Если dnsmasq не обслуживает интерфейс или его DNS выключен, перехват для него не включается.
- TorrServer больше не работает от root. Он запускается от отдельного пользователя
torrserver, база переезжает в/opt/torrserver/dataавтоматически при первом запуске. Если вы включали в TorrServer кэш на диск (UseDisk) в каталог, куда может писать только root, дайте пользователюtorrserverправо записи в этот каталог.
Что изменилось
Уведомления
- Сообщения о падении sing-box или узла правила, через которое идёт Telegram, теперь доходят. Запасной путь «напрямую» узнаёт адрес сервера у bootstrap DNS из настроек, мимо DNS и FakeIP Prokop. Результат теста называет маршрут: «через правило», «обычным маршрутом роутера» или «напрямую, мимо Prokop». Если адрес не удалось узнать, причина пишется как ошибка DNS.
- Сообщение «Prokop не запустился» повторяется до 30 минут, даже если при загрузке ещё не было интернета.
- Фоновая задача уведомлений запускается раз в 5 минут, а раз в минуту только пока есть неотправленные сообщения. Если уведомления выключены, запуск, перезапуск и остановка Prokop их процесс не трогают.
- Выключение уведомлений больше не стирает chat ID, категории, маршрут и срок предупреждения.
- Длинное русское имя правила больше не ломает сообщение в Telegram. Скобки
[ ]и{ }в адресе webhook больше не превращаются в несколько запросов. - Предупреждения о подписках не повторяются после каждой перезагрузки. После продления подписки предупреждение о трафике снова придёт, когда трафик кончится.
- Без сети отправка ограничена 60 секундами за проход и не задерживает проверки узлов.
- Для webhook по
http://в интернет показывается предупреждение: токен в адресе уйдёт открытым текстом. - Пользователь с правом только на чтение видит кнопку «Отправить тест» неактивной с объяснением.
TorrServer
- Рекомендуемые настройки применяются только при первой установке или по кнопке. Обновление Prokop, «Запустить» и «Обновить» больше не перезаписывают ваши настройки и не сбрасывают торренты. Если значения уже совпадают, настройки не отправляются вовсе.
- Рекомендуемые настройки выключают UPnP, а окно подтверждения показывает реальный размер кэша в МБ.
- Состояние TorrServer в карточке обновляется сразу, а не через час, поэтому кнопка «Запустить» появляется, как только TorrServer остановился.
- Если на роутере стоит чужой TorrServer, Prokop не запускает его и не меняет его настройки, а карточка об этом говорит.
- Обновление TorrServer требует примерно вдвое меньше места и качается сразу на флеш. Прерванное обновление чинится автоматически.
- «TorrServer напрямую» больше не ломает трекеры из проксируемых списков (адреса FakeIP уходят в sing-box).
- База TorrServer сохраняется при sysupgrade. Все ошибки TorrServer переведены. Если рекомендуемые настройки не применились, карточка предупреждает.
Сеть и трафик по устройствам
- Kill-switch защищает интерфейсы с любыми допустимыми именами (раньше имена с
+и:молча оставались без защиты) и быстрее замечает молчащий sing-box (5 секунд вместо 10). - Для исключённых устройств со своим DNS kill-switch снова сохраняет исключение.
- Правила Discord больше не забирают UDP 443 общих диапазонов Cloudflare (QUIC чужих сайтов).
- Поле EDNS Client Subnet проверяет значение так же, как роутер.
- Трафик по устройствам: поддельные адреса источника больше не забивают таблицы, IPv6-адреса сводятся к устройству по MAC, широковещательные адреса не считаются устройствами. Список ограничен 200 самыми активными устройствами и предупреждает, когда он неполный. В панели сказано, что именно считается. Сброс счётчика замечается.
Запуск, sing-box и подписки
- Если запуск прервался во время загрузки списков, Prokop больше не остаётся заблокированным до перезагрузки: оставшийся временный sing-box останавливается при следующем запуске или остановке.
- Расширенные параметры xHTTP, которые установленный sing-box-extended не понимает, отбрасываются с предупреждением, и запуск больше не падает на них.
- Ручная ссылка, которую sing-box не может собрать (kcp, quic), пропускается с предупреждением, а не ломает всю конфигурацию.
- Подписки Clash с кавычками и экранированием читаются как YAML, поддерживаются
h2-optsи vmess httpupgrade. - Проверка новой конфигурации при перезапуске больше не меняет то, что показывает панель, и не удаляет файлы правил, нужные работающему sing-box.
- Выбор серверов в группах сохраняется при перезагрузке роутера. Группы Priority не сохраняются.
- Пока Prokop стартует при загрузке, LAN всегда получает DNS от dnsmasq.
- При холодном старте подписка, которая качается через другое правило, ждёт это правило, а не качается напрямую. Если временный прокси для списков не поднялся, запуск сразу останавливается с понятной причиной.
- Имя сервера из подписки, похожее на параметр команды, больше не передаётся в
dig. - Ускорены проверка DNS на вкладке «Диагностика» и проверки при каждом запуске.
Автоподбор
- Неудачная проверка после применения сначала откатывается, а уже потом выясняется, была ли это потеря интернета. Плохая стратегия не держится в работе лишние минуты.
- «Нет интернета» требует подтверждения вторым независимым адресом. Контрольная проверка только устанавливает TCP-соединение.
- Наблюдение судит по доле неудачных проверок: «мигающая» стратегия откатывается, а одна случайная ошибка сразу после применения больше не ставит паузу на сутки.
- Правка настроек, не касающаяся применённой стратегии, больше не снимает наблюдение. Откат в этом случае возвращает только строку стратегии и сохраняет вашу правку.
- Наблюдение, закончившееся без результата, записывается в «Историю» и приходит уведомлением.
- Счётчик ответов считает только пробные соединения самого роутера, занятые порты и умерший nfqws больше не записываются в вину стратегии. Интерфейс различает «проверка без результата» и «проверка не прошла».
Обновления
- Если обновление через
install.shне удалось, прежний Prokop возвращается со своей конфигурацией. Прерывание обновления (Ctrl-C, SIGTERM) тоже откатывает его, а разрыв SSH больше не обрывает обновление посередине. Пакеты для отката берутся из каталога релизов, без лимита GitHub API. - Установка stable и tiny sing-box больше не скачивает пакет второй раз, пока Prokop остановлен.
- Зависшая загрузка действительно останавливается, коррекция часов после загрузки роутера её не обрывает, а файл больше опубликованного размера не докачивается.
- В карточке обновления появился этап «Восстановление после ошибки», ошибка показывается у того этапа, где она случилась. Итог «Готово / Ошибка» больше не пропадает и не превращается обратно в «Обновляется…». Время считается по часам роутера, в том числе у пользователя с правом только на чтение. Панель не перерисовывает всю страницу каждую секунду.
- Ошибки компонентов, предупреждения kill-switch и ошибки загрузки списков показываются по-русски. Незнакомый текст заменяется русской строкой со ссылкой на системный журнал.
Что проверено
- PASS: полный прогон автоматических тестов бэкенда от root и от непривилегированного пользователя без
uci(как в CI); фронтенд (prettier, eslint, tsc, vitest, сборка). На каждое исправление добавлен или расширен тест, который не проходит на 2.25.3 и проходит теперь. Перехват DNS, kill-switch, TorrServer напрямую и счётчик автоподбора проверены на настоящемnft. - PASS: русский интерфейс панели «Устройства», окна TorrServer и панели прогресса обновлений отрисован в Chromium на 1440/1024/768 без горизонтальной прокрутки и обрезанных кнопок (без темы LuCI).
- NOT TESTED: на роутере. В первую очередь стоит проверить: уведомление при убитом sing-box (
prokop notify_status), запуск TorrServer от пользователяtorrserverи перенос базы, перехват DNS с исключениями, перезагрузку с сохранением выбора серверов, холодный старт с подпиской через правило, откат обновления черезinstall.sh.
2.25.3
Срочные исправления безопасности и DNS
Исправления к 2.25.2 по аудиту от 5 октября. Главное: имя сервера из подписки больше не может выполнить код в LuCI. Обновление ставится поверх, настройки не меняются, ничего делать вручную не нужно.
Что изменилось
- Имена серверов и устройств в выпадающих списках выводятся как текст. В списках «Include servers» / «Exclude servers» (настройки URLTest, подписки, уровни приоритета) имя сервера приходит от провайдера подписки. Раньше при раскрытии списка LuCI разбирал его как HTML, и подписка с именем вида
NL<img onerror=…>выполняла JavaScript в сессии администратора роутера. То же было с именами устройств в выборе «Имя (IP)», которые могут прийти из PTR-записи. Теперь имена всегда показываются как обычный текст. Находки FE-11 (P1) и FE-12 (P2). - Лаунчеры Zapret-Manager не качают скрипт по HTTP. Если в настройках указано зеркало с адресом
http://, обновление Prokop переписывало командыzms/zmsAтак, что они при каждом запуске скачивали скрипт через это зеркало без шифрования и выполняли его от root. Установка через такое зеркало и раньше запрещалась; теперь и лаунчеры с таким зеркалом скачивают скрипт с GitHub поhttps://, а при обновлении в журнал пишется предупреждение. Находка UPD-9. - Локальный DNS-резолвер на другом порту снова работает. С 2.5.0 Prokop отказывался запускаться, если основным, bootstrap или DNS-правилом указан резолвер на самом роутере: например https-dns-proxy (
127.0.0.1:5053), unbound (:5335) или AdGuard Home. Петля возникает только при обычном DNS на порт dnsmasq (53 или порт из настроек dnsmasq), и только такой адрес теперь отклоняется. Другой порт, DoT или DoH на роутере принимаются с предупреждением в журнале: такой резолвер не должен пересылать запросы обратно в dnsmasq. Находка NET-11. - Кнопка «Отправить тест» в уведомлениях объясняет отказ. Если роутер не смог подготовить запрос (например, переполнен
/var/run), кнопка раньше молча возвращалась в исходное состояние. Теперь показывается причина. Находка FE-17. - Проверка исходников, которая ищет вывод строк как HTML, теперь видит и такие места (выпадающие списки,
E(tag, строка), содержимое модальных окон), а тест маскирования секретов для режима только чтения покрывает токен и chat ID Telegram и URL webhook. Находки FE-13, FE-20.
Что проверено
- PASS: автоматические тесты бэкенда (полный прогон от root и от непривилегированного пользователя без
uci, как в CI) и фронтенда (prettier, eslint, tsc, vitest, сборка). Новые проверки: имя сервера и имя устройства с HTML-разметкой попадают в выпадающий список как текст (tests/luci_outbound_choice_labels.sh,tests/local_device_labels.sh); лаунчеры приhttp://-зеркале остаются наhttps://(tests/fork_fix_zapret_manager_launchers.sh); резолверы на портах 5053/5335/5353, DoT и DoH на роутере принимаются, порт 53 и порт dnsmasq из настроек отклоняются (tests/dns_server_loop.sh). - NOT TESTED: на роутере. Внешний вид русского интерфейса на 1440/1024/768 не проверялся: изменения не трогают разметку (меняется только способ вставки текста в существующие элементы).
2.25.2
Автоподбор: обрыв интернета больше не считается виной стратегии
Исправление к 2.25.0. Если во время проверки стратегии (сразу после применения или в окне наблюдения) пропадал интернет, Prokop мог решить, что не работает стратегия: поставить её на сутки на паузу, потратить дневное применение, а в окне наблюдения откатить рабочую стратегию. Теперь Prokop сначала проверяет, есть ли связь с сайтом в обход стратегии. Обновление ставится поверх, настройки не меняются, ничего делать вручную не нужно.
Что изменилось
- Контрольная проверка связи. Когда проверка стратегии не прошла, Prokop делает одно дополнительное подключение к тому же адресу сайта напрямую, без DPI-стратегии, тем же изолированным путём, что и при подборе (рабочая конфигурация не меняется). Если сайт не отвечает даже на установку TCP-соединения или до него нет маршрута, значит, пропал интернет, а не сломалась стратегия.
- Сразу после применения. При обрыве интернета изменение по-прежнему откатывается (стратегию нельзя подтвердить), но с причиной «нет сети»: без паузы на 24 ч и без расхода дневного лимита.
- В окне наблюдения. Проверка, во время которой пропал интернет, теперь не засчитывается как неудача и не приводит к откату рабочей стратегии.
- Если контрольная проверка не смогла выполниться (например, идёт другая операция), всё работает как раньше: неудача засчитывается стратегии. Prokop не придумывает оправдание, которого не проверил.
Исправлена находка AT-6 аудита от 5 октября: после 2.18.1 тайм-аут соединения справедливо перестал считаться обрывом сети (так же выглядит блокировка DPI), но замены не было, и почти любой обрыв во время проверки записывался в вину стратегии.
Что проверено
- PASS: автоматические тесты, в том числе новые случаи в
tests/autotune_apply.sh: контрольная проверка без ответа или без маршрута даёт откат с причиной «нет сети», ответ сайта или невозможность проверки оставляют вину на стратегии, при успешной проверке контроль не запускается; в окне наблюдения обрыв даёт «неопределённую» проверку вместо неудачи; контрольная проверка выполняется только внутри блокировки того применения, которое её запустило, посторонний процесс к этой блокировке не подключится. - NOT TESTED: на роутере (обрыв WAN во время проверки и наблюдения на реальном трафике).
2.25.1
Исправление хода действия TorrServer
Срочное исправление к 2.24.0. Ставится поверх, настройки не меняются.
Что изменилось
- Запуск TorrServer и применение рекомендуемых настроек больше не выглядят как установка. В 2.24.0 ход этих действий начинался с «Проверки релиза», а впереди в карточке были перечислены загрузка и установка, которых не будет. Теперь «Запустить» показывает этап «Запуск», применение настроек показывает этап «Применение настройки», и других предстоящих этапов в списке нет.
Что проверено
- PASS: автоматические тесты в режиме как в CI (не-root, без uci), 460 из 460, и unit-тесты интерфейса, в том числе новый тест на список этапов для применения настроек TorrServer.
- NOT TESTED: на роутере.