Files
amnezia-client/client/platforms/ios/WGConfig.swift
T

95 lines
2.6 KiB
Swift
Raw Normal View History

2024-02-16 13:30:00 +03:00
import Foundation
2024-02-29 13:58:11 +03:00
struct WGConfig: Decodable {
let initPacketMagicHeader, responsePacketMagicHeader: String?
let underloadPacketMagicHeader, transportPacketMagicHeader: String?
let junkPacketCount, junkPacketMinSize, junkPacketMaxSize: String?
let initPacketJunkSize, responsePacketJunkSize: String?
2024-02-29 13:58:11 +03:00
let dns1: String
let dns2: String
2024-03-18 12:41:53 +02:00
let mtu: String
2024-02-29 13:58:11 +03:00
let hostName: String
let port: Int
2024-02-16 13:30:00 +03:00
let clientIP: String
let clientPrivateKey: String
let serverPublicKey: String
2024-07-01 23:27:53 +07:00
let presharedKey: String?
2024-02-16 13:30:00 +03:00
var allowedIPs: [String]
var persistentKeepAlive: Int
2024-02-29 13:58:11 +03:00
let splitTunnelType: Int
let splitTunnelSites: [String]
2024-02-16 13:30:00 +03:00
enum CodingKeys: String, CodingKey {
case initPacketMagicHeader = "H1", responsePacketMagicHeader = "H2"
case underloadPacketMagicHeader = "H3", transportPacketMagicHeader = "H4"
case junkPacketCount = "Jc", junkPacketMinSize = "Jmin", junkPacketMaxSize = "Jmax"
case initPacketJunkSize = "S1", responsePacketJunkSize = "S2"
2024-02-29 13:58:11 +03:00
case dns1
case dns2
2024-03-18 12:41:53 +02:00
case mtu
2024-02-29 13:58:11 +03:00
case hostName
case port
case clientIP = "client_ip"
2024-02-16 13:30:00 +03:00
case clientPrivateKey = "client_priv_key"
case serverPublicKey = "server_pub_key"
case presharedKey = "psk_key"
case allowedIPs = "allowed_ips"
case persistentKeepAlive = "persistent_keep_alive"
case splitTunnelType
2024-02-29 13:58:11 +03:00
case splitTunnelSites
2024-02-16 13:30:00 +03:00
}
2024-02-29 13:58:11 +03:00
var settings: String {
junkPacketCount == nil ? "" :
"""
Jc = \(junkPacketCount!)
Jmin = \(junkPacketMinSize!)
Jmax = \(junkPacketMaxSize!)
S1 = \(initPacketJunkSize!)
S2 = \(responsePacketJunkSize!)
H1 = \(initPacketMagicHeader!)
H2 = \(responsePacketMagicHeader!)
H3 = \(underloadPacketMagicHeader!)
H4 = \(transportPacketMagicHeader!)
2024-02-16 13:30:00 +03:00
2024-02-29 13:58:11 +03:00
"""
2024-02-16 13:30:00 +03:00
}
var str: String {
2024-02-16 13:30:00 +03:00
"""
[Interface]
2024-02-29 13:58:11 +03:00
Address = \(clientIP)
DNS = \(dns1), \(dns2)
2024-03-18 12:41:53 +02:00
MTU = \(mtu)
2024-02-29 13:58:11 +03:00
PrivateKey = \(clientPrivateKey)
\(settings)
[Peer]
PublicKey = \(serverPublicKey)
2024-07-01 23:27:53 +07:00
\(presharedKey == nil ? "" : "PresharedKey = \(presharedKey!)")
2024-02-29 13:58:11 +03:00
AllowedIPs = \(allowedIPs.joined(separator: ", "))
Endpoint = \(hostName):\(port)
PersistentKeepalive = \(persistentKeepAlive)
"""
}
var redux: String {
"""
[Interface]
Address = \(clientIP)
2024-02-16 13:30:00 +03:00
DNS = \(dns1), \(dns2)
2024-03-18 12:41:53 +02:00
MTU = \(mtu)
2024-02-29 13:58:11 +03:00
PrivateKey = ***
\(settings)
2024-02-16 13:30:00 +03:00
[Peer]
2024-02-29 13:58:11 +03:00
PublicKey = ***
PresharedKey = ***
AllowedIPs = \(allowedIPs.joined(separator: ", "))
Endpoint = \(hostName):\(port)
PersistentKeepalive = \(persistentKeepAlive)
2024-04-15 01:04:01 +03:00
SplitTunnelType = \(splitTunnelType)
SplitTunnelSites = \(splitTunnelSites.joined(separator: ", "))
2024-02-16 13:30:00 +03:00
"""
}
}