Files
UUVPN/source/ios/Shared/PacketTunnelProvider.swift
T
Zeus 1bf69048f3 update ios project
update ios project
2024-07-24 11:51:39 +08:00

68 lines
2.2 KiB
Swift

import NetworkExtension
//import LeafFFI
import leaf
class PacketTunnelProvider: NEPacketTunnelProvider {
private lazy var adapter: LeafAdapater = {
LeafAdapater.setPacketTunnelProvider(with: self)
return LeafAdapater.shared()
}()
override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
let ipv4 = NEIPv4Settings(addresses: ["198.18.20.20"], subnetMasks: ["255.255.255.0"])
ipv4.includedRoutes = [NEIPv4Route.default()]
let ipv6 = NEIPv6Settings(addresses: ["FD00::9999:9999"], networkPrefixLengths: [7])
ipv6.includedRoutes = [NEIPv6Route.default()]
let dns = NEDNSSettings(servers: ["1.1.1.1"])
// https://developer.apple.com/forums/thread/116033
// Mention special Tor domains here, so the OS doesn't drop onion domain
// resolve requests immediately.
dns.matchDomains = ["", "onion", "exit"]
let settings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: "198.18.20.200")
settings.ipv4Settings = ipv4
settings.ipv6Settings = ipv6
settings.dnsSettings = dns
settings.proxySettings = nil
settings.mtu = 1500
self.adapter.start(completionHandler: completionHandler)
setTunnelNetworkSettings(settings) { error in
if let error = error {
return completionHandler(error)
}
completionHandler(nil)
}
}
// override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
// self.adapter.stop { error in
// if let error = error {
// Logger.log(error.localizedDescription, to: Logger.vpnLogFile)
// }
//
// completionHandler()
// }
// }
override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) {
// Add code here to handle the message.
if let handler = completionHandler {
handler(messageData)
}
}
override func sleep(completionHandler: @escaping () -> Void) {
// Add code here to get ready to sleep.
completionHandler()
}
override func wake() {
// Add code here to wake up.
}
}