Add SwiftUI + Network Extension (LibXray/hev), parse Clash Meta YAML from subscription URLs into vless/trojan/hy2 share links, keep the selected server on connect, and ship Navis-3.8.2.13.ipa with versioned changelog. Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
2.8 KiB
Markdown
64 lines
2.8 KiB
Markdown
# Navis iOS
|
||
|
||
Клиент по модели **macOS Manager**: ядро поднимает SOCKS `:1080` / HTTP `:1081`, трафик в туннель через **hev → SOCKS** (вместо `networksetup`).
|
||
|
||
Версия: **3.8.2+13**
|
||
|
||
## Что работает
|
||
|
||
| Протокол | Статус |
|
||
|----------|--------|
|
||
| VLESS / VMess / Trojan | Да — LibXray + конфиг как `internal/protocols/xray` |
|
||
| Hysteria2 | Конфиг готов (`Hy2ConfigBuilder`); runtime ждёт единый NavisCore (второй Go-runtime нельзя рядом с LibXray) |
|
||
| Naive / AWG | Нет (как ограничения iOS / следующий этап) |
|
||
|
||
## Требования
|
||
|
||
- Xcode 16+
|
||
- `scripts/fetch-ios-cores.sh` → `ios/Vendor/` (LibXray + HevSocks5Tunnel)
|
||
- Apple Developer Team для установки на устройство
|
||
- App IDs + App Group `group.win.evilfox.navis` + Network Extension (Packet Tunnel)
|
||
|
||
## Сборка
|
||
|
||
```bash
|
||
./scripts/fetch-ios-cores.sh # один раз / при обновлении ядер
|
||
NAVIS_IOS_SKIP_SIMULATOR=1 ./scripts/build-ios.sh
|
||
|
||
# Подписанный IPA:
|
||
export NAVIS_IOS_TEAM_ID=XXXXXXXXXX
|
||
./scripts/build-ios.sh
|
||
```
|
||
|
||
Артефакты: `dist/navis-release/ios/Navis-<version>.ipa` (без Team — unsigned, подпишите сами).
|
||
|
||
Или Xcode → `ios/Navis.xcodeproj` → Team → Run / Archive.
|
||
|
||
## Архитектура
|
||
|
||
1. App пишет URI в App Group + `providerConfiguration` → `startVPNTunnel`
|
||
2. `PacketTunnelProvider`: сначала LibXray/Hy2 → SOCKS `:1080`, затем маршруты (IP сервера в exclude)
|
||
3. `hev_socks5_tunnel_main(utun_fd)` → `127.0.0.1:1080`
|
||
|
||
## Bundle IDs
|
||
|
||
| Target | ID |
|
||
|--------|-----|
|
||
| Navis | `win.evilfox.navis` |
|
||
| NavisTunnel | `win.evilfox.navis.tunnel` |
|
||
|
||
## История версий (iOS)
|
||
|
||
- **3.8.2+13**
|
||
- Clash Meta YAML-подписки → vless / trojan / hysteria2 share-URI (не JSON)
|
||
- Фильтр ложных naive (`Qure@master` в path иконок)
|
||
- Выбор сервера не подменяется на «первый»; hy2/naive помечены как недоступные
|
||
- Надёжная передача URI: App Group file + `providerConfiguration` + options
|
||
- Старт Xray до `setTunnelNetworkSettings`, exclude IP прокси (без routing loop)
|
||
- Кнопка «Отключить» во время подключения; бейдж версии `x.y.z.build`
|
||
- `build-ios.sh` читает версию из `update.go`; IPA: `Navis-3.8.2.13.ipa`
|
||
- **3.8.2+12 (каркас iOS в ветке до bump)**
|
||
- SwiftUI + Packet Tunnel stub → полный путь LibXray + hev
|
||
- XrayConfigBuilder / Hy2ConfigBuilder по модели macOS
|
||
- fetch-ios-cores.sh (LibXray, HevSocks5Tunnel)
|