update ios project
update ios project
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
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.
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user