fix
This commit is contained in:
parent
78c2a37ae1
commit
83ae28387e
@ -69,19 +69,6 @@ struct LayerPacket {
|
||||
throw LayerPacketError.invalidLength
|
||||
}
|
||||
|
||||
/*
|
||||
let idx = layerData.count - 4
|
||||
let playload = layerData.subdata(in: 0..<idx)
|
||||
let crc = layerData.subdata(in: idx..<layerData.count)
|
||||
|
||||
guard Self.crc32(data: playload) == UInt32(data: crc) else {
|
||||
|
||||
NSLog("play crc32: \(Self.crc32(data: playload)), get: \(UInt32(data: crc))")
|
||||
|
||||
throw LayerPacketError.crcError
|
||||
}
|
||||
*/
|
||||
|
||||
self.dstMac = Data(playload[0..<6])
|
||||
self.srcMac = Data(playload[6..<12])
|
||||
guard let type = PacketType(rawValue: UInt16(bytes: (playload[12], playload[13]))) else {
|
||||
@ -99,10 +86,6 @@ struct LayerPacket {
|
||||
packet.append(self.type.rawValue.data())
|
||||
packet.append(self.data)
|
||||
|
||||
// 计算crc32的值
|
||||
//let crc32 = data.crc32()
|
||||
//packet.append(Data(uint32: Self.crc32(data: packet)))
|
||||
|
||||
return packet
|
||||
}
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ struct NetworkInterfaceManager {
|
||||
if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),
|
||||
nil, socklen_t(0), NI_NUMERICHOST) == 0) {
|
||||
let address = String(cString: hostname)
|
||||
|
||||
let name = ptr!.pointee.ifa_name!
|
||||
let ifname = String(cString: name)
|
||||
|
||||
|
||||
@ -1,81 +0,0 @@
|
||||
//
|
||||
// PacketTunnelProvider.swift
|
||||
// Tun
|
||||
//
|
||||
// Created by 安礼成 on 2024/1/17.
|
||||
//
|
||||
|
||||
import NetworkExtension
|
||||
|
||||
class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
var context: SDLContext?
|
||||
|
||||
override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {
|
||||
// host: "192.168.0.101", port: 1265
|
||||
guard let options else {
|
||||
return
|
||||
}
|
||||
|
||||
let token = options["token"] as! String
|
||||
//let version = options["version"] as! Int
|
||||
let installed_channel = options["installed_channel"] as! String
|
||||
|
||||
let superIp = options["super_ip"] as! String
|
||||
Task {
|
||||
SDLLogger.logLevel = .debug
|
||||
do {
|
||||
self.context = try SDLContext(provider: self, config: .init(
|
||||
version: 1,
|
||||
installedChannel: installed_channel,
|
||||
//superHost: "118.178.229.213",
|
||||
superHost: superIp,
|
||||
superPort: 18083,
|
||||
stunServers: [.init(host: superIp, ports: [1265, 1266]), .init(host: "118.178.229.213", ports: [1265, 1266])],
|
||||
clientId: SDLContext.getUUID(),
|
||||
token: ""
|
||||
//token: token
|
||||
))
|
||||
|
||||
try await self.context?.start()
|
||||
completionHandler(nil)
|
||||
} catch let err {
|
||||
NSLog("SDLContext start get error: \(err)")
|
||||
|
||||
completionHandler(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {
|
||||
// Add code here to start the process of stopping the tunnel.
|
||||
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.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 获取物理网卡ip地址
|
||||
extension PacketTunnelProvider {
|
||||
|
||||
public static var viaInterface: NetworkInterface? = {
|
||||
let interfaces = NetworkInterfaceManager.getInterfaces()
|
||||
|
||||
return interfaces.first {$0.name == "en0"}
|
||||
}()
|
||||
|
||||
}
|
||||
@ -101,7 +101,7 @@ class SDLContext {
|
||||
// 数据包读取任务
|
||||
private var readTask: Task<(), Never>?
|
||||
|
||||
let provider: PacketTunnelProvider
|
||||
let provider: NEPacketTunnelProvider
|
||||
|
||||
private var sessionManager: SessionManager
|
||||
private var holerManager: HolerManager
|
||||
@ -124,7 +124,8 @@ class SDLContext {
|
||||
private var flowTracer = SDLFlowTracerActor()
|
||||
private var flowTracerCancel: AnyCancellable?
|
||||
|
||||
init(provider: PacketTunnelProvider, config: Configuration) throws {
|
||||
init(provider: NEPacketTunnelProvider, config: Configuration) throws {
|
||||
|
||||
self.config = config
|
||||
self.rsaCipher = try RSACipher(keySize: 1024)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user