From 80d5c7dfb14e2978e05892f8d2058bf3235f0698 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Tue, 26 May 2026 21:07:42 +0800 Subject: [PATCH] =?UTF-8?q?fix=20vpn=E7=9A=84=E9=85=8D=E7=BD=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tun/Super/SDLSuperTLSVerifier.swift | 8 ++++---- punchnet/Core/VPNManager.swift | 12 +++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/Tun/Super/SDLSuperTLSVerifier.swift b/Tun/Super/SDLSuperTLSVerifier.swift index bc77e1d..ff9542d 100644 --- a/Tun/Super/SDLSuperTLSVerifier.swift +++ b/Tun/Super/SDLSuperTLSVerifier.swift @@ -12,10 +12,10 @@ enum SDLSuperTLSVerifier { // 你的 Base64 公钥指纹 static let pinnedPublicKeyHashes = [ // 正式服务器的 - "Q41r6hbMWEVyxo6heNAH4Wx/TH5NNOWlNif9bewcJ3E=", + "Q41r6hbMWEVyxo6heNAH4Wx/TH5NNOWlNif9bewcJ3E=".lowercased(), // 测试服务器 - "oeU0bWqLWMdn79s4ZHz6IRwXmFX4p70u/Qt9VrsDIb4=" + "oeU0bWqLWMdn79s4ZHz6IRwXmFX4p70u/Qt9VrsDIb4=".lowercased() ] static func verify(trust: sec_trust_t, host: String) -> Bool { @@ -53,13 +53,13 @@ enum SDLSuperTLSVerifier { // --- Step 5: SHA256 校验 --- let hash = SHA256.hash(data: publicKeyData) - let hashBase64 = Data(hash).base64EncodedString() + let hashBase64 = Data(hash).base64EncodedString().lowercased() if pinnedPublicKeyHashes.contains(hashBase64) { SDLLogger.log("✅ 公钥校验通过", for: .debug) return true } else { - SDLLogger.log("⚠️ 公钥不匹配! 收到: \(hashBase64)", for: .debug) + SDLLogger.log("⚠️ 公钥不匹配! 收到: \(hashBase64), config hashes: \(pinnedPublicKeyHashes)", for: .debug) return false } } diff --git a/punchnet/Core/VPNManager.swift b/punchnet/Core/VPNManager.swift index d3c6f8d..2e6302c 100644 --- a/punchnet/Core/VPNManager.swift +++ b/punchnet/Core/VPNManager.swift @@ -128,13 +128,11 @@ class VPNManager { let env = SystemConfig.getCurrentEnvConfig() for manager in managers { -// guard let protocolConfiguration = manager.protocolConfiguration as? NETunnelProviderProtocol, -// protocolConfiguration.providerBundleIdentifier == env.tunBundleId else { -// try await manager.removeFromPreferences() -// continue -// } - // TODO Debug - try await manager.removeFromPreferences() + guard let protocolConfiguration = manager.protocolConfiguration as? NETunnelProviderProtocol, + protocolConfiguration.providerBundleIdentifier == env.tunBundleId else { + try await manager.removeFromPreferences() + continue + } } let managersAfterCleanup = try await NETunnelProviderManager.loadAllFromPreferences()