vpn/docs/implementation-status.md
2026-09-23 01:19:36 +00:00

2 KiB

Текущий статус MVP

Проверено локально

  • Flet web shell starts; Linux desktop bundle builds.
  • ARM64 Android APK builds with current Flet/Gradle toolchain.
  • FreeTurn freeturn.aar from the pinned upstream commit is embedded as classes.jar + jniLibs; Kotlin reflection calls the documented mobile API, installs EventSink/Protector, and keeps its state in the foreground service.
  • FastAPI backend, one-file admin UI, encrypted-at-rest secrets, device enrollment, User-Agent binding and subscription response pass tests and a local HTTP smoke test.
  • Python lifecycle, conflict rules, serialization, billing date, proxy settings, enrollment URL and port-selection tests pass.

Deliberately unavailable until the missing native work is supplied

  • SignBox VLESS/AmneziaWG 3.1: the exact private AAR/API was not supplied. The native adapter and Android VPN modes report UNSUPPORTED; no generic sing-box artifact is guessed.
  • Android SOCKS5/HTTP listener, Wi-Fi QR sharing and Both: the current adapter does not report actual bound listeners, so hotspot sharing fails closed instead of showing ports that do not exist.
  • DIRECT/VOID application routing: models and UI boundary exist, but UID ownership, addDisallowedApplication for DIRECT and native fail-closed packet dropping for VOID are not implemented.
  • Backend sync is a reusable client contract with injected secret storage; wiring it to Android Keystore, an enrollment screen and automatic profile refresh remains.

These are functional blockers, not cosmetic polish. A successful APK build is only a build/integration milestone; it is not evidence that the missing data path works.

Device acceptance still required

Use docs/android-manual-tests.md on a physical Android API 26+ device after the SignBox artifact and listener implementation are added. In particular test VPN consent, screen lock/UI death, service conflict, backend crash, hotspot permissions, actual interface address, laptop SOCKS/HTTP traffic and the aggressive VPN-detection VOID case.