Skip to content

v1.38.0

Choose a tag to compare

@varyen varyen released this 29 Jul 14:13

detour v1.38.0

Исправлено

  • «WAN просел до 100 Мбит» горело вечно на 100-мегабитном Keenetic. Обе ветки проверки линка (detour-wan-link для баннера панели и vpn-keepalive для push) считали деградацией любую скорость ниже гигабита — константа 1000 в коде. На роутере, у которого 100 Мбит/с и есть физический потолок порта, это ровно здоровое состояние, а панель показывала аварию, которую нечем чинить. Теперь эталон — не гигабит, а потолок самого порта: WAN_LINK_MAX_MBPS в detour.conf / PORT_MAX_MBPS= в wan-watch.conf (ручное значение) → Supported link modes из ethtool → максимум скорости, когда-либо виденный на этом роутере (запоминается в state-файле). Если потолок определить нечем — предупреждение не показывается вовсе: молчание лучше ложной тревоги. Отдельно разведён случай «сосед умеет меньше нас»: линк на максимуме соседнего порта (ONU/модем на 100 Мбит) больше не авария, а факт в диагностике. Полный выключатель: WAN_LINK_MONITOR=off.
  • GitHub отвечал 403 на проверку обновлений. api.github.com без токена даёт 60 запросов в час на IP, а за провайдерским CGNAT этот лимит общий на всех абонентов адреса — отсюда «attempt 1/4 … 4/4 failed» и ERROR: GH API request failed при полностью рабочем интернете. Добавлен обход: если API недоступен, тег берётся из редиректа обычной страницы github.com/<repo>/releases/latest (в этот лимит она не входит), а ссылки на ассеты собираются по детерминированному шаблону /releases/download/<tag>/<файл>. Проверка версии и установка работают и в этом режиме; теряется только текст changelog.
  • Установка могла «пройти успешно», оставив старую версию в базе opkg. После opkg install версия сверялась через файл /etc/detour/version, который пишет postinst самого пакета — то есть установка подтверждалась по данным устанавливаемого файла, а не по данным opkg. Расхождение (.ipk новой версии лежит на флешке, в базе Entware по-прежнему старая, сервисы крутят старые файлы) такая проверка не ловила. Теперь читается именно база (opkg list-installed), и несовпадение с Version: из пакета — это ошибка установки, а не успех. detour-update selftest печатает такое расхождение отдельной строкой с подсказкой, что делать.

Добавлено

  • Предупреждение о скорости WAN-порта можно скрыть и вернуть. В баннере — ссылка «Скрыть это предупреждение», в шапке (⚙ → Уведомления) — пункт «Вернуть предупреждение о WAN». Пункт появляется только когда есть что возвращать. Скрытие привязано к подписи «интерфейс/скорость/ожидаемое»: как только любое из чисел изменилось (линк просел ещё сильнее, сменился порт), предупреждение показывается снова — одно нажатие не глушит будущую, уже настоящую аварию.

Кросс-платформенность

  • Правки в detour-wan-link, vpn-keepalive, detour-update, index.html — общие файлы, обе платформы получают их из одного манифеста; новых файлов не добавлялось.
  • ⚠️ На живом OpenWrt (GL-BE9300) проверено: разбор ethtool под busybox awk, новый JSON статуса (порт 2.5G, аплинк 1G → не авария), selftest со сверкой базы opkg, редирект-фолбэк GitHub. Логика WAN-потолка прогнана на 10 сценариях в изоляции (включая 100-мегабитный порт без ethtool), логика «скрыть/вернуть» — на 7 шагах.
  • ⚠️ На живом Keenetic не проверялось — роутер недоступен с рабочей машины. Нужна проверка владельцем: пропал ли баннер/push про 100 Мбит, проходит ли проверка обновлений при 403 от API, что печатает detour-update selftest (в пакете обновлён keenetic/validate-recent-features.sh — печатает port_max/expected/peer_limited).
  • ⚠️ Обход 403 живёт внутри этого пакета: если роутер уже упирается в 403, первую установку придётся сделать вручную (detour-update apply-local /opt/tmp/detour-keenetic_1.38.0_all.ipk), дальше самообновление станет устойчивым.

Packages

  • detour_1.38.0_all.ipk — panel for OpenWrt/GL.iNet (scripts/UI). On first install it bootstraps the detour feed and then pulls sing-box + tpws-zapret automatically.
  • detour-keenetic_1.38.0_all.ipk — Keenetic/Entware (mipsel) package (on first install it bootstraps our mipsel feed and then pulls sing-box + tpws-zapret automatically; nothing bundled).

Binaries (sing-box + tpws-zapret)

Neither binary is bundled — after the panel package lands, its postinst adds our feed (src/gz detour https://raw.githubusercontent.com/varyen/detour/feed/aarch64 on OpenWrt; feed/mipsel on Keenetic) and installs sing-box + tpws-zapret in the background via detour-update.

Install

Fresh (SSH)

opkg install /tmp/detour_1.38.0_all.ipk

Panel update (existing install)

Панель → «Установить последнюю», либо detour-update apply, либо загрузка .ipk в модал «Установить из файла».