Files
ProxyIOS/UI/More/MoreView.swift
Trey t 148bc3887c Add iPad support, auto-pinning, and comprehensive logging
- Adaptive iPhone/iPad layout with NavigationSplitView sidebar
- Auto-detect SSL-pinned domains, fall back to passthrough
- Certificate install via local HTTP server (Safari profile flow)
- App Group-backed CA, per-domain leaf cert LRU cache
- DB-backed config repository, Darwin notification throttling
- Rules engine, breakpoint rules, pinned domain tracking
- os.Logger instrumentation across tunnel/proxy/mitm/capture/cert/rules/db/ipc/ui
- Fix dyld framework embed, race conditions, thread safety
2026-04-11 12:52:18 -05:00

111 lines
3.2 KiB
Swift

import SwiftUI
import ProxyCore
struct MoreView: View {
@Environment(AppState.self) private var appState
var body: some View {
List {
Section {
NavigationLink {
SetupGuideView()
} label: {
Label {
VStack(alignment: .leading) {
Text("Setup Guide")
Text(setupStatusText)
.font(.caption)
.foregroundStyle(setupStatusColor)
}
} icon: {
Image(systemName: "checkmark.shield.fill")
.foregroundStyle(setupStatusColor)
}
}
NavigationLink {
CertificateView()
} label: {
Label("Certificate", systemImage: "lock.shield")
}
}
Section("Rules") {
NavigationLink {
SSLProxyingListView()
} label: {
Label("SSL Proxying List", systemImage: "lock.fill")
}
NavigationLink {
BlockListView()
} label: {
Label("Block List", systemImage: "xmark.shield")
}
NavigationLink {
MapLocalView()
} label: {
Label("Map Local", systemImage: "doc.on.doc")
}
NavigationLink {
NoCachingView()
} label: {
Label("No Caching", systemImage: "arrow.clockwise.circle")
}
NavigationLink {
DNSSpoofingView()
} label: {
Label("DNS Spoofing", systemImage: "network")
}
NavigationLink {
PinnedDomainsView()
} label: {
Label("Pinned Domains", systemImage: "pin.slash")
}
}
Section("Settings") {
NavigationLink {
AdvancedSettingsView()
} label: {
Label("Advanced", systemImage: "gearshape.2")
}
NavigationLink {
AppSettingsView()
} label: {
Label("App Settings", systemImage: "gearshape")
}
NavigationLink {
AppLockView()
} label: {
Label("App Lock", systemImage: "lock.fill")
}
}
}
.navigationTitle("More")
}
private var setupStatusText: String {
if appState.isHTTPSInspectionVerified {
return "HTTPS Verified"
}
if appState.isVPNConnected && appState.hasSharedCertificate {
return "Ready to Capture"
}
return "Setup Required"
}
private var setupStatusColor: Color {
if appState.isVPNConnected && appState.hasSharedCertificate {
return .green
}
return .orange
}
}