v1.38.0
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 в модал «Установить из файла».