This commit is contained in:
anlicheng 2025-08-25 15:34:35 +08:00
parent bd10ea9b99
commit 5031835484
5 changed files with 34 additions and 16 deletions

View File

@ -18,6 +18,7 @@ import Punchnet
class PacketTunnelProvider: NEPacketTunnelProvider {
var context: SDLContext?
private var rootTask: Task<Void, Error>?
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()
}

View File

@ -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 */

View File

@ -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"
}
}
],

View File

@ -7,12 +7,25 @@
<key>Tun.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
<key>punchnet.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>C8A77EF22DD1E6D000195617</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>C8A77F262DD1E77B00195617</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>

View File

@ -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()
}