Files
netrunner-app/src-tauri/README.md
T
Kirill c852315d34 Add decoy SNI plumbing, bundle wintun.dll, fix flag icons, add docs
- Прокидываем sni (decoy-хост) по обновлённому UDL через весь стек:
  guest-js -> Tauri-команда -> desktop/mobile -> Kotlin spawnSession.
  Список серверов пока статичный (backend еще не отдает sni), но логика
  похода в реальный /api/v1/nodes оставлена под флагом на будущее.
- Бандлим wintun.dll в Windows-инсталлятор через bundle.resources в
  tauri.windows.conf.json - раньше он копировался только для
  локального cargo run/tauri dev, но не попадал в NSIS/MSI.
- Чиним падение мобильной сборки: гитигнорённые UniFFI Kotlin-биндинги
  отстали от обновленного UDL (не хватало параметра sni).
- Флаги стран - локальные SVG вместо react-country-flag в CDN-режиме:
  тот бился об CSP и не грузился офлайн.
- Добавляем дерево README.md по структуре проекта и точечные
  комментарии в неочевидных местах кода.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 19:29:29 +07:00

3.9 KiB
Raw Blame History

Rust-оболочка (src-tauri/)

Tauri 2 приложение-хост. Вся VPN-логика вынесена в плагин src/plugins/vpn-plugin/ — сюда, в корневой крейт, попадает только запуск приложения и платформенная сборка.

Файлы

Путь Назначение
src/main.rs Точка входа десктоп-бинарника: инициализация логгера, вызов netrunner_app::run().
src/lib.rs run() — сборка tauri::Builder с плагином tauri_plugin_vpn; помечен #[tauri::mobile_entry_point] для Android/iOS.
build.rs На Windows: копирует bin/<arch>/wintun.dll рядом со скомпилированным .exe в target/<triple>/<profile>/ (нужно для локального запуска cargo run/tauri dev) и встраивает манифест с requireAdministrator (VPN нужны admin-права). Копирование в финальный инсталлятор — отдельный механизм, см. ниже.
Cargo.toml Зависимости: tauri, tauri-plugin-vpn (path), netrunner-logger (git-зависимость из приватного репозитория netrunner-core). Собирается только под x86_64-pc-windows-gnu из настроенных Windows-таргетов.
tauri.conf.json Общий конфиг: окно 500×800, CSP (img-src/connect-src жёстко ограничены — см. ниже), бандл-таргеты "all".
tauri.windows.conf.json Платформенный оверлей, Tauri мержит его автоматически только при сборке под Windows (см. tauri-utils::config::parse). Добавляет wintun.dll в bundle.resources.
capabilities/*.json ACL для Tauri IPC — какие команды плагина доступны из WebView.

Windows: TUN-драйвер

VPN-движок использует крейт wintun (Rust-обёртка над wintun.dll, самодостаточный сетевой драйвер без отдельной установки). Он должен лежать рядом с exe — так его находит LoadLibraryW("wintun.dll") по умолчанию. Это решается в двух независимых местах:

  1. Локальный запуск (cargo run/tauri dev) — копирует build.rs.
  2. Финальный инсталлятор (NSIS/MSI) — бандлер tauri build ничего не знает про build.rs-копирование, поэтому файл явно объявлен как bundle.resources в tauri.windows.conf.json ("bin/amd64/wintun.dll": "wintun.dll" — плоское имя, чтобы попасть в корень инсталляции рядом с exe). Если добавите сборку под arm64 — потребуется отдельный CI-профиль с --config, т.к. tauri.conf.json не умеет параметризоваться по архитектуре.

CSP (tauri.conf.jsonapp.security.csp)

Специально ограничен: img-src/connect-src/script-src разрешают только 'self', data: и домены Telegram (нужны для встроенного Telegram Web). Любой новый внешний домен/CDN, к которому фронт обращается напрямую (картинки, шрифты, API), нужно либо явно добавлять в CSP, либо не использовать — это уже один раз ловили на флагах стран, см. ../src/features/README.md.