// 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()
