From f8a3e9e02849644008efa52bf048773dfc4894ff Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Wed, 15 Apr 2026 15:46:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9B=AE=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tun/Punchnet/{ => Actors}/ArpServer.swift | 0 Tun/Punchnet/{ => Cipher}/RSACipher.swift | 0 Tun/Punchnet/DNS/DNSDispatcher.swift | 44 ------------------- .../{ => NetworkStack}/ARPPacket.swift | 0 .../SDLAddressResolver.swift | 0 .../{ => Protobuf}/SDLMessage.pb.swift | 0 Tun/Punchnet/{ => Protobuf}/SDLMessage.swift | 8 ++++ .../{ => Protobuf}/TunMessage.pb.swift | 0 Tun/Punchnet/SDLProtoMessageExtension.swift | 16 ------- 9 files changed, 8 insertions(+), 60 deletions(-) rename Tun/Punchnet/{ => Actors}/ArpServer.swift (100%) rename Tun/Punchnet/{ => Cipher}/RSACipher.swift (100%) delete mode 100644 Tun/Punchnet/DNS/DNSDispatcher.swift rename Tun/Punchnet/{ => NetworkStack}/ARPPacket.swift (100%) rename Tun/Punchnet/{ => NetworkStack}/SDLAddressResolver.swift (100%) rename Tun/Punchnet/{ => Protobuf}/SDLMessage.pb.swift (100%) rename Tun/Punchnet/{ => Protobuf}/SDLMessage.swift (93%) rename Tun/Punchnet/{ => Protobuf}/TunMessage.pb.swift (100%) delete mode 100644 Tun/Punchnet/SDLProtoMessageExtension.swift diff --git a/Tun/Punchnet/ArpServer.swift b/Tun/Punchnet/Actors/ArpServer.swift similarity index 100% rename from Tun/Punchnet/ArpServer.swift rename to Tun/Punchnet/Actors/ArpServer.swift diff --git a/Tun/Punchnet/RSACipher.swift b/Tun/Punchnet/Cipher/RSACipher.swift similarity index 100% rename from Tun/Punchnet/RSACipher.swift rename to Tun/Punchnet/Cipher/RSACipher.swift diff --git a/Tun/Punchnet/DNS/DNSDispatcher.swift b/Tun/Punchnet/DNS/DNSDispatcher.swift deleted file mode 100644 index f341de3..0000000 --- a/Tun/Punchnet/DNS/DNSDispatcher.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// DNSDispatcher.swift -// punchnet -// -// Created by 安礼成 on 2026/4/10. -// -import Foundation - -// MARK: - DNS 分流調度器 -final class DNSDispatcher { -// private let localClient: SDLLocalDNSClient -// private let cloudClient: SDLDNSClient // 假設這是你原有的雲端 Client -// private let logger: SDLLogger -// private let internalDomain = "punchsky.com" -// -// init(localClient: SDLLocalDNSClient, cloudClient: SDLDNSClient, logger: SDLLogger) { -// self.localClient = localClient -// self.cloudClient = cloudClient -// self.logger = logger -// } -// -// /// 處理來自 TUN 的原始 IP 數據包 -// func dispatch(packet: IPPacket) { -// // 1. 獲取 UDP 載荷 (假設 IPv4 20字節 + UDP 8字節) -// let udpPayload = packet.data.suffix(from: 28) -// -// // 2. 解析 DNS 內容 -// let parser = DNSParser(data: udpPayload) -// guard let dnsMsg = parser.parse(), let firstQuestion = dnsMsg.questions.first else { -// return -// } -// -// let domain = firstQuestion.name -// -// // 3. 根據域名分流 -// if domain.hasSuffix(internalDomain) { -// logger.log("[Dispatcher] Cloud Route: \(domain)", level: .debug) -// cloudClient.forward(ipPacket: packet) // 雲端通常需要完整包做隧道封裝 -// } else { -// logger.log("[Dispatcher] Local Route: \(domain)", level: .debug) -// localClient.query(dnsPayload: udpPayload) // 本地只需轉發載荷 -// } -// } -} diff --git a/Tun/Punchnet/ARPPacket.swift b/Tun/Punchnet/NetworkStack/ARPPacket.swift similarity index 100% rename from Tun/Punchnet/ARPPacket.swift rename to Tun/Punchnet/NetworkStack/ARPPacket.swift diff --git a/Tun/Punchnet/SDLAddressResolver.swift b/Tun/Punchnet/NetworkStack/SDLAddressResolver.swift similarity index 100% rename from Tun/Punchnet/SDLAddressResolver.swift rename to Tun/Punchnet/NetworkStack/SDLAddressResolver.swift diff --git a/Tun/Punchnet/SDLMessage.pb.swift b/Tun/Punchnet/Protobuf/SDLMessage.pb.swift similarity index 100% rename from Tun/Punchnet/SDLMessage.pb.swift rename to Tun/Punchnet/Protobuf/SDLMessage.pb.swift diff --git a/Tun/Punchnet/SDLMessage.swift b/Tun/Punchnet/Protobuf/SDLMessage.swift similarity index 93% rename from Tun/Punchnet/SDLMessage.swift rename to Tun/Punchnet/Protobuf/SDLMessage.swift index 0b436e3..8182f35 100644 --- a/Tun/Punchnet/SDLMessage.swift +++ b/Tun/Punchnet/Protobuf/SDLMessage.swift @@ -107,6 +107,14 @@ extension SDLV6Info { } } +extension SDLData { + + func format() -> String { + return "network_id: \(self.networkID), src_mac: \(LayerPacket.MacAddress.description(data: self.srcMac)), dst_mac: \(LayerPacket.MacAddress.description(data: self.dstMac)), data: \([UInt8](self.data))" + } + +} + extension SDLStunProbeReply { func socketAddress() async -> SocketAddress? { let address = SDLUtil.int32ToIp(self.ip) diff --git a/Tun/Punchnet/TunMessage.pb.swift b/Tun/Punchnet/Protobuf/TunMessage.pb.swift similarity index 100% rename from Tun/Punchnet/TunMessage.pb.swift rename to Tun/Punchnet/Protobuf/TunMessage.pb.swift diff --git a/Tun/Punchnet/SDLProtoMessageExtension.swift b/Tun/Punchnet/SDLProtoMessageExtension.swift deleted file mode 100644 index 89ca77e..0000000 --- a/Tun/Punchnet/SDLProtoMessageExtension.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// SDLProtoMessageExtension.swift -// Tun -// -// Created by 安礼成 on 2024/10/24. -// - -import Foundation - -extension SDLData { - - func format() -> String { - return "network_id: \(self.networkID), src_mac: \(LayerPacket.MacAddress.description(data: self.srcMac)), dst_mac: \(LayerPacket.MacAddress.description(data: self.dstMac)), data: \([UInt8](self.data))" - } - -}