Remove files we don't need
This commit is contained in:
parent
db8c6cbc21
commit
80f7c88028
|
@ -1,5 +0,0 @@
|
||||||
<?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">
|
|
||||||
<string></string>
|
|
||||||
</plist>
|
|
|
@ -1,53 +0,0 @@
|
||||||
<?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>PreferenceSpecifiers</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSGroupSpecifier</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string>Version Info</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>DefaultValue</key>
|
|
||||||
<string>Set at build time.</string>
|
|
||||||
<key>Key</key>
|
|
||||||
<string>version_preference</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string>WireGuard iOS</string>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSTitleValueSpecifier</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>DefaultValue</key>
|
|
||||||
<string>Set at build time.</string>
|
|
||||||
<key>Key</key>
|
|
||||||
<string>wireguard_version_preference</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string>WireGuard Go</string>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSTitleValueSpecifier</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSGroupSpecifier</string>
|
|
||||||
<key>FooterText</key>
|
|
||||||
<string>Apple Acknowledgement</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSChildPaneSpecifier</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string>Acknowledgements</string>
|
|
||||||
<key>File</key>
|
|
||||||
<string>Acknowledgements</string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
<key>StringsTable</key>
|
|
||||||
<string>Root</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string></string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -1,5 +0,0 @@
|
||||||
/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */
|
|
||||||
|
|
||||||
"Version Info" = "Version Info";
|
|
||||||
"Acknowledgements" = "Acknowledgements";
|
|
||||||
"Apple Acknowledgement" = "This app contains code derived from Apple sample code: https://developer.apple.com/library/archive/samplecode/SimpleTunnel/Introduction/Intro.html";
|
|
|
@ -1,6 +0,0 @@
|
||||||
/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */
|
|
||||||
|
|
||||||
"Version Info" = "Versie informatie";
|
|
||||||
"Acknowledgements" = "Licenties";
|
|
||||||
"Apple Acknowledgement" = "Deze app bevat code afgeleid van Apple voorbeeld code: https://developer.apple.com/library/archive/samplecode/SimpleTunnel/Introduction/Intro.html";
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 730 B |
Binary file not shown.
Before Width: | Height: | Size: 2.3 KiB |
|
@ -1,23 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
sed=$(sh /etc/profile; which sed)
|
|
||||||
wireguard_go_version=$("$sed" -n 's/.*WireGuardGoVersion = "\(.*\)\".*/\1/p' wireguard-go/version.go)
|
|
||||||
|
|
||||||
target_plist="$TARGET_BUILD_DIR/$INFOPLIST_PATH"
|
|
||||||
dsym_plist="$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Info.plist"
|
|
||||||
|
|
||||||
for plist in "$target_plist" "$dsym_plist"; do
|
|
||||||
if [ -f "$plist" ]; then
|
|
||||||
echo $wireguard_go_version
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :WireGuardGoVersion $wireguard_go_version" "$plist"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
settings_root_plist="$TARGET_BUILD_DIR/WireGuard.app/Settings.bundle/Root.plist"
|
|
||||||
|
|
||||||
if [ -f "$settings_root_plist" ]; then
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $wireguard_go_version" "$settings_root_plist"
|
|
||||||
else
|
|
||||||
echo "Could not find: $settings_root_plist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
git=$(sh /etc/profile; which git)
|
|
||||||
date=$(sh /etc/profile; which date)
|
|
||||||
|
|
||||||
number_of_commits=$("$git" rev-list HEAD --count)
|
|
||||||
date_timestamp=$("$date" +%Y%m%d)
|
|
||||||
|
|
||||||
target_plist="$TARGET_BUILD_DIR/$INFOPLIST_PATH"
|
|
||||||
echo $target_plist
|
|
||||||
dsym_plist="$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Info.plist"
|
|
||||||
echo $dsym_plist
|
|
||||||
|
|
||||||
for plist in "$target_plist" "$dsym_plist"; do
|
|
||||||
if [ -f "$plist" ]; then
|
|
||||||
echo $date_timestamp
|
|
||||||
echo $plist
|
|
||||||
echo $number_of_commits
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $number_of_commits" "$plist"
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString 0.0.$date_timestamp" "$plist"
|
|
||||||
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
settings_root_plist="$TARGET_BUILD_DIR/WireGuard.app/Settings.bundle/Root.plist"
|
|
||||||
|
|
||||||
if [ -f "$settings_root_plist" ]; then
|
|
||||||
settingsVersion="`agvtool what-marketing-version -terse1`(${number_of_commits})"
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $settingsVersion" "$settings_root_plist"
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue 0.0.$date_timestamp" "$settings_root_plist"
|
|
||||||
else
|
|
||||||
echo "Could not find: $settings_root_plist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
//
|
|
||||||
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
public class ExtensionMessage: Equatable {
|
|
||||||
|
|
||||||
public static let requestVersion = ExtensionMessage(0xff)
|
|
||||||
|
|
||||||
public let data: Data
|
|
||||||
|
|
||||||
private init(_ byte: UInt8) {
|
|
||||||
data = Data(bytes: [byte])
|
|
||||||
}
|
|
||||||
|
|
||||||
init(_ data: Data) {
|
|
||||||
self.data = data
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: Equatable
|
|
||||||
public static func == (lhs: ExtensionMessage, rhs: ExtensionMessage) -> Bool {
|
|
||||||
return (lhs.data == rhs.data)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
//
|
|
||||||
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
enum PCKeys: String {
|
|
||||||
case title, tunnelIdentifier, endpoints, dns, addresses, mtu, settings
|
|
||||||
}
|
|
|
@ -1,180 +0,0 @@
|
||||||
//
|
|
||||||
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
enum AddressType {
|
|
||||||
case IPv6, IPv4, other
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum EndpointValidationError: Error {
|
|
||||||
case noIpAndPort(String)
|
|
||||||
case invalidIP(String)
|
|
||||||
case invalidPort(String)
|
|
||||||
|
|
||||||
var localizedDescription: String {
|
|
||||||
switch self {
|
|
||||||
case .noIpAndPort:
|
|
||||||
return NSLocalizedString("EndpointValidationError.noIpAndPort", comment: "Error message for malformed endpoint.")
|
|
||||||
case .invalidIP:
|
|
||||||
return NSLocalizedString("EndpointValidationError.invalidIP", comment: "Error message for invalid endpoint ip.")
|
|
||||||
case .invalidPort:
|
|
||||||
return NSLocalizedString("EndpointValidationError.invalidPort", comment: "Error message invalid endpoint port.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Endpoint {
|
|
||||||
var ipAddress: String
|
|
||||||
var port: Int32?
|
|
||||||
var addressType: AddressType
|
|
||||||
|
|
||||||
init?(endpointString: String, needsPort: Bool = true) throws {
|
|
||||||
var hostString: String
|
|
||||||
if needsPort {
|
|
||||||
guard let range = endpointString.range(of: ":", options: .backwards, range: nil, locale: nil) else {
|
|
||||||
throw EndpointValidationError.noIpAndPort(endpointString)
|
|
||||||
}
|
|
||||||
hostString = String(endpointString[..<range.lowerBound])
|
|
||||||
|
|
||||||
let portString = endpointString[range.upperBound...]
|
|
||||||
|
|
||||||
guard let port = Int32(portString), port > 0 else {
|
|
||||||
throw EndpointValidationError.invalidPort(String(portString/*parts[1]*/))
|
|
||||||
}
|
|
||||||
self.port = port
|
|
||||||
} else {
|
|
||||||
hostString = endpointString
|
|
||||||
}
|
|
||||||
|
|
||||||
hostString = hostString.replacingOccurrences(of: "[", with: "").replacingOccurrences(of: "]", with: "")
|
|
||||||
var addressType = validateIpAddress(ipToValidate: hostString)
|
|
||||||
let ipString: String
|
|
||||||
if addressType == .other {
|
|
||||||
ipString = convertToipAddress(from: hostString)
|
|
||||||
} else {
|
|
||||||
ipString = hostString
|
|
||||||
}
|
|
||||||
|
|
||||||
ipAddress = String(ipString)
|
|
||||||
addressType = validateIpAddress(ipToValidate: ipAddress)
|
|
||||||
guard addressType == .IPv4 || addressType == .IPv6 else {
|
|
||||||
throw EndpointValidationError.invalidIP(ipAddress)
|
|
||||||
}
|
|
||||||
self.addressType = addressType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func convertToipAddress(from hostname: String) -> String {
|
|
||||||
let host = CFHostCreateWithName(nil, hostname as CFString).takeRetainedValue()
|
|
||||||
CFHostStartInfoResolution(host, .addresses, nil)
|
|
||||||
var success: DarwinBoolean = false
|
|
||||||
if let addresses = CFHostGetAddressing(host, &success)?.takeUnretainedValue() as NSArray?,
|
|
||||||
let theAddress = addresses.firstObject as? NSData {
|
|
||||||
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
|
|
||||||
if getnameinfo(theAddress.bytes.assumingMemoryBound(to: sockaddr.self), socklen_t(theAddress.length),
|
|
||||||
&hostname, socklen_t(hostname.count), nil, 0, NI_NUMERICHOST) == 0 {
|
|
||||||
let numAddress = String(cString: hostname)
|
|
||||||
return numAddress
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return hostname
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateIpAddress(ipToValidate: String) -> AddressType {
|
|
||||||
|
|
||||||
var sin = sockaddr_in()
|
|
||||||
if ipToValidate.withCString({ cstring in inet_pton(AF_INET, cstring, &sin.sin_addr) }) == 1 {
|
|
||||||
// IPv4 peer.
|
|
||||||
return .IPv4
|
|
||||||
}
|
|
||||||
|
|
||||||
var sin6 = sockaddr_in6()
|
|
||||||
if ipToValidate.withCString({ cstring in inet_pton(AF_INET6, cstring, &sin6.sin6_addr) }) == 1 {
|
|
||||||
// IPv6 peer.
|
|
||||||
return .IPv6
|
|
||||||
}
|
|
||||||
|
|
||||||
return .other
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CIDRAddressValidationError: Error {
|
|
||||||
case noIpAndSubnet(String)
|
|
||||||
case invalidIP(String)
|
|
||||||
case invalidSubnet(String)
|
|
||||||
|
|
||||||
var localizedDescription: String {
|
|
||||||
switch self {
|
|
||||||
case .noIpAndSubnet:
|
|
||||||
return NSLocalizedString("CIDRAddressValidationError", comment: "Error message for malformed CIDR address.")
|
|
||||||
case .invalidIP:
|
|
||||||
return NSLocalizedString("CIDRAddressValidationError", comment: "Error message for invalid address ip.")
|
|
||||||
case .invalidSubnet:
|
|
||||||
return NSLocalizedString("CIDRAddressValidationError", comment: "Error message invalid address subnet.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct CIDRAddress {
|
|
||||||
var ipAddress: String
|
|
||||||
var subnet: Int32
|
|
||||||
var addressType: AddressType
|
|
||||||
|
|
||||||
init?(stringRepresentation: String) throws {
|
|
||||||
let subnetString: String.SubSequence
|
|
||||||
if let range = stringRepresentation.range(of: "/", options: .backwards, range: nil, locale: nil) {
|
|
||||||
let ipString = stringRepresentation[..<range.lowerBound].replacingOccurrences(of: "[", with: "").replacingOccurrences(of: "]", with: "")
|
|
||||||
ipAddress = String(ipString)
|
|
||||||
subnetString = stringRepresentation[range.upperBound...]
|
|
||||||
} else {
|
|
||||||
let ipString = stringRepresentation
|
|
||||||
ipAddress = String(ipString)
|
|
||||||
subnetString = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
let addressType = validateIpAddress(ipToValidate: ipAddress)
|
|
||||||
guard addressType == .IPv4 || addressType == .IPv6 else {
|
|
||||||
throw CIDRAddressValidationError.invalidIP(ipAddress)
|
|
||||||
}
|
|
||||||
self.addressType = addressType
|
|
||||||
|
|
||||||
if let subnet = Int32(subnetString) {
|
|
||||||
switch addressType {
|
|
||||||
case .IPv6:
|
|
||||||
self.subnet = subnet > 128 ? 128 : subnet
|
|
||||||
case .IPv4:
|
|
||||||
self.subnet = subnet > 32 ? 32 : subnet
|
|
||||||
case .other:
|
|
||||||
self.subnet = subnet
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch addressType {
|
|
||||||
case .IPv4:
|
|
||||||
subnet = 32
|
|
||||||
case .IPv6:
|
|
||||||
subnet = 128
|
|
||||||
case .other:
|
|
||||||
throw CIDRAddressValidationError.invalidSubnet(String(subnetString))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var subnetString: String {
|
|
||||||
// We could calculate these.
|
|
||||||
|
|
||||||
var bitMask: UInt32 = 0b11111111111111111111111111111111
|
|
||||||
bitMask = bitMask << (32 - subnet)
|
|
||||||
|
|
||||||
let first = UInt8(truncatingIfNeeded: bitMask >> 24)
|
|
||||||
let second = UInt8(truncatingIfNeeded: bitMask >> 16 )
|
|
||||||
let third = UInt8(truncatingIfNeeded: bitMask >> 8)
|
|
||||||
let fourth = UInt8(truncatingIfNeeded: bitMask)
|
|
||||||
|
|
||||||
return "\(first).\(second).\(third).\(fourth)"
|
|
||||||
}
|
|
||||||
|
|
||||||
var stringRepresentation: String {
|
|
||||||
return "\(ipAddress)/\(subnet)"
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
BIN
icon_20pt.png
BIN
icon_20pt.png
Binary file not shown.
Before Width: | Height: | Size: 730 B |
Loading…
Reference in New Issue