- 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
111 lines
3.2 KiB
Swift
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
|
|
}
|
|
}
|