L×Box v2.4.2
Движок шаблона переписан на типизированную подстановку с декларативными #if (§120). VPN-mode больше не собирается императивным кодом — он описан прямо в wizard_template.json через условные конструкции #if. Вкладка VPN Mode стала data-driven: контролы рисуются из template-нод, а listen-адрес локального прокси теперь произвольный IPv4 (комбобокс с подсказками 127.0.0.1 / 0.0.0.0). Добавлен пресет «Block unknown traffic» — режет неатрибутированный трафик в туннеле. Ядро → v1.13.13-lx.15.
Quick links:
✨ Added ·
🔧 Changed ·
🔬 Verified ·
📲 Install ·
🇷🇺 На русском
✨ Added
| # | Что |
|---|---|
| §033 | Пресет «Block unknown traffic» (block_unknown). Reject/direct трафика в туннеле без атрибуции к установленному приложению (фоновые / чужие процессы). Inline rule_set {invert:true, package_name_regex:"^"} матчит соединения с пустым AndroidPackageNames. Outbound настраивается reject (по умолчанию) или direct. ⚠ Ловит всю неатрибутированную атрибуцию (system/root UID, egress туннеля, сбой find_process), не только foreign-процессы
|
🔧 Changed
| # | Было | Стало |
|---|---|---|
| §120 | Подстановка @var угадывала тип по содержимому — пароль 1234 мог стать int
| Коэрсинг строго по WizardVar.type: bool/int типизируются, secret/text/enum/outbound/dns_servers — остаются строкой. Введён явный тип int (tun_mtu переведён text→int). Общее ядро — if_engine.dart
|
| §120 | Условность в шаблоне — только флаг enabled:"@var" (§045)
| Полноценный #if (map-spread + array-element; предикаты and/or/#in/#notIn/#notEmpty/#isEmpty/#matches/#not). Декларативная условность прямо в config/preset-телах. Кривой #if ловится на загрузке шаблона (TemplateIfError), а не молча даёт битый конфиг
|
| §120 / §119 | VPN-mode собирался императивным кодом (applyVpnMode); локальный socks/http-прокси строился в коде
| VPN-mode декларативен: tun-in / mixed-in и inbound в route-rules собираются #if-walker'ом по @vpn_mode; users — по @proxy_auth. applyVpnMode удалён, прокси переехал в wizard_template.json. Защита от users:[{"":""}] при пустом пароле сохранена
|
| §119 | Вкладка VPN Mode — захардкоженные контролы | Data-driven из template-нод: контролы рендерятся по нодам секции «VPN Mode» (title/tooltip/options из шаблона), значения мапятся в типизированный VpnModeConfig. Метаданные UI вынесены в шаблон
|
| §119 | listen прокси — выбор из двух (127.0.0.1 / 0.0.0.0) через SegmentedButton
| Произвольный IPv4 через редактируемый комбобокс с подсказками: можно вписать любой адрес (127.10.20.5, LAN-IP). isPublicListen = !loopback — auth форсится на любой не-loopback адрес (конкретный LAN-IP виден извне так же, как 0.0.0.0)
|
| §104 | Ядро v1.13.13-lx.14
| v1.13.13-lx.15 (нужен §033: корректный invert + package_name_regex для match по пустому AndroidPackageNames)
|
🔬 Verified
flutter analyze— No issues found.flutter test— 1232 passed (вкл. §120if_engine_test+ переписанныйvpn_mode_test; §119isValidListenAddr/isLoopback+ force-auth на non-loopback).- §120 — on-device по Debug API:
inbounds/route.rulesсобираются корректно, в готовом конфиге ноль сырых#if. - §033 — на ядре
lx.15подтверждено:invertфлипает «есть пакет»→no-match, «нет пакета»→match. - Ядро —
v1.13.13-lx.15(форк sing-box-lx, fetch с SHA256-verify).
📲 Install
adb install -r LxBox-v2.4.2-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
🇷🇺 Кратко на русском
- Движок шаблона переписан (§120) — подстановка значений теперь строго по объявленному типу (пароль из цифр больше не превращается в число), а условную логику конфига можно писать прямо в шаблоне через
#if. Внешне ничего не сломалось — это фундамент под более гибкие пресеты. - VPN Mode переведён на декларативный шаблон (§120/§119) — режимы VPN / Proxy / VPN+Proxy и локальный socks/http-прокси больше не зашиты в код, а описаны в шаблоне. Сама вкладка теперь строится из шаблонных нод.
- Адрес прокси — любой (§119) — раньше можно было выбрать только
127.0.0.1или0.0.0.0; теперь это комбобокс, куда можно вписать произвольный IP (например, конкретный LAN-адрес). Если адрес не локальный — пароль на прокси обязателен. - Пресет «Block unknown traffic» (§033) — блокирует (или пускает напрямую) трафик в туннеле, который не привязан ни к одному установленному приложению. Полезно против фоновых/системных утечек, но учтите: под раздачу попадает весь неопознанный трафик.
- Ядро →
v1.13.13-lx.15.
Предыдущий релиз: v2.4.1.