fix bug
This commit is contained in:
parent
f86dd4c273
commit
d00296737b
@ -36,6 +36,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
let superPort = options["super_port"] as! Int
|
||||
let stunServersStr = options["stun_servers"] as! String
|
||||
let noticePort = options["notice_port"] as! Int
|
||||
let token = options["token"] as! String
|
||||
|
||||
let stunServers = stunServersStr.split(separator: ";").compactMap { server -> SDLConfiguration.StunServer? in
|
||||
let parts = server.split(separator: ":", maxSplits: 2)
|
||||
@ -63,7 +64,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
stunServers: stunServers,
|
||||
clientId: SDLContext.getUUID(),
|
||||
noticePort: noticePort,
|
||||
token: "")
|
||||
token: token)
|
||||
// 加密算法
|
||||
let rsaCipher = try! CCRSACipher(keySize: 1024)
|
||||
let aesChiper = CCAESChiper()
|
||||
|
||||
2
dmg.sh
2
dmg.sh
@ -1,3 +1,3 @@
|
||||
#! /bin/sh
|
||||
|
||||
create-dmg --volname "punchnet" --window-pos 200 120 --window-size 800 400 --icon "punchnet.app" 200 190 --hide-extension "punchnet.app" --app-drop-link 600 185 ~/Desktop/punchnet.dmg /Users/anlicheng/Desktop/punchnet_v1
|
||||
create-dmg --volname "punchnet" --window-pos 200 120 --window-size 800 400 --icon "punchnet.app" 200 190 --hide-extension "punchnet.app" --app-drop-link 600 185 ~/Desktop/punchnet.dmg /Users/anlicheng/Desktop/punchnet_macos_v1
|
||||
|
||||
@ -10,10 +10,20 @@
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>punchnet.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>punchnetTests.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>punchnetUITests.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
@ -22,6 +32,11 @@
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>C8A77F052DD1E6D100195617</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>C8A77F262DD1E77B00195617</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
|
||||
@ -25,7 +25,7 @@ struct SystemConfig {
|
||||
// stun探测服务
|
||||
static let stunServers = "118.178.229.213:1265,1266;118.178.229.213:1265,1266"
|
||||
|
||||
static func getOptions(token: String) -> [String:NSObject]? {
|
||||
static func getOptions(token: String, noticePort: Int) -> [String:NSObject]? {
|
||||
guard let superIp = DNSResolver.resolveAddrInfos(superHost).first else {
|
||||
return nil
|
||||
}
|
||||
@ -35,7 +35,8 @@ struct SystemConfig {
|
||||
"token": token as NSObject,
|
||||
"super_ip": "118.178.229.213" as NSObject,
|
||||
"super_port": superPort as NSObject,
|
||||
"stun_servers": stunServers as NSObject
|
||||
"stun_servers": stunServers as NSObject,
|
||||
"notice_port": noticePort as NSObject
|
||||
]
|
||||
|
||||
print("options: \(options)")
|
||||
|
||||
@ -18,11 +18,7 @@ final class UDPNoticeCenterServer: ChannelInboundHandler {
|
||||
private var channel: Channel?
|
||||
|
||||
var messageFlow = PassthroughSubject<NoticeMessage.InboundMessage, Never>()
|
||||
static let shared = UDPNoticeCenterServer()
|
||||
|
||||
private init() {
|
||||
|
||||
}
|
||||
public var port: Int = 0
|
||||
|
||||
func start() {
|
||||
self.group = MultiThreadedEventLoopGroup(numberOfThreads: 1)
|
||||
@ -31,7 +27,8 @@ final class UDPNoticeCenterServer: ChannelInboundHandler {
|
||||
.channelInitializer { channel in
|
||||
channel.pipeline.addHandler(self)
|
||||
}
|
||||
self.channel = try! bootstrap.bind(host: "127.0.0.1", port: 50195).wait()
|
||||
self.channel = try! bootstrap.bind(host: "127.0.0.1", port: 0).wait()
|
||||
self.port = self.channel?.localAddress?.port ?? 0
|
||||
}
|
||||
|
||||
func stop() {
|
||||
|
||||
@ -21,6 +21,12 @@ struct IndexView: View {
|
||||
|
||||
@State private var showMenu: Bool = false
|
||||
|
||||
// 显示ip信息
|
||||
@State private var showIpAdress: Bool = false
|
||||
@State private var ipAddress: String = ""
|
||||
|
||||
public var noticeServer: UDPNoticeCenterServer
|
||||
|
||||
var body: some View {
|
||||
|
||||
VStack(alignment: .center, spacing: 10) {
|
||||
@ -47,6 +53,24 @@ struct IndexView: View {
|
||||
self.showMenu = false
|
||||
}
|
||||
|
||||
if showIpAdress {
|
||||
HStack {
|
||||
Spacer()
|
||||
|
||||
Text("ip: ")
|
||||
.font(.system(size: 16, weight: .medium))
|
||||
.foregroundColor(.white)
|
||||
.cornerRadius(5.0)
|
||||
|
||||
Text(ipAddress)
|
||||
.font(.system(size: 16, weight: .medium))
|
||||
.foregroundColor(.white)
|
||||
.cornerRadius(5.0)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
|
||||
Spacer()
|
||||
.frame(width: 1, height: 10)
|
||||
|
||||
@ -176,10 +200,18 @@ struct IndexView: View {
|
||||
}
|
||||
}
|
||||
.onAppear {
|
||||
self.cancel = UDPNoticeCenterServer.shared.messageFlow.sink{ message in
|
||||
self.cancel = self.noticeServer.messageFlow.sink{ message in
|
||||
DispatchQueue.main.async {
|
||||
self.message = message
|
||||
self.showStunAlert = true
|
||||
switch message {
|
||||
case .none:
|
||||
()
|
||||
case .ip(let ip):
|
||||
self.showIpAdress = true
|
||||
self.ipAddress = ip
|
||||
default:
|
||||
self.message = message
|
||||
self.showStunAlert = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -188,15 +220,17 @@ struct IndexView: View {
|
||||
private func clickSwitchButton() async throws {
|
||||
switch self.vpnManager.vpnStatus {
|
||||
case .connected:
|
||||
self.showIpAdress = false
|
||||
self.ipAddress = ""
|
||||
try await vpnManager.disableVpn()
|
||||
case .disconnected:
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(token: self.token)!)
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(token: self.token, noticePort: self.noticeServer.port)!)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#Preview {
|
||||
IndexView()
|
||||
//IndexView(noticeServer: server)
|
||||
//.modelContainer(for: Item.self, inMemory: true)
|
||||
}
|
||||
|
||||
@ -33,9 +33,16 @@ struct punchnetApp: App {
|
||||
@AppStorage("token") var token: String = ""
|
||||
@ObservedObject var vpnManager = VPNManager.shared
|
||||
|
||||
private var noticeServer: UDPNoticeCenterServer
|
||||
|
||||
init() {
|
||||
self.noticeServer = UDPNoticeCenterServer()
|
||||
self.noticeServer.start()
|
||||
}
|
||||
|
||||
var body: some Scene {
|
||||
WindowGroup(id: "mainWindow") {
|
||||
IndexView()
|
||||
IndexView(noticeServer: self.noticeServer)
|
||||
.frame(minWidth: 300, maxWidth: 300, minHeight: 500, maxHeight: 500)
|
||||
.onAppear {
|
||||
// 获取主屏幕的尺寸
|
||||
@ -53,6 +60,8 @@ struct punchnetApp: App {
|
||||
window.setFrameOrigin(NSPoint(x: centerX, y: centerY))
|
||||
}
|
||||
}
|
||||
.toolbar(.hidden)
|
||||
.navigationTitle("")
|
||||
}
|
||||
.commands {
|
||||
CommandGroup(replacing: .appInfo) {
|
||||
@ -94,7 +103,7 @@ struct punchnetApp: App {
|
||||
switch self.vpnManager.vpnStatus {
|
||||
case .disconnected:
|
||||
Task {
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(token: self.token)!)
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(token: self.token, noticePort: self.noticeServer.port)!)
|
||||
}
|
||||
case .connected:
|
||||
Task {
|
||||
@ -109,7 +118,7 @@ struct punchnetApp: App {
|
||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
|
||||
func applicationWillFinishLaunching(_ notification: Notification) {
|
||||
UDPNoticeCenterServer.shared.start()
|
||||
|
||||
}
|
||||
|
||||
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
|
||||
@ -118,7 +127,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
DispatchQueue.main.async {
|
||||
sender.reply(toApplicationShouldTerminate: true)
|
||||
}
|
||||
UDPNoticeCenterServer.shared.stop()
|
||||
}
|
||||
|
||||
return .terminateLater
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user