diff --git a/Tun/PacketTunnelProvider.swift b/Tun/PacketTunnelProvider.swift index 6c18ea9..8ea5ada 100644 --- a/Tun/PacketTunnelProvider.swift +++ b/Tun/PacketTunnelProvider.swift @@ -18,6 +18,7 @@ import Punchnet class PacketTunnelProvider: NEPacketTunnelProvider { var context: SDLContext? + private var rootTask: Task? override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) { // host: "192.168.0.101", port: 1265 @@ -66,24 +67,27 @@ class PacketTunnelProvider: NEPacketTunnelProvider { let rsaCipher = try! CCRSACipher(keySize: 1024) let aesChiper = CCAESChiper() - Task { + self.rootTask = Task { do { self.context = SDLContext(provider: self, config: config, rsaCipher: rsaCipher, aesCipher: aesChiper, logger: SDLLogger(level: .debug)) try await self.context?.start() - completionHandler(nil) } catch let err { - completionHandler(err) + NSLog("[PacketTunnelProvider] exit with error: \(err)") + exit(-1) } } - + completionHandler(nil) } override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) { // Add code here to start the process of stopping the tunnel. + self.rootTask?.cancel() Task { await self.context?.stop() - self.context = nil } + self.context = nil + self.rootTask = nil + completionHandler() } diff --git a/punchnet.xcodeproj/project.pbxproj b/punchnet.xcodeproj/project.pbxproj index da85d57..94162eb 100644 --- a/punchnet.xcodeproj/project.pbxproj +++ b/punchnet.xcodeproj/project.pbxproj @@ -562,7 +562,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.jihe.punchnet; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = jihe_punchnet_macos; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = MacPunchnet; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; }; @@ -594,7 +594,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.jihe.punchnet; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = jihe_punchnet_macos; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = MacPunchnet; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; }; @@ -674,6 +674,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = Tun/Tun.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; @@ -694,7 +695,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.jihe.punchnet.tun; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = jihe_punchnet_tun_macos; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = MacPunchnetTun; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -705,6 +706,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = Tun/Tun.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; @@ -725,7 +727,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.jihe.punchnet.tun; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = jihe_punchnet_tun_macos; + "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = MacPunchnetTun; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; @@ -788,7 +790,7 @@ repositoryURL = "https://gitea.s5s8.com/anlicheng/swiftlib_sdlan.git"; requirement = { kind = exactVersion; - version = 2.2.0; + version = 2.2.2; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/punchnet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/punchnet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index dc15e82..13c6958 100644 --- a/punchnet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/punchnet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "2c771b2bd4bccdc5777d69cc734485452a1e854c0123ba591d596b3f580f4cb8", + "originHash" : "f895c313fc3b8bbb6ccda8f228cf023bf2259c0a044d992827796f28685daa8c", "pins" : [ { "identity" : "swift-atomics", @@ -51,8 +51,8 @@ "kind" : "remoteSourceControl", "location" : "https://gitea.s5s8.com/anlicheng/swiftlib_sdlan.git", "state" : { - "revision" : "2c05d71dbe3684e51e9de55910619156ebe360c6", - "version" : "2.2.0" + "revision" : "90939a68c10e52f327d2ad1e55c1a62f56f7928b", + "version" : "2.2.2" } } ], diff --git a/punchnet.xcodeproj/xcuserdata/anlicheng.xcuserdatad/xcschemes/xcschememanagement.plist b/punchnet.xcodeproj/xcuserdata/anlicheng.xcuserdatad/xcschemes/xcschememanagement.plist index 516c2c6..9a05d24 100644 --- a/punchnet.xcodeproj/xcuserdata/anlicheng.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/punchnet.xcodeproj/xcuserdata/anlicheng.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,25 @@ Tun.xcscheme_^#shared#^_ orderHint - 1 + 0 punchnet.xcscheme_^#shared#^_ orderHint - 0 + 1 + + + SuppressBuildableAutocreation + + C8A77EF22DD1E6D000195617 + + primary + + + C8A77F262DD1E77B00195617 + + primary + diff --git a/punchnet/Core/UDPNoticeCenterServer.swift b/punchnet/Core/UDPNoticeCenterServer.swift index 92de81d..3b843bd 100644 --- a/punchnet/Core/UDPNoticeCenterServer.swift +++ b/punchnet/Core/UDPNoticeCenterServer.swift @@ -31,7 +31,6 @@ final class UDPNoticeCenterServer: ChannelInboundHandler { .channelInitializer { channel in channel.pipeline.addHandler(self) } - self.channel = try! bootstrap.bind(host: "127.0.0.1", port: 50195).wait() }