AmneziaWG 1.0.0 (0)

This commit is contained in:
Igor Sorokin
2024-03-06 06:30:19 +03:00
parent 0829e99ea9
commit 002c47f9eb
14 changed files with 151 additions and 1460 deletions

3
.gitignore vendored
View File

@@ -44,8 +44,5 @@ fastlane/test_output
Preview.html
output
# Wireguard specific
Sources/WireGuardApp/Config/Developer.xcconfig
# Vim
.*.sw*

View File

@@ -130,32 +130,33 @@ extension TunnelConfiguration {
if let listenPort = interface.listenPort {
output.append("ListenPort = \(listenPort)\n")
}
if let Jc = interface.Jc {
output.append("Jc = \(Jc)\n")
if let junkPacketCount = interface.junkPacketCount {
output.append("Jc = \(junkPacketCount)\n")
}
if let Jmin = interface.Jmin {
output.append("Jmin = \(Jmin)\n")
if let junkPacketMinSize = interface.junkPacketMinSize {
output.append("Jmin = \(junkPacketMinSize)\n")
}
if let Jmax = interface.Jmax {
output.append("Jmax = \(Jmax)\n")
if let junkPacketMaxSize = interface.junkPacketMaxSize {
output.append("Jmax = \(junkPacketMaxSize)\n")
}
if let S1 = interface.S1 {
output.append("S1 = \(S1)\n")
if let initPacketJunkSize = interface.initPacketJunkSize {
output.append("S1 = \(initPacketJunkSize)\n")
}
if let S2 = interface.S2 {
output.append("S2 = \(S2)\n")
if let responsePacketJunkSize = interface.responsePacketJunkSize {
output.append("S2 = \(responsePacketJunkSize)\n")
}
if let H1 = interface.H1 {
output.append("H1 = \(H1)\n")
if let initPacketMagicHeader = interface.initPacketMagicHeader {
output.append("H1 = \(initPacketMagicHeader)\n")
}
if let H2 = interface.H2 {
output.append("H2 = \(H2)\n")
if let responsePacketMagicHeader = interface.responsePacketMagicHeader {
output.append("H2 = \(responsePacketMagicHeader)\n")
}
if let H3 = interface.H3 {
output.append("H3 = \(H3)\n")
if let underloadPacketMagicHeader = interface.underloadPacketMagicHeader {
output.append("H3 = \(underloadPacketMagicHeader)\n")
}
if let H4 = interface.H4 {
output.append("H4 = \(H4)\n")
if let transportPacketMagicHeader = interface.transportPacketMagicHeader {
output.append("H4 = \(transportPacketMagicHeader)\n")
}
if !interface.addresses.isEmpty {
let addressString = interface.addresses.map { $0.stringRepresentation }.joined(separator: ", ")
@@ -235,59 +236,59 @@ extension TunnelConfiguration {
}
interface.mtu = mtu
}
if let JcString = attributes["jc"] {
guard let jc = UInt16(JcString) else {
throw ParseError.interfaceHasInvalidCustomParam(JcString)
if let junkPacketCountString = attributes["jc"] {
guard let junkPacketCount = UInt16(junkPacketCountString) else {
throw ParseError.interfaceHasInvalidCustomParam(junkPacketCountString)
}
interface.Jc = jc
interface.junkPacketCount = junkPacketCount
}
if let JminString = attributes["jmin"] {
guard let jmin = UInt16(JminString) else {
throw ParseError.interfaceHasInvalidCustomParam(JminString)
if let junkPacketMinSizeString = attributes["jmin"] {
guard let junkPacketMinSize = UInt16(junkPacketMinSizeString) else {
throw ParseError.interfaceHasInvalidCustomParam(junkPacketMinSizeString)
}
interface.Jmin = jmin
interface.junkPacketMinSize = junkPacketMinSize
}
if let JmaxString = attributes["jmax"] {
guard let jmax = UInt16(JmaxString) else {
throw ParseError.interfaceHasInvalidCustomParam(JmaxString)
if let junkPacketMaxSizeString = attributes["jmax"] {
guard let junkPacketMaxSize = UInt16(junkPacketMaxSizeString) else {
throw ParseError.interfaceHasInvalidCustomParam(junkPacketMaxSizeString)
}
interface.Jmax = jmax
interface.junkPacketMaxSize = junkPacketMaxSize
}
if let S1String = attributes["s1"] {
guard let s1 = UInt16(S1String) else {
throw ParseError.interfaceHasInvalidCustomParam(S1String)
if let initPacketJunkSizeString = attributes["s1"] {
guard let initPacketJunkSize = UInt16(initPacketJunkSizeString) else {
throw ParseError.interfaceHasInvalidCustomParam(initPacketJunkSizeString)
}
interface.S1 = s1
interface.initPacketJunkSize = initPacketJunkSize
}
if let S2String = attributes["s2"] {
guard let s2 = UInt16(S2String) else {
throw ParseError.interfaceHasInvalidCustomParam(S2String)
if let responsePacketJunkSizeString = attributes["s2"] {
guard let responsePacketJunkSize = UInt16(responsePacketJunkSizeString) else {
throw ParseError.interfaceHasInvalidCustomParam(responsePacketJunkSizeString)
}
interface.S2 = s2
interface.responsePacketJunkSize = responsePacketJunkSize
}
if let H1String = attributes["h1"] {
guard let h1 = UInt32(H1String) else {
throw ParseError.interfaceHasInvalidCustomParam(H1String)
if let initPacketMagicHeaderString = attributes["h1"] {
guard let initPacketMagicHeader = UInt32(initPacketMagicHeaderString) else {
throw ParseError.interfaceHasInvalidCustomParam(initPacketMagicHeaderString)
}
interface.H1 = h1
interface.initPacketMagicHeader = initPacketMagicHeader
}
if let H2String = attributes["h2"] {
guard let h2 = UInt32(H2String) else {
throw ParseError.interfaceHasInvalidCustomParam(H2String)
if let responsePacketMagicHeaderString = attributes["h2"] {
guard let responsePacketMagicHeader = UInt32(responsePacketMagicHeaderString) else {
throw ParseError.interfaceHasInvalidCustomParam(responsePacketMagicHeaderString)
}
interface.H2 = h2
interface.responsePacketMagicHeader = responsePacketMagicHeader
}
if let H3String = attributes["h3"] {
guard let h3 = UInt32(H3String) else {
throw ParseError.interfaceHasInvalidCustomParam(H3String)
if let underloadPacketMagicHeaderString = attributes["h3"] {
guard let underloadPacketMagicHeader = UInt32(underloadPacketMagicHeaderString) else {
throw ParseError.interfaceHasInvalidCustomParam(underloadPacketMagicHeaderString)
}
interface.H3 = h3
interface.underloadPacketMagicHeader = underloadPacketMagicHeader
}
if let H4String = attributes["h4"] {
guard let h4 = UInt32(H4String) else {
throw ParseError.interfaceHasInvalidCustomParam(H4String)
if let transportPacketMagicHeaderString = attributes["h4"] {
guard let transportPacketMagicHeader = UInt32(transportPacketMagicHeaderString) else {
throw ParseError.interfaceHasInvalidCustomParam(transportPacketMagicHeaderString)
}
interface.H4 = h4
interface.transportPacketMagicHeader = transportPacketMagicHeader
}
return interface
}

View File

@@ -402,6 +402,8 @@
"macAlertMultipleEntriesForKey (%@)" = "There should be only one entry per section for key %@";
"macAlertInterfaceHasInvalidCustomParam (%@)" = "Interface has invalid custom param %@";
// Mac about dialog
"macAppVersion (%@)" = "App version: %@";

View File

@@ -0,0 +1,10 @@
// Developer.xcconfig
// You Apple developer account's Team ID
DEVELOPMENT_TEAM = X7UJ388FXK
// The bundle identifier of the apps.
// Should be an app id created at developer.apple.com
// with Network Extensions capabilty.
APP_ID_IOS = org.amnezia.awg
APP_ID_MACOS = org.amnezia.awg

View File

@@ -1,2 +1,2 @@
VERSION_NAME = 1.0.16
VERSION_ID = 27
VERSION_NAME = 1.0.0
VERSION_ID = 0

View File

@@ -149,9 +149,10 @@ extension SettingsTableViewController {
appVersion += " (\(appBuild))"
}
cell.value = appVersion
} else if field == .goBackendVersion {
cell.value = WIREGUARD_GO_VERSION
}
// else if field == .goBackendVersion {
// cell.value = WIREGUARD_GO_VERSION
// }
return cell
} else if field == .exportZipArchive {
let cell: ButtonCell = tableView.dequeueReusableCell(for: indexPath)

View File

@@ -195,7 +195,7 @@ extension AppDelegate {
}
let appVersionString = [
tr(format: "macAppVersion (%@)", appVersion),
tr(format: "macGoBackendVersion (%@)", WIREGUARD_GO_VERSION)
// tr(format: "macGoBackendVersion (%@)", WIREGUARD_GO_VERSION)
].joined(separator: "\n")
NSApp.activate(ignoringOtherApps: true)
NSApp.orderFrontStandardAboutPanel(options: [

View File

@@ -51,6 +51,8 @@ extension TunnelConfiguration.ParseError: WireGuardAppError {
return (tr("alertInvalidPeerMessagePublicKeyDuplicated"), "")
case .multipleEntriesForKey(let value):
return (tr(format: "macAlertMultipleEntriesForKey (%@)", value), "")
case .interfaceHasInvalidCustomParam(let customParam):
return (tr(format: "macAlertInterfaceHasInvalidCustomParam (%@)", customParam), "")
}
}
}

View File

@@ -7,15 +7,15 @@ import Network
public struct InterfaceConfiguration {
public var privateKey: PrivateKey
public var addresses = [IPAddressRange]()
public var Jc: UInt16?
public var Jmin: UInt16?
public var Jmax: UInt16?
public var S1: UInt16?
public var S2: UInt16?
public var H1: UInt32?
public var H2: UInt32?
public var H3: UInt32?
public var H4: UInt32?
public var junkPacketCount: UInt16?
public var junkPacketMinSize: UInt16?
public var junkPacketMaxSize: UInt16?
public var initPacketJunkSize: UInt16?
public var responsePacketJunkSize: UInt16?
public var initPacketMagicHeader: UInt32?
public var responsePacketMagicHeader: UInt32?
public var underloadPacketMagicHeader: UInt32?
public var transportPacketMagicHeader: UInt32?
public var listenPort: UInt16?
public var mtu: UInt16?
public var dns = [DNSServer]()

View File

@@ -47,32 +47,33 @@ class PacketTunnelSettingsGenerator {
if let listenPort = tunnelConfiguration.interface.listenPort {
wgSettings.append("listen_port=\(listenPort)\n")
}
if let Jc = tunnelConfiguration.interface.Jc {
wgSettings.append("jc=\(Jc)\n")
if let junkPacketCount = tunnelConfiguration.interface.junkPacketCount {
wgSettings.append("jc=\(junkPacketCount)\n")
}
if let Jmin = tunnelConfiguration.interface.Jmin {
wgSettings.append("jmin=\(Jmin)\n")
if let junkPacketMinSize = tunnelConfiguration.interface.junkPacketMinSize {
wgSettings.append("jmin=\(junkPacketMinSize)\n")
}
if let Jmax = tunnelConfiguration.interface.Jmax {
wgSettings.append("jmax=\(Jmax)\n")
if let junkPacketMaxSize = tunnelConfiguration.interface.junkPacketMaxSize {
wgSettings.append("jmax=\(junkPacketMaxSize)\n")
}
if let S1 = tunnelConfiguration.interface.S1 {
wgSettings.append("s1=\(S1)\n")
if let initPacketJunkSize = tunnelConfiguration.interface.initPacketJunkSize {
wgSettings.append("s1=\(initPacketJunkSize)\n")
}
if let S2 = tunnelConfiguration.interface.S2 {
wgSettings.append("s2=\(S2)\n")
if let responsePacketJunkSize = tunnelConfiguration.interface.responsePacketJunkSize {
wgSettings.append("s2=\(responsePacketJunkSize)\n")
}
if let H1 = tunnelConfiguration.interface.H1 {
wgSettings.append("h1=\(H1)\n")
if let initPacketMagicHeader = tunnelConfiguration.interface.initPacketMagicHeader {
wgSettings.append("h1=\(initPacketMagicHeader)\n")
}
if let H2 = tunnelConfiguration.interface.H2 {
wgSettings.append("h2=\(H2)\n")
if let responsePacketMagicHeader = tunnelConfiguration.interface.responsePacketMagicHeader {
wgSettings.append("h2=\(responsePacketMagicHeader)\n")
}
if let H3 = tunnelConfiguration.interface.H3 {
wgSettings.append("h3=\(H3)\n")
if let underloadPacketMagicHeader = tunnelConfiguration.interface.underloadPacketMagicHeader {
wgSettings.append("h3=\(underloadPacketMagicHeader)\n")
}
if let H4 = tunnelConfiguration.interface.H4 {
wgSettings.append("h4=\(H4)\n")
if let transportPacketMagicHeader = tunnelConfiguration.interface.transportPacketMagicHeader {
wgSettings.append("h4=\(transportPacketMagicHeader)\n")
}
if !tunnelConfiguration.peers.isEmpty {
wgSettings.append("replace_peers=true\n")
@@ -143,7 +144,7 @@ class PacketTunnelSettingsGenerator {
let (ipv4Addresses, ipv6Addresses) = addresses()
let (ipv4IncludedRoutes, ipv6IncludedRoutes) = includedRoutes()
let (ipv4ExcludedRoutes, ipv6ExcludedRoutes) = excludedRoutes()
let ipv4Settings = NEIPv4Settings(addresses: ipv4Addresses.map { $0.destinationAddress }, subnetMasks: ipv4Addresses.map { $0.destinationSubnetMask })
ipv4Settings.includedRoutes = ipv4IncludedRoutes
ipv4Settings.excludedRoutes = ipv4ExcludedRoutes
@@ -202,7 +203,7 @@ class PacketTunnelSettingsGenerator {
}
return (ipv4IncludedRoutes, ipv6IncludedRoutes)
}
private func excludedRoutes() -> ([NEIPv4Route], [NEIPv6Route]) {
var ipv4ExcludedRoutes = [NEIPv4Route]()
var ipv6ExcludedRoutes = [NEIPv6Route]()

View File

@@ -6,3 +6,10 @@ require (
github.com/amnezia-vpn/amneziawg-go v0.2.1
golang.org/x/sys v0.17.0
)
require (
github.com/tevino/abool/v2 v2.1.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
)

File diff suppressed because it is too large Load Diff

View File

@@ -292,7 +292,7 @@
585B104D2577E293004F691E /* DNSResolver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DNSResolver.swift; sourceTree = "<group>"; };
585B104E2577E293004F691E /* IPAddress+AddrInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "IPAddress+AddrInfo.swift"; sourceTree = "<group>"; };
585B104F2577E293004F691E /* PrivateKey.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivateKey.swift; sourceTree = "<group>"; };
585B10502577E293004F691E /* PacketTunnelSettingsGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PacketTunnelSettingsGenerator.swift; sourceTree = "<group>"; };
585B10502577E293004F691E /* PacketTunnelSettingsGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = PacketTunnelSettingsGenerator.swift; sourceTree = "<group>"; tabWidth = 4; };
585B10512577E293004F691E /* IPAddressRange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IPAddressRange.swift; sourceTree = "<group>"; };
585B10522577E293004F691E /* Endpoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Endpoint.swift; sourceTree = "<group>"; };
585B10542577E293004F691E /* WireGuardKitC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WireGuardKitC.h; sourceTree = "<group>"; };
@@ -317,7 +317,7 @@
5F52D0BE21E3788900283CEA /* NSColor+Hex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+Hex.swift"; sourceTree = "<group>"; };
5F52D0C021E378C000283CEA /* highlighter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = highlighter.h; sourceTree = "<group>"; };
5F52D0C121E378C000283CEA /* highlighter.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = highlighter.c; sourceTree = "<group>"; };
5F9696AF21CD7128008063FE /* TunnelConfiguration+WgQuickConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TunnelConfiguration+WgQuickConfig.swift"; sourceTree = "<group>"; };
5F9696AF21CD7128008063FE /* TunnelConfiguration+WgQuickConfig.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = "TunnelConfiguration+WgQuickConfig.swift"; sourceTree = "<group>"; tabWidth = 4; };
6B5C5E26220A48D30024272E /* Keychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = "<group>"; };
6B62E45E220A6FA900EF34A6 /* PrivateDataConfirmation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateDataConfirmation.swift; sourceTree = "<group>"; };
6B6956352211DA80001B618A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
@@ -347,8 +347,6 @@
6F6483E6229293300075BA15 /* LaunchedAtLoginDetector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchedAtLoginDetector.swift; sourceTree = "<group>"; };
6F689999218043390012E523 /* WireGuard-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "WireGuard-Bridging-Header.h"; sourceTree = "<group>"; };
6F70E20D221058DF008BDFB4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Sources/WireGuardApp/Base.lproj/InfoPlist.strings; sourceTree = "<group>"; };
6F70E20D221058DF008BDFBA /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
6F70E20D221058DF008BDFC6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
6F70E22922106A2D008BDFB4 /* WireGuardLoginItemHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WireGuardLoginItemHelper.app; sourceTree = BUILT_PRODUCTS_DIR; };
6F70E23222106A31008BDFB4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6F70E23922109BEF008BDFB4 /* LoginItemHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = LoginItemHelper.entitlements; sourceTree = "<group>"; };
@@ -402,26 +400,26 @@
6FDEF7FE21863C0100D8FBF6 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = "<group>"; };
6FDEF7FF21863C0100D8FBF6 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = "<group>"; };
6FDEF801218646B900D8FBF6 /* ZipArchive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZipArchive.swift; sourceTree = "<group>"; };
6FDEF805218725D200D8FBF6 /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = "<group>"; };
6FDEF805218725D200D8FBF6 /* SettingsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewController.swift; sourceTree = "<group>"; tabWidth = 4; };
6FE1765521C90BBE002690EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Sources/WireGuardApp/Base.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FC /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hant; path = Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F0 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh-Hans; path = Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FB /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = Sources/WireGuardApp/id.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F2 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = Sources/WireGuardApp/it.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F9 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Sources/WireGuardApp/de.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EB /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Sources/WireGuardApp/fr.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = Sources/WireGuardApp/fi.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F4 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Sources/WireGuardApp/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FA /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = Sources/WireGuardApp/sl.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EC /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = Sources/WireGuardApp/pl.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EF /* pa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pa; path = Sources/WireGuardApp/pa.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F7 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = Sources/WireGuardApp/ko.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EE /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = Sources/WireGuardApp/ca.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Sources/WireGuardApp/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F3 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Sources/WireGuardApp/ro.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F8 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Sources/WireGuardApp/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F1 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Sources/WireGuardApp/ja.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690ED /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Sources/WireGuardApp/es.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EE /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = Sources/WireGuardApp/ca.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690EF /* pa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pa; path = Sources/WireGuardApp/pa.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F0 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
6FE1765521C90BBE002690F1 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Sources/WireGuardApp/ja.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F2 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = Sources/WireGuardApp/it.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F3 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Sources/WireGuardApp/ro.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F4 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Sources/WireGuardApp/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F5 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = Sources/WireGuardApp/fi.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Sources/WireGuardApp/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F7 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = Sources/WireGuardApp/ko.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F8 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Sources/WireGuardApp/tr.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690F9 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Sources/WireGuardApp/de.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FA /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = Sources/WireGuardApp/sl.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FB /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = Sources/WireGuardApp/id.lproj/Localizable.strings; sourceTree = "<group>"; };
6FE1765521C90BBE002690FC /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
6FE1765921C90E87002690EA /* LocalizationHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationHelper.swift; sourceTree = "<group>"; };
6FE254FA219C10800028284D /* ZipImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipImporter.swift; sourceTree = "<group>"; };
6FE254FE219C60290028284D /* ZipExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipExporter.swift; sourceTree = "<group>"; };
@@ -429,7 +427,7 @@
6FF3526B21C23F960008484E /* ringlogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ringlogger.h; sourceTree = "<group>"; };
6FF3526C21C23F960008484E /* ringlogger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ringlogger.c; sourceTree = "<group>"; };
6FF3526E21C23FA10008484E /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
6FF4AC14211EC46F002C96EB /* WireGuard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WireGuard.app; sourceTree = BUILT_PRODUCTS_DIR; };
6FF4AC14211EC46F002C96EB /* AmneziaWG.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AmneziaWG.app; sourceTree = BUILT_PRODUCTS_DIR; };
6FF4AC1E211EC472002C96EB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
6FF4AC21211EC472002C96EB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
6FF4AC23211EC472002C96EB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -439,7 +437,7 @@
6FFA5D942194454A0001E2F7 /* NETunnelProviderProtocol+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NETunnelProviderProtocol+Extension.swift"; sourceTree = "<group>"; };
6FFA5D9F21958ECC0001E2F7 /* ErrorNotifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorNotifier.swift; sourceTree = "<group>"; };
6FFA5DA32197085D0001E2F7 /* ActivateOnDemandOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivateOnDemandOption.swift; sourceTree = "<group>"; };
6FFACD1E21E4D89600E9A2A5 /* ParseError+WireGuardAppError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseError+WireGuardAppError.swift"; sourceTree = "<group>"; };
6FFACD1E21E4D89600E9A2A5 /* ParseError+WireGuardAppError.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = "ParseError+WireGuardAppError.swift"; sourceTree = "<group>"; tabWidth = 4; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -777,7 +775,7 @@
6FF4AC15211EC46F002C96EB /* Products */ = {
isa = PBXGroup;
children = (
6FF4AC14211EC46F002C96EB /* WireGuard.app */,
6FF4AC14211EC46F002C96EB /* AmneziaWG.app */,
6F5D0C1A218352EF000F85AD /* WireGuardNetworkExtension.appex */,
6FB1BD5D21D2607A00A991BF /* WireGuard.app */,
6FB1BD9121D4BFE600A991BF /* WireGuardNetworkExtension.appex */,
@@ -951,7 +949,7 @@
packageProductDependencies = (
);
productName = WireGuard;
productReference = 6FF4AC14211EC46F002C96EB /* WireGuard.app */;
productReference = 6FF4AC14211EC46F002C96EB /* AmneziaWG.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@@ -1622,6 +1620,7 @@
COMBINE_HIDPI_IMAGES = YES;
ENABLE_HARDENED_RUNTIME = YES;
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = AmneziaWG;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
@@ -1643,6 +1642,7 @@
COMBINE_HIDPI_IMAGES = YES;
ENABLE_HARDENED_RUNTIME = YES;
INFOPLIST_FILE = Sources/WireGuardApp/UI/macOS/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = AmneziaWG;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
@@ -1792,6 +1792,8 @@
MTL_ENABLE_DEBUG_INFO = YES;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
PATH = "${PATH}:/opt/homebrew/opt/go/bin";
PRODUCT_NAME = AmneziaWG;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OBJC_BRIDGING_HEADER = "Sources/WireGuardApp/WireGuard-Bridging-Header.h";
@@ -1799,6 +1801,7 @@
SWIFT_PRECOMPILE_BRIDGING_HEADER = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
WIREGUARD_GO_VERSION = 0.2.1;
};
name = Debug;
};
@@ -1854,6 +1857,8 @@
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PATH = "${PATH}:/opt/homebrew/opt/go/bin";
PRODUCT_NAME = AmneziaWG;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OBJC_BRIDGING_HEADER = "Sources/WireGuardApp/WireGuard-Bridging-Header.h";
@@ -1862,6 +1867,7 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
WIREGUARD_GO_VERSION = 0.2.1;
};
name = Release;
};
@@ -1877,7 +1883,6 @@
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "$(APP_ID_IOS)";
PRODUCT_NAME = WireGuard;
SWIFT_VERSION = 5.0;
};
name = Debug;
@@ -1894,7 +1899,6 @@
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "$(APP_ID_IOS)";
PRODUCT_NAME = WireGuard;
SWIFT_VERSION = 5.0;
};
name = Release;

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>