Commit Graph
101 Commits
Author SHA1 Message Date
StressOzz b22d7be71f Update ZapretManager_LuCI.sh 2026-10-10 15:06:42 +00:00
StressOzz 8745c408f0 Update ZapretManager_LuCI.sh 2026-10-10 19:40:32 +05:00
StressOzz 6366651bc0 Update ZapretManager_LuCI.sh 2026-10-10 16:02:49 +05:00
StressOzz 1bea7c5072 Update version from 2.66 to 2.67 in script 2026-10-10 03:48:49 +05:00
Bulat Khasanov 514cb5103f Добавить cloudfunctions.net в zapret-hosts-google.txt
Домены Firebase/Google Cloud Functions (*.cloudfunctions.net) не входят
в Google-список, поэтому попадают под общую TLS-стратегию (#v7 и т.п.).
С ней Google Front End отдаёт только первый пакет ServerHello, дальше
соединение висит.

Пример: Goose Goose Duck ходит в API на
us-central1-gaggle-staging.cloudfunctions.net (HTTP/2, TLS 1.2, BestHTTP/2).
Под #v7 игра ждёт 20 с, уходит на медленный fallback и грузится ~135 с.
С cloudfunctions.net в Google-списке (#Yv08) — ~17 с.
2026-10-09 22:29:36 +03:00
StressOzz 3e0ae33159 v2.66
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-6086939564
2026-10-09 23:36:57 +05:00
StressOzz b4926655cd Update ZapretManager_LuCI.sh 2026-10-09 01:54:09 +05:00
Claude ca8a6b771d Steer: остатки удалённого splify2 больше не блокируют вкладку (v2.58)
splify2 считался установленным по любому следу: каталогу /usr/lib/splify2,
скрипту /etc/init.d/splify2 или объекту ubus. После удаления splify2 такие
следы остаются, и вкладка Steer закрывалась плашкой «Установлен splify2».

Теперь splify2 считается установленным, только если на месте его служба rpcd
и пакет luci-app-splify2 (или страница LuCI). И даже тогда вкладка не
закрывается, пока правила ядра steer написаны панелью.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpV96wH7hUvwFR2a63mWT9
2026-10-08 20:33:51 +00:00
StressOzz 0168afb754 Update version from 2.56 to 2.57 2026-10-08 17:26:23 +00:00
StressOzz afb043e189 Update ZapretManager_LuCI.sh 2026-10-08 17:01:38 +00:00
StressOzz cd4b9fe78a Update version to 2.56 and add fk-guard to skips 2026-10-08 16:59:29 +00:00
StressOzz 0ed03f90e5 v2.55
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-6064176249
2026-10-08 21:16:56 +05:00
StressOzz d528728e03 Update version to 2.48 2026-10-07 00:37:38 +05:00
StressOzz a27b140bc5 Update ZapretManager_LuCI.sh 2026-10-07 00:21:09 +05:00
StressOzz 021904ddb7 v2.43
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-6021835232
2026-10-06 22:33:54 +05:00
StressOzz 9769c5b9bd v2.41
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-6019732500
2026-10-06 20:39:14 +05:00
StressOzz 85efe87a0f v2.33
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5977993724
2026-10-04 13:12:32 +05:00
StressOzz 3022038c0e v2.26
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5974351587
2026-10-04 03:56:48 +05:00
StressOzz 9c487890be Update ZapretManager_LuCI.sh 2026-10-04 02:05:01 +05:00
StressOzz d299bb7b0d Update ZapretManager_LuCI.sh 2026-10-04 01:33:46 +05:00
StressOzz 8436c8c037 v2.20 2026-10-04 01:26:36 +05:00
xyzmean 83969aa15f Steer: проверка VPN ждёт, пока ядро поднимет туннель, а не только появления устройства
Устройство туннеля ядро 2.0 создаёт сразу, до выбора узла и рукопожатия: единственная попытка
curl попадала в «подключаемся», и после «Применить» рабочий туннель объявлялся мёртвым — ядро
пускало сервисы напрямую до прохода сторожа. Теперь ожидание up из steer status (до 90 с) и
три попытки трафика; причина отказа — словами.

v2.16

Committed-by: agy-cli (autonomous, run 96)
2026-10-03 17:14:11 +03:00
xyzmean 5ba242ead1 v2.15
Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:39:30 +03:00
xyzmean efecfe49c2 Steer: автоперезапуск переживает удаление и новую установку панели
Строка cron автоперезапуска зовёт backend.sh, поэтому удаление панели
снимает её вместе с остальными строками панели: без панели ей нечего
звать. Раньше строка звала init-скрипт steer напрямую и переживала
удаление, а теперь после новой установки панели автоперезапуск молча
пропадал, хотя Steer и его настройки остались.

Выбранный режим теперь хранится в /etc/zm-steer/autorestart.
Установщик панели через steer_action sync возвращает строку, если Steer
стоит, а строки нет. «Выкл.» файл убирает, удаление Steer — вместе с
каталогом.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:38 +03:00
xyzmean 820c64a95e Steer: при обновлении панели ядро не поднимается из установщика
Установщик панели в конце зовёт steer_action sync, и оттуда же
запускался подъём ядра 1.x до 2.x. Это фоновая задача, а родитель у неё —
установщик, то есть ssh или терминал. Закрыли окно — задачу могло
убить между снятием прежнего ядра и установкой нового (opkg), и роутер
остался бы без ядра. Ещё она спорила с самим установщиком за менеджер
пакетов: следом он ставит curl и unzip.

Теперь sync только обновляет строку cron и перечитывает правила, а ядро
поднимает сторож cron в пределах двух минут или открытая страница Steer.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean ed62161ab2 Steer: проверка и применение настройки — со сроком
ctl check, apply --dry-run и steer apply шли без срока. Если демон
зависнет, вместе с ним зависла бы задача панели, а следом все
операции Steer. Теперь проверка ограничена 150 с (демон сам ждёт
проверку до 120 с), применение — 300 с. Если срок вышел, это
отказ: спека возвращается прежняя, как при любом отказе.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean 8d406dbb67 Steer: метапакет steer-extended 2.x обновляется вместе с ядром
steer-extended 2.x — пустой пакет, который тянет steer-core и модули ровно
своей версии. Если он стоит, apk отказывался ставить новое ядро: прежний
метапакет требует прежний steer-core. Теперь при обновлении ядра 2.x
метапакет ставится той же версии вместе с ядром и модулями. Чьим
он был, тем и остаётся.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean f0a772cebc Steer: чужая спека в несколько строк — чужая
Чужие правила в /etc/steer/spec.json искались построчно, а у спеки, где
«"rules": [» и первое правило стоят на разных строках (так её пишут
splify2 и человек руками), совпадения не было. Такая спека считалась
пустой, и Zapret Manager переписал бы её своей. Теперь спека
читается целиком.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean 22ec7e8d02 Steer: сам поднимается только 1.x, поставленный Zapret Manager
Сверка версии поднимала ядро 1.x до 2.x по одной отметке «engine», а её
Zapret Manager ставит и тогда, когда steer-extended уже стоял и ставил его
человек. Теперь сам поднимается только пакет, который ставил Zapret
Manager (pkg steer, pkg steer-extended). Своё ядро человек поднимает кнопкой
«Обновить» или при «Применить».

Пока идёт другая операция панели, подъём ждёт: она могла занять менеджер
пакетов, и установка 2.x сорвалась бы на чужой блокировке.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean 25058d9603 Steer: ядро ниже 2.0.0 поднимается до 2.x само при сверке
Где Zapret Manager сверяет ядро — страница Steer, главная панель, проверка
версий, сторож cron раз в две минуты и обновление панели, — ядро 1.x,
поставленное Zapret Manager, поднимается до 2.x отдельной задачей, без
«Применить» и кнопки. Состояние службы сохраняется, после подъёма настройка
переписывается спекой v2.

- 2.x не поставить (нет выпуска, нет сети) — работающее 1.x не трогается,
  повтор при следующей сверке, не чаще раза в 10 минут; на странице —
  «ядро нужно обновить».
- opkg: перед снятием прежнего пакета скачивается его файл для возврата;
  нет файла — прежнее ядро не снимается, новое не встало — прежнее
  ставится обратно.
- Чужое ядро (ставил не Zapret Manager, чужая спека, splify2, коннектор)
  не трогается.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
xyzmean d7ebb0e0a3 Steer: бекенд на ядре steer 2.0 через один слой
Весь разговор с ядром steer — в одном блоке функций stl_* (слой steer):
бекенд отдаёт ему свою модель (выход WARP или VPN, сервисы и их списки,
подписка с узлом и маркерами) и спрашивает состояние на своём языке, а слой
пишет спеку v2 в /etc/steer/spec.json и зовёт клиент steer, который отдаёт
команды демону steerd.

- Ядро: steer-core и только нужные модули (VLESS — когда есть подписка)
  вместо steer-extended; версия — stable 2.x из splify2/releases
  (version.json, с проверкой sha256), не ниже 2.0.0. Переход с 1.x:
  apk — одной транзакцией, opkg — снятием прежнего пакета; спека остаётся.
  Удаляются только пакеты, которые ставил Zapret Manager.
- Применение: проверка демоном (ctl check), затем steer apply через демона —
  он сам трогает только изменившееся. Убраны костыли 1.5.9: srs-read и
  перевод .srs в текст, сумма спеки и сверка outputs, выбор между reload и
  restart, перезапуск при fail-open, kmod-tun руками, чтение набора nft.
- WARP — группа pick: latency из туннелей (один туннель — выход-устройство),
  без IPv6, как и прежде. VPN — tunnel vless: маркеры узлов уходят в
  exclude_name, скрытые и закреплённый узел — в nodes без предела 16.
- Состояние — из steer status (failed, device, probe), diag и explain — через
  слой. Блокер: ядро ведёт steer-box-connector (podkop, forkop) или чужая
  спека v1/v2/yaml.
- Прежняя спека ZM (v1) ядро 2.0 читает как есть; при первом применении
  слой пишет её заново в v2. Автоперезапуск по cron и обновление панели
  идут через backend.sh.
- Фронтенд: три подсказки про steer-extended переписаны под ядро 2.0.
- docs/autobypass: перестановка туннелей рвёт соединения сменой туннеля, а
  не перезапуском ядра.

Committed-by: agy-cli (autonomous, run #96)
2026-10-03 16:38:37 +03:00
StressOzz dcce004e60 v2.14
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5969650255
2026-10-03 18:32:34 +05:00
StressOzz 619a3629a0 Update version to 2.06 and add random number function 2026-10-02 23:13:12 +05:00
StressOzz 6a1ed687fa v2.05
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5957682895
2026-10-02 22:25:00 +05:00
StressOzz a6b2437326 Update version to 1.96 and enhance rpcd handling
Zapret Manager 1.96 — исправления

- Исправлена ошибка «Object not found» после обновления (LuCI: «RPC call to zapret-manager/status failed with error -32000», Web UI: «Роутер не отвечает: Object not found»).
- Установщик теперь проверяет, что rpcd подхватил панель и новый список методов, и при необходимости сам перезапускает rpcd.
- Сторож (раз в 2 минуты) следит не только за входом в LuCI, но и за самой панелью: если rpcd её потерял, он перезапускает rpcd.
- LuCI и Web UI при «Object not found» больше не показывают ошибку сразу, а повторяют запрос несколько секунд, пока rpcd запускается.
- После обновления больше не нужно сбрасывать кэш браузера: панель сама замечает новую сборку, обновляет свои файлы в кэше и один раз перезагружает страницу.
- Файлы панели при обновлении заменяются целиком за один шаг — открытая страница больше не может запустить наполовину записанный скрипт.
- На странице входа Web UI вместо «Object not found» выводится понятное сообщение, что rpcd ещё запускается.
2026-10-02 06:56:48 +05:00
StressOzz ae55da627d v1.95
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5936953417
2026-10-01 22:36:02 +05:00
StressOzz 876b78a68a Update version from 1.68 to 1.69 2026-09-27 02:11:19 +05:00
StressOzz 5ab77abcf9 v1.68
список изменений в ТГ канале
2026-09-26 23:48:16 +05:00
StressOzz d5833086b1 Update version to 1.65 2026-09-26 11:28:54 +05:00
StressOzz 691d2095de 1.64 2026-09-26 11:11:25 +05:00
StressOzz 0a60df09a3 v1.61 2026-09-26 09:11:08 +05:00
StressOzz 2e390c3ba8 v1.60 2026-09-26 08:43:14 +05:00
StressOzz 56b2fc8240 Update version to 1.56 and modify configurations 2026-09-26 07:38:43 +05:00
StressOzz 95e4fc5d3d v1.54
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5842272411
2026-09-26 07:22:53 +05:00
StressOzz 714d18f5eb v1.54
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5842272411
2026-09-26 07:12:42 +05:00
StressOzz f683b9bd3f bug fix
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5838761511
2026-09-26 03:33:15 +05:00
StressOzz de5b522804 v1.45
https://github.com/StressOzz/Zapret-Manager/issues/1062#issuecomment-5838761511
2026-09-26 01:03:04 +05:00
xyzmean 0955c170ff Steer 1.5.8 и tgws 0.3.1; движок, поставленный автообходом, обновляется сам
- Версия движка Steer — 1.5.8: таблица правил заменяется одним действием, при упавших
  туннелях трафик каналов идёт через zapret. Запасная версия tgws — 0.3.1.
- Установленный движок раньше не обновлялся никогда: при «уже установлен» установка
  выходила сразу. Теперь движок, который поставил Zapret Manager, обновляется до его
  версии — при установке Steer и в начале автообхода. Чужой движок (splify2) не трогается.
  Работающий Steer после обновления перезапускается, а не выключается.
2026-09-24 03:52:59 +03:00
xyzmean ef6264b418 Автообход: сторож DNS своей задачей и не замолкает, уборка при удалении панели, честный замер стратегий
Сторож DNS для ИИ-сервисов шёл задачей redbtn: затирал журнал последнего автообхода и выглядел
на странице идущим автообходом. Теперь у него своя задача redbtn_geo; автообход и кнопка
«Подобрать DNS заново» ждут его, «Выключить» просит повторить. После неудачного подбора резолвер
снимался, и сторож молчал навсегда при живой строке cron — теперь пробует снова раз в два часа,
а если пакет удалён или zm-geodns выключен в автозапуске, снимает свою строку сам. Подбор
резолвера — не больше RB_PARALLEL проб разом.

Удаление панели зовёт redbtn_panel_gone: служба zm-geodns, её файл dnsmasq и строка cron
снимаются. Steer, туннели и warp.lst моста остаются — они переживают удаление панели намеренно.

Замер стратегий: цели внешнего набора без схемы идут по https://, а не по HTTP на 80-й; 451 и
000 — отказ, как в _rb_check_one; файл исключений качается, только если его нет или он пуст.

Мёртвое: запись «pkg tgws» в owned, geoblock.lst в установщике, состояние off и ветка для
снятых в Steer сервисов, до которой подбор не доходил.
2026-09-24 03:07:05 +03:00
xyzmean 069d93f463 steer: туннели в warp.up лучшим первым, запасной порт при привязке точки, без мёртвых функций
warp.up писался в порядке номеров туннелей, хотя комментарий обещал «лучший первым», а порядок
читают все, кому нужен один туннель: _st_warp_first, мост Telegram (warp.lst — первый живой) и
движок (devices в spec решают ничьи в пределах допуска prefer: latency). Разведка теперь отдаёт
ключ качества (разряд запаса, потери, круг), и _st_warp_order ставит туннели по нему. Если ни
один туннель не разведан заново, порядок прежний: перестановка по дрожанию пинга меняла бы spec
и перезапускала движок на каждом «Применить».

Второй найденный порт из warp.ports стал запасным: не дала точка рукопожатия при окончательной
привязке — тот же адрес пробуется на нём, прежде чем туннель сдаётся.

_st_warp_handshake, _st_warp_hs_epoch и _st_warp_colo нигде не вызывались — убраны.
2026-09-24 02:54:40 +03:00