// main.swift — System Extension 入口 // // System Extension 是可执行程序(非 appex 的 NSExtensionMain 插件),需显式 main。 // NEProvider.startSystemExtensionMode() 读 Info.plist 的 NEProviderClasses, // 按系统请求实例化并运行 PacketTunnelProvider。dispatchMain() 保持进程常驻。 import Foundation import NetworkExtension // 【临时诊断】把 stderr/stdout 重定向到 App Group 容器文件,捕获 libbox(Go)的 // fatal error / panic——系统扩展默认不把 stderr 收进统一日志。诊断完移除。 if let c = FileManager.default.containerURL( forSecurityApplicationGroupIdentifier: "BYL4KQHMTN.com.pangolin.pangolin") { let p = c.appendingPathComponent("stderr.log").path freopen(p, "a", stderr) freopen(p, "a", stdout) setvbuf(stderr, nil, _IONBF, 0) FileHandle.standardError.write("=== boot \(Date()) ===\n".data(using: .utf8)!) } autoreleasepool { NEProvider.startSystemExtensionMode() } dispatchMain()