Files
appchk-app/GlassTunnel-old/PacketTunnelProvider.swift
2020-02-07 16:08:57 +01:00

58 lines
2.0 KiB
Swift

import NetworkExtension
class PacketTunnelProvider: NEPacketTunnelProvider {
override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
NSLog("TUN: startTunnel")
// let endpoint = NWHostEndpoint(hostname:"127.0.0.1", port:"4000")
// self.createTCPConnection(to: endpoint, enableTLS: false, tlsParameters: nil, delegate: nil)
completionHandler(nil)
/*
let settings = NEPacketTunnelNetworkSettings(tunnelRemoteAddress: "127.0.0.1")
let ip4set = NEIPv4Settings(addresses: ["127.0.0.1"], subnetMasks: ["255.255.255.0"])
let defaultRoute = NEIPv4Route.default()
let localRoute = NEIPv4Route(destinationAddress: "192.168.2.1", subnetMask: "255.255.255.0")
ip4set.includedRoutes = [defaultRoute, localRoute]
ip4set.excludedRoutes = []
settings.ipv4Settings = ip4set
// settings.mtu = 1500
settings.dnsSettings = NEDNSSettings(servers: ["8.8.8.8"])
settings.tunnelOverheadBytes = 150
self.setTunnelNetworkSettings(settings) { error in
guard error == nil else {
NSLog("setTunnelNetworkSettings error: \(String(describing: error))")
return
}
NSLog("setTunnelNetworkSettings success")
completionHandler(nil)
}*/
}
override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
NSLog("TUN: stopTunnel")
completionHandler()
}
override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) {
NSLog("TUN: handleAppMessage")
if let handler = completionHandler {
handler(messageData)
}
}
override func sleep(completionHandler: @escaping () -> Void) {
NSLog("TUN: sleep")
completionHandler()
}
override func wake() {
NSLog("TUN: wake")
}
override func createUDPSessionThroughTunnel(to remoteEndpoint: NWEndpoint, from localEndpoint: NWHostEndpoint?) -> NWUDPSession {
NSLog("TUN: createUDP")
return createUDPSession(to: remoteEndpoint, from: localEndpoint)
}
}