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