Commit ab3aeb0
feat(ios): full-tunnel VPN app — UI parity, build fix, SNI pool
iOS NetworkExtension full-tunnel client (leaf + FakeIP -> SOCKS5 -> mhrv-rs):
- Build: produce the static lib via `cargo rustc --crate-type staticlib`.
`cargo build --lib` also links the cdylib, which fails on iOS
(undefined ___chkstk_darwin under -nodefaultlibs), aborting the build
and leaving a stale .a so device builds never picked up changes.
- utun fd: getsockopt(UTUN_OPT_IFNAME) fallback when the KVC keypath
returns nil (newer iOS), plus dup() so leaf owns the fd independently.
- leaf log level "none" so leaf's tracing init doesn't panic against the
already-installed global subscriber; panic hook logs payload + location.
- UI: full-tunnel mode, multi deployment IDs, auth key show/hide, SNI pool
editor with per-SNI TLS probe, auto-detect Google IP, QUIC/STUN/DoH toggles.
- Config import: mhrv-rs:// (zlib) + JSON/TOML, Android-compatible.
- Signing team read from a gitignored Local.xcconfig (no team ID in VCS);
generated .xcodeproj and build/ are gitignored.
- App icon; version from MARKETING_VERSION; iOS README incl. TestFlight steps.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 40b5386 commit ab3aeb0
21 files changed
Lines changed: 3721 additions & 26 deletions
File tree
- .cargo
- ios
- App
- Assets.xcassets/AppIcon.appiconset
- NetworkExtension
- scripts
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments