Skip to content

v1.37.0

Choose a tag to compare

@varyen varyen released this 29 Jul 08:49

detour v1.37.0

Добавлено

  • Проверка «доходит ли порт до роутера из интернета». У каждого включённого проброса появилась кнопка «Проверить снаружи». Обычный port-checker на этот вопрос отвечает неверно: если внешний порт перехватывает оборудование провайдера, оно само завершает TCP-рукопожатие, и чекер рапортует «открыт», хотя до роутера не доходит ничего.
    • Поэтому проверка сверяет два сигнала: ответ внешних узлов и прирост счётчика пакетов на нашем же правиле файрвола (nft на OpenWrt/fw4, iptables на fw3 и Keenetic) вокруг пробы. Счётчик дёрнулся — отвечали мы; не дёрнулся — отвечал кто-то другой.
    • Вердикты: reachable, hijacked (перехват выше роутера — с советом сменить порт на нестандартный), blocked, open_unverified, unknown.
    • CLI: detour-portmap check-external <id>; CGI: portmap_check_external.
  • Обычный check дополнительно отдаёт wan_packets — сколько пакетов из интернета видело правило проброса с последней перезагрузки файрвола.

Изменено

  • Матричный фон стал спокойнее, а колонки — разноскоростными. Скорость задавалась в строках за кадр, то есть зависела от герцовки: на 120 Гц фон летел вдвое быстрее, чем на 60. Теперь она в строках в секунду и умножается на реальный dt — 3.8–14 стр/с вместо прежних ≈21–66, примерно впятеро медленнее. Скорость колонки выбирается лог-равномерно, поэтому медленные капли и быстрые росчерки встречаются одинаково часто.
  • Попутно исправлено то, что вылезает именно на медленной скорости: голова капли привязана к сетке строк и берёт новый глиф только при переходе на строку вниз (раньше перевыбирала символ каждый кадр — дрожание на месте), а затухающая заливка тратит альфу порциями вместо микро-альфы каждый кадр (слишком малая альфа не меняет 8-битные пиксели, и хвосты не дочищались до фона). Побочно — ~17 вызовов fillText на кадр вместо ~160.
  • ⚠️ Проверка проброса обращается к стороннему сервису (check-host.net) — единственное такое место в проекте. Наружу уходят только WAN-IP и номер порта, оба и без того публичны. Запускается только по кнопке, никогда сама.

Исправлено

  • Проверка доступности устройства в LAN врала на любом веб-сервисе. target_reachable использовал nc, а BusyBox nc возвращает ошибку, если собеседник ничего не прислал первым — то есть каждый HTTP-сервер, вежливо ожидающий запрос, показывался как «устройство не отвечает». Теперь признак — %{time_connect} у curl.

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

  • check-external и wan_packets сделаны сразу для обеих платформ. ⚠ Ветка Keenetic по-прежнему не проверялась на живом железе — как и весь «Проброс сервисов» с 1.35.0.
  • Правка матричного фона живёт целиком в index.html и исполняется в браузере — приезжает в оба пакета одинаково.

Packages

  • detour_1.37.0_all.ipk — панель для OpenWrt/GL.iNet (BE9300, Flint). При первой установке сама прописывает фид и подтягивает sing-box + tpws-zapret.
  • detour-keenetic_1.37.0_all.ipk — Keenetic/Entware (mipsel), бинарники из нашего mipsel-фида.

Рядом с каждым пакетом лежит .ipk.sig (usign).

Install

Обновление панели: кнопкой в самой панели, загрузкой .ipk в её модал, или по SSH:

opkg install /tmp/detour_1.37.0_all.ipk