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