Files
netrunner-app/src-tauri
nineap 24f3e5f454 Добавляет tauri-plugin-updater/process (desktop-only)
Регистрируется только под cfg(desktop) — Android/iOS самообновление
запрещено политиками сторов, там плагин не подключается вообще.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 16:36:39 +07:00
..
2026-04-05 15:46:11 +07:00
2026-04-28 12:23:52 +07:00
2026-04-05 15:57:12 +07:00

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.