From c63b20b568f0c3d3260887c90f91ccf55da388de Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Wed, 4 Feb 2026 00:07:06 +0800 Subject: [PATCH] fix logger --- Tun/PacketTunnelProvider.swift | 3 +- Tun/Punchnet/Actors/SDLNATProberActor.swift | 8 +- Tun/Punchnet/Actors/SDLPuncherActor.swift | 10 +- Tun/Punchnet/SDLAddressResolver.swift | 3 +- Tun/Punchnet/SDLContextActor.swift | 91 +++++++++---------- Tun/Punchnet/SDLLogger.swift | 4 +- Tun/Punchnet/SDLMessage.swift | 8 +- Tun/Punchnet/SDLNoticeClient.swift | 6 -- Tun/Punchnet/SDLTunnelProviderAdapter.swift | 6 +- .../Network/NetworkDisconnctedView.swift | 2 +- 10 files changed, 63 insertions(+), 78 deletions(-) diff --git a/Tun/PacketTunnelProvider.swift b/Tun/PacketTunnelProvider.swift index ceeaca1..a832959 100644 --- a/Tun/PacketTunnelProvider.swift +++ b/Tun/PacketTunnelProvider.swift @@ -32,10 +32,9 @@ class PacketTunnelProvider: NEPacketTunnelProvider { // 加密算法 let rsaCipher = try! CCRSACipher(keySize: 1024) let aesChiper = CCAESChiper() - let logger = SDLLogger(level: .debug) self.rootTask = Task { - self.contextActor = SDLContextActor(provider: self, config: config, rsaCipher: rsaCipher, aesCipher: aesChiper, logger: logger) + self.contextActor = SDLContextActor(provider: self, config: config, rsaCipher: rsaCipher, aesCipher: aesChiper) await self.contextActor?.start() completionHandler(nil) } diff --git a/Tun/Punchnet/Actors/SDLNATProberActor.swift b/Tun/Punchnet/Actors/SDLNATProberActor.swift index 7f23315..f9ca19f 100644 --- a/Tun/Punchnet/Actors/SDLNATProberActor.swift +++ b/Tun/Punchnet/Actors/SDLNATProberActor.swift @@ -54,7 +54,6 @@ actor SDLNATProberActor { private let udpHole: SDLUDPHole private let addressArray: [[SocketAddress]] - private let logger: SDLLogger // MARK: - Completion private var cookieId: UInt32 = 1 @@ -63,10 +62,9 @@ actor SDLNATProberActor { // MARK: - Init - init(udpHole: SDLUDPHole, addressArray: [[SocketAddress]], logger: SDLLogger) { + init(udpHole: SDLUDPHole, addressArray: [[SocketAddress]]) { self.udpHole = udpHole self.addressArray = addressArray - self.logger = logger } // MARK: - Public API @@ -104,7 +102,7 @@ actor SDLNATProberActor { // 提前退出的情况,没有nat映射 if session.replies[1] != nil { let localAddress = self.udpHole.getLocalAddress() - if reply.socketAddress() == localAddress { + if await reply.socketAddress() == localAddress { finish(cookie: session.cookieId, .noNat) return } @@ -113,7 +111,7 @@ actor SDLNATProberActor { if let step1 = session.replies[1], let step2 = session.replies[2] { // 如果natAddress2 的IP地址与上次回来的IP是不一样的,它就是对称型NAT; 这次的包也一定能发成功并收到 // 如果ip地址变了,这说明{dstIp, dstPort, srcIp, srcPort}, 其中有一个变了;则用新的ip地址 - if let addr1 = step1.socketAddress(), let addr2 = step2.socketAddress(), addr1 != addr2 { + if let addr1 = await step1.socketAddress(), let addr2 = await step2.socketAddress(), addr1 != addr2 { finish(cookie: session.cookieId, .symmetric) return } diff --git a/Tun/Punchnet/Actors/SDLPuncherActor.swift b/Tun/Punchnet/Actors/SDLPuncherActor.swift index deee40a..2bdf295 100644 --- a/Tun/Punchnet/Actors/SDLPuncherActor.swift +++ b/Tun/Punchnet/Actors/SDLPuncherActor.swift @@ -20,7 +20,6 @@ actor SDLPuncherActor { private var pendingRequests: [UInt32:RegisterRequest] = [:] // 处理holer - private var logger: SDLLogger private var querySocketAddress: SocketAddress nonisolated private let(requestStream, requestContinuation) = AsyncStream.makeStream(of: RegisterRequest.self, bufferingPolicy: .unbounded) @@ -31,10 +30,9 @@ actor SDLPuncherActor { let networkId: UInt32 } - init(udpHole: SDLUDPHole, querySocketAddress: SocketAddress, logger: SDLLogger) { + init(udpHole: SDLUDPHole, querySocketAddress: SocketAddress) { self.udpHole = udpHole self.querySocketAddress = querySocketAddress - self.logger = logger } nonisolated func submitRegisterRequest(request: RegisterRequest) { @@ -74,8 +72,8 @@ actor SDLPuncherActor { func handlePeerInfo(peerInfo: SDLPeerInfo) async { if let request = pendingRequests.removeValue(forKey: peerInfo.pktID) { - if let remoteAddress = peerInfo.v4Info.socketAddress() { - self.logger.log("[SDLContext] hole sock address: \(remoteAddress)", level: .debug) + if let remoteAddress = try? await peerInfo.v4Info.socketAddress() { + SDLLogger.shared.log("[SDLContext] hole sock address: \(remoteAddress)", level: .debug) // 发送register包 var register = SDLRegister() register.networkID = request.networkId @@ -84,7 +82,7 @@ actor SDLPuncherActor { self.udpHole.send(type: .register, data: try! register.serializedData(), remoteAddress: remoteAddress) } else { - self.logger.log("[SDLContext] hole sock address is invalid: \(peerInfo.v4Info)", level: .warning) + SDLLogger.shared.log("[SDLContext] hole sock address is invalid: \(peerInfo.v4Info)", level: .warning) } } } diff --git a/Tun/Punchnet/SDLAddressResolver.swift b/Tun/Punchnet/SDLAddressResolver.swift index ce40988..92ed73d 100644 --- a/Tun/Punchnet/SDLAddressResolver.swift +++ b/Tun/Punchnet/SDLAddressResolver.swift @@ -22,7 +22,6 @@ actor SDLAddressResolver { func resolve(host: String, port: Int) async throws -> SocketAddress { let key = "\(host):\(port)" - if let cached = cache[key] { return cached } @@ -30,8 +29,8 @@ actor SDLAddressResolver { let address = try await pool.runIfActive { try SocketAddress.makeAddressResolvingHost(host, port: port) } - cache[key] = address + return address } diff --git a/Tun/Punchnet/SDLContextActor.swift b/Tun/Punchnet/SDLContextActor.swift index 07913a8..c579ac4 100644 --- a/Tun/Punchnet/SDLContextActor.swift +++ b/Tun/Punchnet/SDLContextActor.swift @@ -57,20 +57,17 @@ actor SDLContextActor { // 流量统计 nonisolated private let flowTracer = SDLFlowTracer() - nonisolated private let logger: SDLLogger - // 处理内部的需要长时间运行的任务 private var loopChildWorkers: [Task] = [] - public init(provider: NEPacketTunnelProvider, config: SDLConfiguration, rsaCipher: RSACipher, aesCipher: AESCipher, logger: SDLLogger) { - self.logger = logger + public init(provider: NEPacketTunnelProvider, config: SDLConfiguration, rsaCipher: RSACipher, aesCipher: AESCipher) { self.config = config self.rsaCipher = rsaCipher self.aesCipher = aesCipher self.sessionManager = SessionManager() self.arpServer = ArpServer(known_macs: [:]) - self.providerAdapter = SDLTunnelProviderAdapter(provider: provider, logger: logger) + self.providerAdapter = SDLTunnelProviderAdapter(provider: provider) } public func start() { @@ -78,32 +75,32 @@ actor SDLContextActor { self.loopChildWorkers.append(spawnLoop { let noticeClient = try self.startNoticeClient() - self.logger.log("[SDLContext] noticeClient running!!!!") + SDLLogger.shared.log("[SDLContext] noticeClient running!!!!") try await noticeClient.waitClose() - self.logger.log("[SDLContext] noticeClient closed!!!!") + SDLLogger.shared.log("[SDLContext] noticeClient closed!!!!") }) self.loopChildWorkers.append(spawnLoop { let dnsClient = try await self.startDnsClient() - self.logger.log("[SDLContext] dns running!!!!") + SDLLogger.shared.log("[SDLContext] dns running!!!!") try await dnsClient.waitClose() - self.logger.log("[SDLContext] dns closed!!!!") + SDLLogger.shared.log("[SDLContext] dns closed!!!!") }) self.loopChildWorkers.append(spawnLoop { let udpHole = try await self.startUDPHole() - self.logger.log("[SDLContext] udp running!!!!") + SDLLogger.shared.log("[SDLContext] udp running!!!!") try await udpHole.waitClose() - self.logger.log("[SDLContext] udp closed!!!!") + SDLLogger.shared.log("[SDLContext] udp closed!!!!") }) } private func startNoticeClient() throws -> SDLNoticeClient { // 启动noticeClient - let noticeClient = try SDLNoticeClient(noticePort: self.config.noticePort, logger: self.logger) + let noticeClient = try SDLNoticeClient(noticePort: self.config.noticePort, logger: SDLLogger.shared) noticeClient.start() - self.logger.log("[SDLContext] noticeClient started") + SDLLogger.shared.log("[SDLContext] noticeClient started") self.noticeClient = noticeClient return noticeClient @@ -116,7 +113,7 @@ actor SDLContextActor { // 启动monitor let monitor = SDLNetworkMonitor() monitor.start() - self.logger.log("[SDLContext] monitor started") + SDLLogger.shared.log("[SDLContext] monitor started") self.monitor = monitor self.monitorWorker = Task.detached { @@ -125,9 +122,9 @@ actor SDLContextActor { case .changed: // 需要重新探测网络的nat类型 //self.natType = await self.getNatType() - self.logger.log("didNetworkPathChanged, nat type is:", level: .info) + SDLLogger.shared.log("didNetworkPathChanged, nat type is:", level: .info) case .unreachable: - self.logger.log("didNetworkPathUnreachable", level: .warning) + SDLLogger.shared.log("didNetworkPathUnreachable", level: .warning) } } } @@ -139,9 +136,9 @@ actor SDLContextActor { // 启动dns服务 let dnsSocketAddress = try SocketAddress.makeAddressResolvingHost(self.config.remoteDnsServer, port: 15353) - let dnsClient = try await SDLDNSClient(dnsServerAddress: dnsSocketAddress, logger: self.logger) + let dnsClient = try await SDLDNSClient(dnsServerAddress: dnsSocketAddress, logger: SDLLogger.shared) try dnsClient.start() - self.logger.log("[SDLContext] dnsClient started") + SDLLogger.shared.log("[SDLContext] dnsClient started") self.dnsClient = dnsClient self.dnsWorker = Task.detached { // 处理事件流 @@ -162,9 +159,9 @@ actor SDLContextActor { self.udpHoleWorkers = nil // 启动udp服务器 - let udpHole = try SDLUDPHole(logger: self.logger) + let udpHole = try SDLUDPHole(logger: SDLLogger.shared) try udpHole.start() - self.logger.log("[SDLContext] udpHole started") + SDLLogger.shared.log("[SDLContext] udpHole started") self.udpHole = udpHole await udpHole.channelIsActived() @@ -180,12 +177,12 @@ actor SDLContextActor { if Task.isCancelled { break } - self.logger.log("[SDLContext] will do stunRequest22") + SDLLogger.shared.log("[SDLContext] will do stunRequest22") await self.sendStunRequest() - self.logger.log("[SDLContext] will do stunRequest44") + SDLLogger.shared.log("[SDLContext] will do stunRequest44") } - self.logger.log("[SDLContext] will do stunRequest55") + SDLLogger.shared.log("[SDLContext] will do stunRequest55") } // 处理数据流 @@ -257,14 +254,14 @@ actor SDLContextActor { return } - self.puncherActor = SDLPuncherActor(udpHole: udpHole, querySocketAddress: config.stunSocketAddress, logger: logger) - self.proberActor = SDLNATProberActor(udpHole: udpHole, addressArray: self.config.stunProbeSocketAddressArray, logger: self.logger) + self.puncherActor = SDLPuncherActor(udpHole: udpHole, querySocketAddress: config.stunSocketAddress) + self.proberActor = SDLNATProberActor(udpHole: udpHole, addressArray: self.config.stunProbeSocketAddressArray) // 开始探测nat的类型 Task.detached { if let natType = await self.proberActor?.probeNatType() { await self.setNatType(natType: natType) - self.logger.log("[SDLContext] nat_type is: \(natType)") + SDLLogger.shared.log("[SDLContext] nat_type is: \(natType)") } } @@ -281,7 +278,7 @@ actor SDLContextActor { registerSuper.accessToken = self.config.accessToken if let registerSuperData = try? registerSuper.serializedData() { - self.logger.log("[SDLContext] will send register super") + SDLLogger.shared.log("[SDLContext] will send register super") self.udpHole?.send(type: .registerSuper, data: registerSuperData, remoteAddress: self.config.stunSocketAddress) } } @@ -294,7 +291,7 @@ actor SDLContextActor { stunRequest.mac = self.config.networkAddress.mac stunRequest.natType = UInt32(self.natType.rawValue) - self.logger.log("[SDLContext] will send stun request") + SDLLogger.shared.log("[SDLContext] will send stun request") if let stunData = try? stunRequest.serializedData() { let remoteAddress = self.config.stunSocketAddress @@ -306,17 +303,17 @@ actor SDLContextActor { // 需要对数据通过rsa的私钥解码 let aesKey = try! self.rsaCipher.decode(data: Data(registerSuperAck.aesKey)) - self.logger.log("[SDLContext] get registerSuperAck, aes_key len: \(aesKey.count)", level: .info) + SDLLogger.shared.log("[SDLContext] get registerSuperAck, aes_key len: \(aesKey.count)", level: .info) // 服务器分配的tun网卡信息 do { let ipAddress = try await self.providerAdapter.setNetworkSettings(networkAddress: self.config.networkAddress, dnsServer: SDLDNSClient.Helper.dnsServer) - self.logger.log("[SDLContext] setNetworkSettings successed") + SDLLogger.shared.log("[SDLContext] setNetworkSettings successed") self.noticeClient?.send(data: NoticeMessage.ipAdress(ip: ipAddress)) - self.logger.log("[SDLContext] send ip successed") + SDLLogger.shared.log("[SDLContext] send ip successed") self.startReader() - self.logger.log("[SDLContext] reader started") + SDLLogger.shared.log("[SDLContext] reader started") } catch let err { - self.logger.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error) + SDLLogger.shared.log("[SDLContext] setTunnelNetworkSettings get error: \(err)", level: .error) exit(-1) } @@ -338,7 +335,7 @@ actor SDLContextActor { let alertNotice = NoticeMessage.alert(alert: errorMessage) self.noticeClient?.send(data: alertNotice) } - self.logger.log("[SDLContext] Get a SuperNak message exit", level: .warning) + SDLLogger.shared.log("[SDLContext] Get a SuperNak message exit", level: .warning) } @@ -346,10 +343,10 @@ actor SDLContextActor { switch event { case .natChanged(let natChangedEvent): let dstMac = natChangedEvent.mac - self.logger.log("[SDLContext] natChangedEvent, dstMac: \(dstMac)", level: .info) + SDLLogger.shared.log("[SDLContext] natChangedEvent, dstMac: \(dstMac)", level: .info) sessionManager.removeSession(dstMac: dstMac) case .sendRegister(let sendRegisterEvent): - self.logger.log("[SDLContext] sendRegisterEvent, ip: \(sendRegisterEvent)", level: .debug) + SDLLogger.shared.log("[SDLContext] sendRegisterEvent, ip: \(sendRegisterEvent)", level: .debug) let address = SDLUtil.int32ToIp(sendRegisterEvent.natIp) if let remoteAddress = try? SocketAddress.makeAddressResolvingHost(address, port: Int(sendRegisterEvent.natPort)) { // 发送register包 @@ -369,7 +366,7 @@ actor SDLContextActor { private func handleRegister(remoteAddress: SocketAddress, register: SDLRegister) throws { let networkAddr = config.networkAddress - self.logger.log("register packet: \(register), network_address: \(networkAddr)", level: .debug) + SDLLogger.shared.log("register packet: \(register), network_address: \(networkAddr)", level: .debug) // 判断目标地址是否是tun的网卡地址, 并且是在同一个网络下 if register.dstMac == networkAddr.mac && register.networkID == networkAddr.networkId { @@ -384,7 +381,7 @@ actor SDLContextActor { let session = Session(dstMac: register.srcMac, natAddress: remoteAddress) self.sessionManager.addSession(session: session) } else { - self.logger.log("SDLContext didReadRegister get a invalid packet, because dst_ip not matched: \(register.dstMac)", level: .warning) + SDLLogger.shared.log("SDLContext didReadRegister get a invalid packet, because dst_ip not matched: \(register.dstMac)", level: .warning) } } @@ -395,7 +392,7 @@ actor SDLContextActor { let session = Session(dstMac: registerAck.srcMac, natAddress: remoteAddress) self.sessionManager.addSession(session: session) } else { - self.logger.log("SDLContext didReadRegisterAck get a invalid packet, because dst_mac not matched: \(registerAck.dstMac)", level: .warning) + SDLLogger.shared.log("SDLContext didReadRegisterAck get a invalid packet, because dst_mac not matched: \(registerAck.dstMac)", level: .warning) } } @@ -426,18 +423,18 @@ actor SDLContextActor { if arpPacket.targetIP == networkAddr.ip { switch arpPacket.opcode { case .request: - self.logger.log("[SDLContext] get arp request packet", level: .debug) + SDLLogger.shared.log("[SDLContext] get arp request packet", level: .debug) let response = ARPPacket.arpResponse(for: arpPacket, mac: networkAddr.mac, ip: networkAddr.ip) self.routeLayerPacket(dstMac: arpPacket.senderMAC, type: .arp, data: response.marshal()) case .response: - self.logger.log("[SDLContext] get arp response packet", level: .debug) + SDLLogger.shared.log("[SDLContext] get arp response packet", level: .debug) self.arpServer.append(ip: arpPacket.senderIP, mac: arpPacket.senderMAC) } } else { - self.logger.log("[SDLContext] get invalid arp packet: \(arpPacket), target_ip: \(SDLUtil.int32ToIp(arpPacket.targetIP)), net ip: \(SDLUtil.int32ToIp(networkAddr.ip))", level: .debug) + SDLLogger.shared.log("[SDLContext] get invalid arp packet: \(arpPacket), target_ip: \(SDLUtil.int32ToIp(arpPacket.targetIP)), net ip: \(SDLUtil.int32ToIp(networkAddr.ip))", level: .debug) } } else { - self.logger.log("[SDLContext] get invalid arp packet", level: .debug) + SDLLogger.shared.log("[SDLContext] get invalid arp packet", level: .debug) } case .ipv4: guard let ipPacket = IPPacket(layerPacket.data), ipPacket.header.destination == networkAddr.ip else { @@ -446,7 +443,7 @@ actor SDLContextActor { let packet = NEPacket(data: ipPacket.data, protocolFamily: 2) self.providerAdapter.writePackets(packets: [packet]) default: - self.logger.log("[SDLContext] get invalid packet", level: .debug) + SDLLogger.shared.log("[SDLContext] get invalid packet", level: .debug) } } @@ -491,7 +488,7 @@ actor SDLContextActor { let networkAddr = self.config.networkAddress if SDLDNSClient.Helper.isDnsRequestPacket(ipPacket: packet) { let destIp = packet.header.destination_ip - self.logger.log("[DNSQuery] destIp: \(destIp), int: \(packet.header.destination.asIpAddress())", level: .debug) + SDLLogger.shared.log("[DNSQuery] destIp: \(destIp), int: \(packet.header.destination.asIpAddress())", level: .debug) self.dnsClient?.forward(ipPacket: packet) return } @@ -509,7 +506,7 @@ actor SDLContextActor { self.routeLayerPacket(dstMac: dstMac, type: .ipv4, data: packet.data) } else { - self.logger.log("[SDLContext] dstIp: \(dstIp.asIpAddress()) arp query not found, broadcast", level: .debug) + SDLLogger.shared.log("[SDLContext] dstIp: \(dstIp.asIpAddress()) arp query not found, broadcast", level: .debug) // 构造arp广播 let arpReqeust = ARPPacket.arpRequest(senderIP: networkAddr.ip, senderMAC: networkAddr.mac, targetIP: dstIp) self.routeLayerPacket(dstMac: ARPPacket.broadcastMac , type: .arp, data: arpReqeust.marshal()) @@ -541,7 +538,7 @@ actor SDLContextActor { else { // 通过session发送到对端 if let session = self.sessionManager.getSession(toAddress: dstMac) { - self.logger.log("[SDLContext] send packet by session: \(session)", level: .debug) + SDLLogger.shared.log("[SDLContext] send packet by session: \(session)", level: .debug) self.udpHole?.send(type: .data, data: data, remoteAddress: session.natAddress) self.flowTracer.inc(num: data.count, type: .p2p) } diff --git a/Tun/Punchnet/SDLLogger.swift b/Tun/Punchnet/SDLLogger.swift index a3c932d..c5bfb70 100644 --- a/Tun/Punchnet/SDLLogger.swift +++ b/Tun/Punchnet/SDLLogger.swift @@ -28,10 +28,12 @@ public class SDLLogger: @unchecked Sendable { } } + static let shared = SDLLogger(level: .debug) + private let level: Level private let log: Logger - public init(level: Level) { + private init(level: Level) { self.level = level self.log = Logger(subsystem: "com.jihe.punchnet", category: "punchnet") } diff --git a/Tun/Punchnet/SDLMessage.swift b/Tun/Punchnet/SDLMessage.swift index c5f75cc..a7f0165 100644 --- a/Tun/Punchnet/SDLMessage.swift +++ b/Tun/Punchnet/SDLMessage.swift @@ -77,18 +77,18 @@ enum SDLNAKErrorCode: UInt8 { } extension SDLV4Info { - func socketAddress() -> SocketAddress? { + func socketAddress() async throws -> SocketAddress { let address = "\(v4[0]).\(v4[1]).\(v4[2]).\(v4[3])" - return try? SocketAddress.makeAddressResolvingHost(address, port: Int(port)) + return try await SDLAddressResolver.shared.resolve(host: address, port: Int(port)) } } extension SDLStunProbeReply { - func socketAddress() -> SocketAddress? { + func socketAddress() async -> SocketAddress? { let address = SDLUtil.int32ToIp(self.ip) - return try? SocketAddress.makeAddressResolvingHost(address, port: Int(port)) + return try? await SDLAddressResolver.shared.resolve(host: address, port: Int(port)) } } diff --git a/Tun/Punchnet/SDLNoticeClient.swift b/Tun/Punchnet/SDLNoticeClient.swift index aa97253..a35e76c 100644 --- a/Tun/Punchnet/SDLNoticeClient.swift +++ b/Tun/Punchnet/SDLNoticeClient.swift @@ -46,21 +46,15 @@ final class SDLNoticeClient { func start() { let channel = self.channel self.task = Task.detached { - self.logger.log("[SDLNoticeClient] task 11", level: .debug) guard let remoteAddress = try? await SDLAddressResolver.shared.resolve(host: "127.0.0.1", port: self.noticePort) else { - self.logger.log("[SDLNoticeClient] task 22", level: .debug) return } for await data in self.writeStream { if Task.isCancelled { - self.logger.log("[SDLNoticeClient] task 33", level: .debug) break } - self.logger.log("[SDLNoticeClient] task 44", level: .debug) - self.logger.log("[SDLNoticeClient] send packet", level: .debug) - let buf = channel.allocator.buffer(bytes: data) let envelope = AddressedEnvelope(remoteAddress: remoteAddress, data: buf) channel.eventLoop.execute { diff --git a/Tun/Punchnet/SDLTunnelProviderAdapter.swift b/Tun/Punchnet/SDLTunnelProviderAdapter.swift index e5140c1..4ef3e33 100644 --- a/Tun/Punchnet/SDLTunnelProviderAdapter.swift +++ b/Tun/Punchnet/SDLTunnelProviderAdapter.swift @@ -28,10 +28,8 @@ final class SDLTunnelProviderAdapter { } let provider: NEPacketTunnelProvider - let logger: SDLLogger - public init(provider: NEPacketTunnelProvider, logger: SDLLogger) { - self.logger = logger + public init(provider: NEPacketTunnelProvider) { self.provider = provider } @@ -60,7 +58,7 @@ final class SDLTunnelProviderAdapter { dnsSettings.matchDomains = [networkDomain] dnsSettings.matchDomainsNoSearch = false networkSettings.dnsSettings = dnsSettings - self.logger.log("[SDLTunnelProviderAdapter] Tun started at network ip: \(netAddress.ipAddress), mask: \(netAddress.maskAddress)", level: .info) + SDLLogger.shared.log("[SDLTunnelProviderAdapter] Tun started at network ip: \(netAddress.ipAddress), mask: \(netAddress.maskAddress)", level: .info) let ipv4Settings = NEIPv4Settings(addresses: [netAddress.ipAddress], subnetMasks: [netAddress.maskAddress]) // 设置路由表 diff --git a/punchnet/Views/Network/NetworkDisconnctedView.swift b/punchnet/Views/Network/NetworkDisconnctedView.swift index 93ca057..6b16dc3 100644 --- a/punchnet/Views/Network/NetworkDisconnctedView.swift +++ b/punchnet/Views/Network/NetworkDisconnctedView.swift @@ -62,7 +62,7 @@ struct NetworkDisconnctedView: View { maskLen: 24, accessToken: "accessToken1234", hostname: "mysql", - noticePort: 123456) + noticePort: 1234) // token存在则优先使用token try await VPNManager.shared.enableVpn(options: options!) }