Files
netrunner-proxy/client
nineap 40ddb0a0f6 Добавить опциональную авторизацию клиента и динамические лимиты трафика
Сервер получает флаги --require-auth/--backend-url (по умолчанию выключено,
поведение уже развёрнутых нод не меняется). Auth-кадр хендшейка расширен с
"session_id:leg_id" до "session_id:leg_id:token"; при включённом
--require-auth сервер валидирует токен через новый AuthValidator
(BackendClient к netrunner-backend, с кешем на 60с).

Muxer теперь ведёт монотонный учёт трафика сессии (переживает реконнект
ног — раньше total_bytes мог занижаться после переподключения) и раз в ~30с
отчитывается бэкенду; при превышении лимита сессия разрывается. Токен
клиента прокидывается через EngineConfig/TunnelConfig до Tauri-плагина
(desktop.rs + Android Kotlin-плагин).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 00:31:03 +07:00
..
2026-03-13 11:54:59 +07:00
2026-06-30 18:51:09 +07:00

Крейт client — VPN-клиент и FFI-фасад

Клиентская сторона: перехватывает трафик приложений на уровне L3, прогоняет его через userspace TCP/IP-стек и заворачивает в туннель ядра (core). Собирается двумя способами:

  • библиотека (.so) для мобильных приложений через UniFFI — точка входа src/lib.rs (SessionManager/Session/VpnTrafficStats);
  • бинарь для Linuxsrc/main.rs (отладка/локальный запуск).

Детали — в rustdoc: cargo doc --open -p netrunner-client.

Структура

Путь Блок
src/lib.rs FFI-фасад (uniffi): запуск/остановка сессии, статистика.
src/main.rs Linux-бинарь: поднимает TUN и движок.
src/net/ userspace TCP/IP-стек на smoltcp + мост в туннель.
src/tun/ TUN-устройство, счётчики, системная маршрутизация.

Как это работает (с высоты)

приложение ─→ TUN ─→ net::Engine (smoltcp + перехват) ─RawCastFrame→
            core::ClientHandler (ноги туннеля, маскировка, шифр) ─→ сервер

EngineBuilder::build поднимает DNS, маршрутизацию и устанавливает туннель (core::ClientHandler::connect), затем Engine::run крутит главный poll-цикл.

Сборка

client зависит от приватного форка smoltcp по SSH (ssh://git@github.com/nineAp/nxrp-smoltcp.git) — сборку запускайте там, где есть SSH-доступ (WSL/Linux), из чистого Windows-shell cargo его не достанет. Android-сборка .so + Kotlin-биндингов — через make build-android (см. tools).