add hostname support
This commit is contained in:
parent
06ba79bf83
commit
fca095173c
@ -40,6 +40,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
let networkCode = options["network_code"] as! String
|
||||
let clientId = options["client_id"] as! String
|
||||
let remoteDnsServer = options["remote_dns_server"] as! String
|
||||
let hostname = options["hostname"] as! String
|
||||
|
||||
let stunServers = stunServersStr.split(separator: ";").compactMap { server -> SDLConfiguration.StunServer? in
|
||||
let parts = server.split(separator: ":", maxSplits: 2)
|
||||
@ -71,7 +72,8 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||
noticePort: noticePort,
|
||||
token: token,
|
||||
networkCode: networkCode,
|
||||
remoteDnsServer: remoteDnsServer)
|
||||
remoteDnsServer: remoteDnsServer,
|
||||
hostname: hostname)
|
||||
// 加密算法
|
||||
let rsaCipher = try! CCRSACipher(keySize: 1024)
|
||||
let aesChiper = CCAESChiper()
|
||||
|
||||
@ -32,6 +32,7 @@ public class SDLConfiguration {
|
||||
let stunServers: [StunServer]
|
||||
|
||||
let remoteDnsServer: String
|
||||
let hostname: String
|
||||
|
||||
let noticePort: Int
|
||||
|
||||
@ -54,7 +55,7 @@ public class SDLConfiguration {
|
||||
let token: String
|
||||
let networkCode: String
|
||||
|
||||
public init(version: UInt8, installedChannel: String, superHost: String, superPort: Int, stunServers: [StunServer], clientId: String, noticePort: Int, token: String, networkCode: String, remoteDnsServer: String) {
|
||||
public init(version: UInt8, installedChannel: String, superHost: String, superPort: Int, stunServers: [StunServer], clientId: String, noticePort: Int, token: String, networkCode: String, remoteDnsServer: String, hostname: String) {
|
||||
self.version = version
|
||||
self.installedChannel = installedChannel
|
||||
self.superHost = superHost
|
||||
@ -65,6 +66,7 @@ public class SDLConfiguration {
|
||||
self.token = token
|
||||
self.networkCode = networkCode
|
||||
self.remoteDnsServer = remoteDnsServer
|
||||
self.hostname = hostname
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -109,6 +109,8 @@ struct SDLRegisterSuper: Sendable {
|
||||
|
||||
var networkCode: String = String()
|
||||
|
||||
var hostname: String = String()
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
init() {}
|
||||
@ -639,6 +641,7 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme
|
||||
5: .standard(proto: "pub_key"),
|
||||
6: .same(proto: "token"),
|
||||
7: .standard(proto: "network_code"),
|
||||
8: .same(proto: "hostname"),
|
||||
]
|
||||
|
||||
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
||||
@ -654,6 +657,7 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme
|
||||
case 5: try { try decoder.decodeSingularStringField(value: &self.pubKey) }()
|
||||
case 6: try { try decoder.decodeSingularStringField(value: &self.token) }()
|
||||
case 7: try { try decoder.decodeSingularStringField(value: &self.networkCode) }()
|
||||
case 8: try { try decoder.decodeSingularStringField(value: &self.hostname) }()
|
||||
default: break
|
||||
}
|
||||
}
|
||||
@ -685,6 +689,9 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme
|
||||
if !self.networkCode.isEmpty {
|
||||
try visitor.visitSingularStringField(value: self.networkCode, fieldNumber: 7)
|
||||
}
|
||||
if !self.hostname.isEmpty {
|
||||
try visitor.visitSingularStringField(value: self.hostname, fieldNumber: 8)
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
@ -696,6 +703,7 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme
|
||||
if lhs.pubKey != rhs.pubKey {return false}
|
||||
if lhs.token != rhs.token {return false}
|
||||
if lhs.networkCode != rhs.networkCode {return false}
|
||||
if lhs.hostname != rhs.hostname {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
}
|
||||
|
||||
@ -149,6 +149,7 @@ actor SDLSuperClient {
|
||||
registerSuper.pubKey = ctx.rsaCipher.pubKey
|
||||
registerSuper.token = ctx.config.token
|
||||
registerSuper.networkCode = ctx.config.networkCode
|
||||
registerSuper.hostname = ctx.config.hostname
|
||||
|
||||
NSLog("[SuperClient] register super request: \(registerSuper)")
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ struct SystemConfig {
|
||||
static let stunServers = "118.178.229.213:1265,1266;118.178.229.213:1265,1266"
|
||||
//static let stunServers = "127.0.0.1:1265,1266;127.0.0.1:1265,1266"
|
||||
|
||||
static func getOptions(networkCode: String, token: String, clientId: String, noticePort: Int) -> [String:NSObject]? {
|
||||
static func getOptions(networkCode: String, token: String, clientId: String, hostname: String, noticePort: Int) -> [String:NSObject]? {
|
||||
guard let superIp = DNSResolver.resolveAddrInfos(superHost).first else {
|
||||
return nil
|
||||
}
|
||||
@ -41,6 +41,7 @@ struct SystemConfig {
|
||||
"super_port": superPort as NSObject,
|
||||
"stun_servers": stunServers as NSObject,
|
||||
"remote_dns_server": superIp as NSObject,
|
||||
"hostname": hostname as NSObject,
|
||||
"notice_port": noticePort as NSObject
|
||||
]
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ import Combine
|
||||
|
||||
struct IndexView: View {
|
||||
@AppStorage("token") private var token: String = ""
|
||||
@AppStorage("hostname") private var hostname: String = ""
|
||||
@AppStorage("network_code") private var networkCode: String = ""
|
||||
|
||||
@State private var showToken: Bool = false
|
||||
@ -57,6 +58,13 @@ struct IndexView: View {
|
||||
.onTapGesture {
|
||||
self.showMenu = false
|
||||
}
|
||||
TextField("主机名", text: $hostname)
|
||||
.multilineTextAlignment(.leading)
|
||||
.textFieldStyle(PlainTextFieldStyle())
|
||||
.frame(width: 200, height: 25)
|
||||
.background(Color.white)
|
||||
.foregroundColor(Color.black)
|
||||
.cornerRadius(5.0)
|
||||
|
||||
if showIpAdress {
|
||||
HStack {
|
||||
@ -264,7 +272,7 @@ struct IndexView: View {
|
||||
let clientId = SystemConfig.getClientId()
|
||||
NSLog("[IndexView] use token: \(self.token), network_code: \(networkCode)")
|
||||
// token存在则优先使用token
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(networkCode: self.networkCode, token: self.token, clientId: clientId, noticePort: self.noticeServer.port)!)
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(networkCode: self.networkCode, token: self.token, clientId: clientId, hostname: self.hostname, noticePort: self.noticeServer.port)!)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ struct punchnetApp: App {
|
||||
|
||||
@AppStorage("token") var token: String = ""
|
||||
@AppStorage("network_code") var networkCode: String = ""
|
||||
@AppStorage("hostname") var hostname: String = ""
|
||||
@ObservedObject var vpnManager = VPNManager.shared
|
||||
|
||||
private var noticeServer: UDPNoticeCenterServer
|
||||
@ -104,7 +105,7 @@ struct punchnetApp: App {
|
||||
case .disconnected:
|
||||
Task {
|
||||
let clientId = SystemConfig.getClientId()
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(networkCode: self.networkCode, token: self.token, clientId: clientId, noticePort: self.noticeServer.port)!)
|
||||
try await vpnManager.enableVpn(options: SystemConfig.getOptions(networkCode: self.networkCode, token: self.token, clientId: clientId, hostname: self.hostname, noticePort: self.noticeServer.port)!)
|
||||
}
|
||||
case .connected:
|
||||
Task {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user