This commit is contained in:
anlicheng 2025-07-14 15:44:23 +08:00
parent 78c2a37ae1
commit 83ae28387e
4 changed files with 4 additions and 100 deletions

View File

@ -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
}

View File

@ -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)

View File

@ -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"}
}()
}

View File

@ -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)