Update Demo to new library

This commit is contained in:
Davide De Rosa 2018-08-23 11:46:02 +02:00
parent 897e824340
commit 0f9df88e4a
10 changed files with 286 additions and 358 deletions

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14269.14" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina4_7" orientation="portrait"> <device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/> <adaptation id="fullscreen"/>
</device> </device>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14252.5"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<scenes> <scenes>
@ -55,7 +55,7 @@
<textInputTraits key="textInputTraits"/> <textInputTraits key="textInputTraits"/>
</textField> </textField>
<button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Teo-8d-LYJ"> <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Teo-8d-LYJ">
<rect key="frame" x="20" y="240" width="237" height="70"/> <rect key="frame" x="20" y="240" width="276" height="70"/>
<fontDescription key="fontDescription" type="system" pointSize="48"/> <fontDescription key="fontDescription" type="system" pointSize="48"/>
<state key="normal" title="Connect"/> <state key="normal" title="Connect"/>
<connections> <connections>
@ -74,22 +74,8 @@
<action selector="tcpClicked:" destination="BYZ-38-t0r" eventType="valueChanged" id="ZJI-Jw-pow"/> <action selector="tcpClicked:" destination="BYZ-38-t0r" eventType="valueChanged" id="ZJI-Jw-pow"/>
</connections> </connections>
</switch> </switch>
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gg2-18-Pq8">
<rect key="frame" x="267" y="257" width="88" height="36"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/>
<state key="normal" title="Download"/>
<connections>
<action selector="download" destination="BYZ-38-t0r" eventType="touchUpInside" id="D3u-Dg-Bcd"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="??" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="b1e-IE-2kv">
<rect key="frame" x="179" y="318" width="17" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6dU-fF-FSg"> <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6dU-fF-FSg">
<rect key="frame" x="20" y="310" width="78" height="41"/> <rect key="frame" x="20" y="310" width="335" height="41"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/> <fontDescription key="fontDescription" type="system" pointSize="24"/>
<state key="normal" title="See log"/> <state key="normal" title="See log"/>
<connections> <connections>
@ -113,35 +99,30 @@
<constraint firstItem="WZf-S5-SqC" firstAttribute="bottom" secondItem="Teo-8d-LYJ" secondAttribute="bottom" id="HGt-O3-p5F"/> <constraint firstItem="WZf-S5-SqC" firstAttribute="bottom" secondItem="Teo-8d-LYJ" secondAttribute="bottom" id="HGt-O3-p5F"/>
<constraint firstItem="ONL-vF-iUY" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="OS0-Uz-cCz"/> <constraint firstItem="ONL-vF-iUY" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="OS0-Uz-cCz"/>
<constraint firstItem="6dU-fF-FSg" firstAttribute="leading" secondItem="Teo-8d-LYJ" secondAttribute="leading" id="P9y-bj-2tC"/> <constraint firstItem="6dU-fF-FSg" firstAttribute="leading" secondItem="Teo-8d-LYJ" secondAttribute="leading" id="P9y-bj-2tC"/>
<constraint firstItem="WZf-S5-SqC" firstAttribute="leading" secondItem="Teo-8d-LYJ" secondAttribute="trailing" constant="10" id="QqJ-GR-aGp"/>
<constraint firstItem="XwE-sE-aPN" firstAttribute="top" secondItem="ONL-vF-iUY" secondAttribute="bottom" constant="20" id="XvO-b0-4Pl"/> <constraint firstItem="XwE-sE-aPN" firstAttribute="top" secondItem="ONL-vF-iUY" secondAttribute="bottom" constant="20" id="XvO-b0-4Pl"/>
<constraint firstItem="UNN-CR-rdr" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="Zep-Ze-DNM"/> <constraint firstItem="UNN-CR-rdr" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="Zep-Ze-DNM"/>
<constraint firstItem="UNN-CR-rdr" firstAttribute="leading" secondItem="bc6-yT-aty" secondAttribute="leading" id="Zix-pG-8bU"/> <constraint firstItem="UNN-CR-rdr" firstAttribute="leading" secondItem="bc6-yT-aty" secondAttribute="leading" id="Zix-pG-8bU"/>
<constraint firstItem="6dU-fF-FSg" firstAttribute="trailing" secondItem="WZf-S5-SqC" secondAttribute="trailing" id="a7z-pJ-hKf"/>
<constraint firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" constant="20" id="cR0-Np-zTX"/> <constraint firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" constant="20" id="cR0-Np-zTX"/>
<constraint firstItem="dQS-Ma-dYP" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="eNP-iD-wgR"/> <constraint firstItem="dQS-Ma-dYP" firstAttribute="trailing" secondItem="bc6-yT-aty" secondAttribute="trailing" id="eNP-iD-wgR"/>
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="UNN-CR-rdr" secondAttribute="bottom" constant="20" id="efh-iS-51K"/> <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="UNN-CR-rdr" secondAttribute="bottom" constant="20" id="efh-iS-51K"/>
<constraint firstItem="XwE-sE-aPN" firstAttribute="leading" secondItem="ONL-vF-iUY" secondAttribute="leading" id="fJB-38-JYZ"/> <constraint firstItem="XwE-sE-aPN" firstAttribute="leading" secondItem="ONL-vF-iUY" secondAttribute="leading" id="fJB-38-JYZ"/>
<constraint firstItem="b1e-IE-2kv" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="fuR-6q-fd6"/>
<constraint firstItem="sA4-W9-jxo" firstAttribute="top" secondItem="Teo-8d-LYJ" secondAttribute="top" id="grl-36-NDr"/> <constraint firstItem="sA4-W9-jxo" firstAttribute="top" secondItem="Teo-8d-LYJ" secondAttribute="top" id="grl-36-NDr"/>
<constraint firstItem="ONL-vF-iUY" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="20" id="lNh-0d-b3b"/> <constraint firstItem="ONL-vF-iUY" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="20" id="lNh-0d-b3b"/>
<constraint firstItem="dQS-Ma-dYP" firstAttribute="top" secondItem="XwE-sE-aPN" secondAttribute="bottom" constant="20" id="lxB-za-cHQ"/> <constraint firstItem="dQS-Ma-dYP" firstAttribute="top" secondItem="XwE-sE-aPN" secondAttribute="bottom" constant="20" id="lxB-za-cHQ"/>
<constraint firstItem="7LH-tE-it9" firstAttribute="leading" secondItem="XwE-sE-aPN" secondAttribute="trailing" constant="10" id="oYJ-8E-Ieq"/> <constraint firstItem="7LH-tE-it9" firstAttribute="leading" secondItem="XwE-sE-aPN" secondAttribute="trailing" constant="10" id="oYJ-8E-Ieq"/>
<constraint firstItem="6dU-fF-FSg" firstAttribute="top" secondItem="Teo-8d-LYJ" secondAttribute="bottom" id="pAc-Ee-Ryj"/> <constraint firstItem="6dU-fF-FSg" firstAttribute="top" secondItem="Teo-8d-LYJ" secondAttribute="bottom" id="pAc-Ee-Ryj"/>
<constraint firstItem="Teo-8d-LYJ" firstAttribute="top" secondItem="bc6-yT-aty" secondAttribute="bottom" constant="20" id="qnB-Iz-Gbp"/> <constraint firstItem="Teo-8d-LYJ" firstAttribute="top" secondItem="bc6-yT-aty" secondAttribute="bottom" constant="20" id="qnB-Iz-Gbp"/>
<constraint firstItem="b1e-IE-2kv" firstAttribute="top" secondItem="Teo-8d-LYJ" secondAttribute="bottom" constant="8" id="rCG-di-kDu"/>
<constraint firstItem="ONL-vF-iUY" firstAttribute="leading" secondItem="bc6-yT-aty" secondAttribute="leading" id="sez-Cv-mp9"/> <constraint firstItem="ONL-vF-iUY" firstAttribute="leading" secondItem="bc6-yT-aty" secondAttribute="leading" id="sez-Cv-mp9"/>
<constraint firstItem="Gg2-18-Pq8" firstAttribute="centerY" secondItem="Teo-8d-LYJ" secondAttribute="centerY" id="tHU-1i-TyC"/>
<constraint firstItem="bc6-yT-aty" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" constant="20" id="tZc-ru-OTc"/> <constraint firstItem="bc6-yT-aty" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" constant="20" id="tZc-ru-OTc"/>
<constraint firstItem="7LH-tE-it9" firstAttribute="trailing" secondItem="ONL-vF-iUY" secondAttribute="trailing" id="tlD-XS-qwO"/> <constraint firstItem="7LH-tE-it9" firstAttribute="trailing" secondItem="ONL-vF-iUY" secondAttribute="trailing" id="tlD-XS-qwO"/>
<constraint firstItem="sA4-W9-jxo" firstAttribute="centerX" secondItem="WZf-S5-SqC" secondAttribute="centerX" id="v80-dG-aB7"/> <constraint firstItem="sA4-W9-jxo" firstAttribute="centerX" secondItem="WZf-S5-SqC" secondAttribute="centerX" id="v80-dG-aB7"/>
<constraint firstAttribute="trailing" secondItem="Gg2-18-Pq8" secondAttribute="trailing" constant="20" id="vzB-UP-pVi"/>
<constraint firstAttribute="trailing" secondItem="WZf-S5-SqC" secondAttribute="trailing" constant="20" id="wMy-Qf-9Bi"/> <constraint firstAttribute="trailing" secondItem="WZf-S5-SqC" secondAttribute="trailing" constant="20" id="wMy-Qf-9Bi"/>
<constraint firstItem="Gg2-18-Pq8" firstAttribute="leading" secondItem="Teo-8d-LYJ" secondAttribute="trailing" constant="10" id="yWA-EY-Qao"/>
</constraints> </constraints>
</view> </view>
<connections> <connections>
<outlet property="buttonConnection" destination="Teo-8d-LYJ" id="evE-2I-13A"/> <outlet property="buttonConnection" destination="Teo-8d-LYJ" id="evE-2I-13A"/>
<outlet property="buttonDownload" destination="Gg2-18-Pq8" id="3u5-YL-8tg"/>
<outlet property="labelDownload" destination="b1e-IE-2kv" id="AXL-Lj-KVd"/>
<outlet property="switchTCP" destination="WZf-S5-SqC" id="UyR-J2-iX0"/> <outlet property="switchTCP" destination="WZf-S5-SqC" id="UyR-J2-iX0"/>
<outlet property="textDomain" destination="XwE-sE-aPN" id="byL-Ai-eAD"/> <outlet property="textDomain" destination="XwE-sE-aPN" id="byL-Ai-eAD"/>
<outlet property="textLog" destination="UNN-CR-rdr" id="a9o-b3-nHT"/> <outlet property="textLog" destination="UNN-CR-rdr" id="a9o-b3-nHT"/>

View File

@ -8,7 +8,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.privateinternetaccess.ios.demo.BasicTunnel</string> <string>group.com.algoritmico.ios.demo.BasicTunnel</string>
</array> </array>
<key>keychain-access-groups</key> <key>keychain-access-groups</key>
<array> <array>

View File

@ -3,28 +3,52 @@
// BasicTunnel-iOS // BasicTunnel-iOS
// //
// Created by Davide De Rosa on 2/11/17. // Created by Davide De Rosa on 2/11/17.
// Copyright © 2018 London Trust Media. All rights reserved. // Copyright © 2018 Davide De Rosa. All rights reserved.
// //
import UIKit import UIKit
import NetworkExtension import NetworkExtension
import PIATunnel import TunnelKit
extension ViewController {
private static let appGroup = "group.com.algoritmico.ios.demo.BasicTunnel"
private static let bundleIdentifier = "com.algoritmico.ios.demo.BasicTunnel.BasicTunnelExtension"
private func makeProtocol() -> NETunnelProviderProtocol {
let server = textServer.text!
let domain = textDomain.text!
let hostname = ((domain == "") ? server : [server, domain].joined(separator: "."))
let port = UInt16(textPort.text!)!
let username = textUsername.text!
let password = textPassword.text!
let endpoint = TunnelKitProvider.AuthenticatedEndpoint(
hostname: hostname,
username: username,
password: password
)
var builder = TunnelKitProvider.ConfigurationBuilder(appGroup: ViewController.appGroup)
let socketType: TunnelKitProvider.SocketType = switchTCP.isOn ? .tcp : .udp
builder.endpointProtocols = [TunnelKitProvider.EndpointProtocol(socketType, port)]
builder.cipher = .aes128cbc
builder.digest = .sha1
builder.mtu = 1350
builder.renegotiatesAfterSeconds = nil
builder.shouldDebug = true
builder.debugLogKey = "Log"
let configuration = builder.build()
return try! configuration.generatedTunnelProtocol(
withBundleIdentifier: ViewController.bundleIdentifier,
endpoint: endpoint
)
}
}
class ViewController: UIViewController, URLSessionDataDelegate { class ViewController: UIViewController, URLSessionDataDelegate {
static let APP_GROUP = "group.com.privateinternetaccess.ios.demo.BasicTunnel"
static let VPN_BUNDLE = "com.privateinternetaccess.ios.demo.BasicTunnel.BasicTunnelExtension"
static let CIPHER: PIATunnelProvider.Cipher = .aes128cbc
static let DIGEST: PIATunnelProvider.Digest = .sha1
static let HANDSHAKE: PIATunnelProvider.Handshake = .rsa2048
static let RENEG: Int? = nil
static let DOWNLOAD_COUNT = 5
@IBOutlet var textUsername: UITextField! @IBOutlet var textUsername: UITextField!
@IBOutlet var textPassword: UITextField! @IBOutlet var textPassword: UITextField!
@ -43,20 +67,10 @@ class ViewController: UIViewController, URLSessionDataDelegate {
// //
@IBOutlet var buttonDownload: UIButton!
@IBOutlet var labelDownload: UILabel!
var currentManager: NETunnelProviderManager? var currentManager: NETunnelProviderManager?
var status = NEVPNStatus.invalid var status = NEVPNStatus.invalid
var downloadTask: URLSessionDataTask!
var downloadCount = 0
var downloadTimes = [TimeInterval]()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@ -114,37 +128,8 @@ class ViewController: UIViewController, URLSessionDataDelegate {
} }
func connect() { func connect() {
let server = textServer.text!
let domain = textDomain.text!
let hostname = ((domain == "") ? server : [server, domain].joined(separator: "."))
let port = UInt16(textPort.text!)!
let username = textUsername.text!
let password = textPassword.text!
configureVPN({ (manager) in configureVPN({ (manager) in
// manager.isOnDemandEnabled = true return self.makeProtocol()
// manager.onDemandRules = [NEOnDemandRuleConnect()]
let endpoint = PIATunnelProvider.AuthenticatedEndpoint(
hostname: hostname,
username: username,
password: password
)
var builder = PIATunnelProvider.ConfigurationBuilder(appGroup: ViewController.APP_GROUP)
let socketType: PIATunnelProvider.SocketType = (self.switchTCP.isOn ? .tcp : .udp)
builder.endpointProtocols = [PIATunnelProvider.EndpointProtocol(socketType, port, .vanilla)]
builder.cipher = ViewController.CIPHER
builder.digest = ViewController.DIGEST
builder.handshake = ViewController.HANDSHAKE
builder.mtu = 1350
builder.renegotiatesAfterSeconds = ViewController.RENEG
builder.shouldDebug = true
builder.debugLogKey = "Log"
let configuration = builder.build()
return try! configuration.generatedTunnelProtocol(withBundleIdentifier: ViewController.VPN_BUNDLE, endpoint: endpoint)
}, completionHandler: { (error) in }, completionHandler: { (error) in
if let error = error { if let error = error {
print("configure error: \(error)") print("configure error: \(error)")
@ -161,7 +146,6 @@ class ViewController: UIViewController, URLSessionDataDelegate {
func disconnect() { func disconnect() {
configureVPN({ (manager) in configureVPN({ (manager) in
// manager.isOnDemandEnabled = false
return nil return nil
}, completionHandler: { (error) in }, completionHandler: { (error) in
self.currentManager?.connection.stopVPNTunnel() self.currentManager?.connection.stopVPNTunnel()
@ -172,7 +156,7 @@ class ViewController: UIViewController, URLSessionDataDelegate {
guard let vpn = currentManager?.connection as? NETunnelProviderSession else { guard let vpn = currentManager?.connection as? NETunnelProviderSession else {
return return
} }
try? vpn.sendProviderMessage(PIATunnelProvider.Message.requestLog.data) { (data) in try? vpn.sendProviderMessage(TunnelKitProvider.Message.requestLog.data) { (data) in
guard let log = String(data: data!, encoding: .utf8) else { guard let log = String(data: data!, encoding: .utf8) else {
return return
} }
@ -180,57 +164,6 @@ class ViewController: UIViewController, URLSessionDataDelegate {
} }
} }
@IBAction func download() {
downloadCount = ViewController.DOWNLOAD_COUNT
downloadTimes.removeAll()
buttonDownload.isEnabled = false
labelDownload.text = ""
doDownload()
}
func doDownload() {
let url = URL(string: "https://example.bogus/test/100mb")!
var req = URLRequest(url: url)
req.httpMethod = "GET"
let cfg = URLSessionConfiguration.ephemeral
let sess = URLSession(configuration: cfg, delegate: self, delegateQueue: nil)
let start = Date()
downloadTask = sess.dataTask(with: req) { (data, response, error) in
if let error = error {
print("error downloading: \(error)")
return
}
let elapsed = -start.timeIntervalSinceNow
print("download finished: \(elapsed) seconds")
self.downloadTimes.append(elapsed)
DispatchQueue.main.async {
self.downloadCount -= 1
if (self.downloadCount > 0) {
self.labelDownload.text = "\(self.labelDownload.text!)\(elapsed) seconds\n"
self.doDownload()
} else {
var avg = 0.0
for n in self.downloadTimes {
avg += n
}
avg /= Double(ViewController.DOWNLOAD_COUNT)
self.labelDownload.text = "\(avg) seconds"
self.buttonDownload.isEnabled = true
}
}
}
downloadTask.resume()
}
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
print("received \(data.count) bytes")
}
func configureVPN(_ configure: @escaping (NETunnelProviderManager) -> NETunnelProviderProtocol?, completionHandler: @escaping (Error?) -> Void) { func configureVPN(_ configure: @escaping (NETunnelProviderManager) -> NETunnelProviderProtocol?, completionHandler: @escaping (Error?) -> Void) {
reloadCurrentManager { (error) in reloadCurrentManager { (error) in
if let error = error { if let error = error {
@ -268,7 +201,7 @@ class ViewController: UIViewController, URLSessionDataDelegate {
for m in managers! { for m in managers! {
if let p = m.protocolConfiguration as? NETunnelProviderProtocol { if let p = m.protocolConfiguration as? NETunnelProviderProtocol {
if (p.providerBundleIdentifier == ViewController.VPN_BUNDLE) { if (p.providerBundleIdentifier == ViewController.bundleIdentifier) {
manager = m manager = m
break break
} }

View File

@ -3,28 +3,53 @@
// BasicTunnel-macOS // BasicTunnel-macOS
// //
// Created by Davide De Rosa on 10/15/17. // Created by Davide De Rosa on 10/15/17.
// Copyright © 2018 London Trust Media. All rights reserved. // Copyright © 2018 Davide De Rosa. All rights reserved.
// //
import Cocoa import Cocoa
import NetworkExtension import NetworkExtension
import PIATunnel import TunnelKit
extension ViewController {
private static let appGroup = "group.com.algoritmico.macos.demo.BasicTunnel"
private static let bundleIdentifier = "com.algoritmico.macos.demo.BasicTunnel.BasicTunnelExtension"
private func makeProtocol() -> NETunnelProviderProtocol {
let server = textServer.stringValue
let domain = textDomain.stringValue
let hostname = ((domain == "") ? server : [server, domain].joined(separator: "."))
let port = UInt16(textPort.stringValue)!
let username = textUsername.stringValue
let password = textPassword.stringValue
let endpoint = TunnelKitProvider.AuthenticatedEndpoint(
hostname: hostname,
username: username,
password: password
)
var builder = TunnelKitProvider.ConfigurationBuilder(appGroup: ViewController.appGroup)
// let socketType: TunnelKitProvider.SocketType = isTCP ? .tcp : .udp
let socketType: TunnelKitProvider.SocketType = .udp
builder.endpointProtocols = [TunnelKitProvider.EndpointProtocol(socketType, port)]
builder.cipher = .aes128cbc
builder.digest = .sha1
builder.mtu = 1350
builder.renegotiatesAfterSeconds = nil
builder.shouldDebug = true
builder.debugLogKey = "Log"
let configuration = builder.build()
return try! configuration.generatedTunnelProtocol(
withBundleIdentifier: ViewController.bundleIdentifier,
endpoint: endpoint
)
}
}
class ViewController: NSViewController { class ViewController: NSViewController {
static let APP_GROUP = "group.com.privateinternetaccess.macos.demo.BasicTunnel"
static let VPN_BUNDLE = "com.privateinternetaccess.macos.demo.BasicTunnel.BasicTunnelExtension"
static let CIPHER: PIATunnelProvider.Cipher = .aes128cbc
static let DIGEST: PIATunnelProvider.Digest = .sha1
static let HANDSHAKE: PIATunnelProvider.Handshake = .rsa2048
static let RENEG: Int? = nil
static let DOWNLOAD_COUNT = 5
@IBOutlet var textUsername: NSTextField! @IBOutlet var textUsername: NSTextField!
@IBOutlet var textPassword: NSTextField! @IBOutlet var textPassword: NSTextField!
@ -41,12 +66,6 @@ class ViewController: NSViewController {
var status = NEVPNStatus.invalid var status = NEVPNStatus.invalid
var downloadTask: URLSessionDataTask!
var downloadCount = 0
var downloadTimes = [TimeInterval]()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@ -59,10 +78,12 @@ class ViewController: NSViewController {
textUsername.stringValue = "myusername" textUsername.stringValue = "myusername"
textPassword.stringValue = "mypassword" textPassword.stringValue = "mypassword"
NotificationCenter.default.addObserver(self, NotificationCenter.default.addObserver(
selector: #selector(VPNStatusDidChange(notification:)), self,
name: .NEVPNStatusDidChange, selector: #selector(VPNStatusDidChange(notification:)),
object: nil) name: .NEVPNStatusDidChange,
object: nil
)
reloadCurrentManager(nil) reloadCurrentManager(nil)
@ -96,38 +117,8 @@ class ViewController: NSViewController {
} }
func connect() { func connect() {
let server = textServer.stringValue
let domain = textDomain.stringValue
let hostname = ((domain == "") ? server : [server, domain].joined(separator: "."))
let port = UInt16(textPort.stringValue)!
let username = textUsername.stringValue
let password = textPassword.stringValue
configureVPN({ (manager) in configureVPN({ (manager) in
// manager.isOnDemandEnabled = true return self.makeProtocol()
// manager.onDemandRules = [NEOnDemandRuleConnect()]
let endpoint = PIATunnelProvider.AuthenticatedEndpoint(
hostname: hostname,
username: username,
password: password
)
var builder = PIATunnelProvider.ConfigurationBuilder(appGroup: ViewController.APP_GROUP)
// let socketType: PIATunnelProvider.SocketType = (self.switchTCP.isOn ? .tcp : .udp)
let socketType: PIATunnelProvider.SocketType = .udp
builder.endpointProtocols = [PIATunnelProvider.EndpointProtocol(socketType, port, .vanilla)]
builder.cipher = ViewController.CIPHER
builder.digest = ViewController.DIGEST
builder.handshake = ViewController.HANDSHAKE
builder.mtu = 1350
builder.renegotiatesAfterSeconds = ViewController.RENEG
builder.shouldDebug = true
builder.debugLogKey = "Log"
let configuration = builder.build()
return try! configuration.generatedTunnelProtocol(withBundleIdentifier: ViewController.VPN_BUNDLE, endpoint: endpoint)
}, completionHandler: { (error) in }, completionHandler: { (error) in
if let error = error { if let error = error {
print("configure error: \(error)") print("configure error: \(error)")
@ -144,7 +135,6 @@ class ViewController: NSViewController {
func disconnect() { func disconnect() {
configureVPN({ (manager) in configureVPN({ (manager) in
// manager.isOnDemandEnabled = false
return nil return nil
}, completionHandler: { (error) in }, completionHandler: { (error) in
self.currentManager?.connection.stopVPNTunnel() self.currentManager?.connection.stopVPNTunnel()
@ -188,7 +178,7 @@ class ViewController: NSViewController {
for m in managers! { for m in managers! {
if let p = m.protocolConfiguration as? NETunnelProviderProtocol { if let p = m.protocolConfiguration as? NETunnelProviderProtocol {
if (p.providerBundleIdentifier == ViewController.VPN_BUNDLE) { if (p.providerBundleIdentifier == ViewController.bundleIdentifier) {
manager = m manager = m
break break
} }

View File

@ -8,7 +8,7 @@
</array> </array>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.com.privateinternetaccess.ios.demo.BasicTunnel</string> <string>group.com.algoritmico.ios.demo.BasicTunnel</string>
</array> </array>
<key>keychain-access-groups</key> <key>keychain-access-groups</key>
<array> <array>

View File

@ -6,7 +6,7 @@
// Copyright © 2018 London Trust Media. All rights reserved. // Copyright © 2018 London Trust Media. All rights reserved.
// //
import PIATunnel import TunnelKit
class PacketTunnelProvider: PIATunnelProvider { class PacketTunnelProvider: TunnelKitProvider {
} }

View File

@ -6,7 +6,7 @@
// Copyright © 2018 London Trust Media. All rights reserved. // Copyright © 2018 London Trust Media. All rights reserved.
// //
import PIATunnel import TunnelKit
class PacketTunnelProvider: PIATunnelProvider { class PacketTunnelProvider: TunnelKitProvider {
} }

View File

@ -22,10 +22,10 @@
0EB6EED41F92D43D005F6221 /* BasicTunnelExtension-macOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0EB6EECB1F92D43D005F6221 /* BasicTunnelExtension-macOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 0EB6EED41F92D43D005F6221 /* BasicTunnelExtension-macOS.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0EB6EECB1F92D43D005F6221 /* BasicTunnelExtension-macOS.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
0EB6EEDA1F92D4BA005F6221 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */; }; 0EB6EEDA1F92D4BA005F6221 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */; };
0EE878F81F936469002A0D58 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */; }; 0EE878F81F936469002A0D58 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */; };
3908146517D6E4FB2A9D937D /* Pods_iOS_BasicTunnelExtension_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 793C61EE3021675F5E1E7851 /* Pods_iOS_BasicTunnelExtension_iOS.framework */; }; 1980C130D3B43C0024E59939 /* Pods_iOS_BasicTunnel_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 775CEE5DD8FFC11266A4D7F9 /* Pods_iOS_BasicTunnel_iOS.framework */; };
7A8E24264F7886297FF7360E /* Pods_iOS_BasicTunnel_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58CD8D66DB993CAA3D95BF58 /* Pods_iOS_BasicTunnel_iOS.framework */; }; 39CD1A9C1AE5F4ABF30C4F97 /* Pods_macOS_BasicTunnelExtension_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62EFD8BCD07B20EF83F42763 /* Pods_macOS_BasicTunnelExtension_macOS.framework */; };
DDB7740C50825D06A90A8F85 /* Pods_macOS_BasicTunnel_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE4702495E15F3783163A9DD /* Pods_macOS_BasicTunnel_macOS.framework */; }; 3FB7C2F3C8148BF145FD2EF5 /* Pods_iOS_BasicTunnelExtension_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E77EB097E4DC1610F5E50F /* Pods_iOS_BasicTunnelExtension_iOS.framework */; };
ED81344C597F479F327D005F /* Pods_macOS_BasicTunnelExtension_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64C5E38D0BFB111803E5B140 /* Pods_macOS_BasicTunnelExtension_macOS.framework */; }; F66522FC3C8356D4AE7D2428 /* Pods_macOS_BasicTunnel_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4F71774745704B9CF8E36C1 /* Pods_macOS_BasicTunnel_macOS.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -95,18 +95,18 @@
0EB6EECF1F92D43D005F6221 /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = "<group>"; }; 0EB6EECF1F92D43D005F6221 /* PacketTunnelProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketTunnelProvider.swift; sourceTree = "<group>"; };
0EB6EED11F92D43D005F6221 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 0EB6EED11F92D43D005F6221 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/NetworkExtension.framework; sourceTree = DEVELOPER_DIR; }; 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/NetworkExtension.framework; sourceTree = DEVELOPER_DIR; };
5052DB12F617640E1D481436 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnel-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS.debug.xcconfig"; sourceTree = "<group>"; }; 484C87261073EF01BDC404F8 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnel-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS.debug.xcconfig"; sourceTree = "<group>"; };
58CD8D66DB993CAA3D95BF58 /* Pods_iOS_BasicTunnel_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iOS_BasicTunnel_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 51B469FAC04F49DA76B86299 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnel-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS.release.xcconfig"; sourceTree = "<group>"; };
6435864DB434E6A2405C0A03 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnelExtension-iOS/Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig"; sourceTree = "<group>"; }; 5900D83A429B34C1A705C5B7 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnelExtension-iOS/Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig"; sourceTree = "<group>"; };
644A04AFE7563DC48EFAF754 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnelExtension-macOS/Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig"; sourceTree = "<group>"; }; 61E77EB097E4DC1610F5E50F /* Pods_iOS_BasicTunnelExtension_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iOS_BasicTunnelExtension_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
64C5E38D0BFB111803E5B140 /* Pods_macOS_BasicTunnelExtension_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS_BasicTunnelExtension_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62EFD8BCD07B20EF83F42763 /* Pods_macOS_BasicTunnelExtension_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS_BasicTunnelExtension_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
793C61EE3021675F5E1E7851 /* Pods_iOS_BasicTunnelExtension_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iOS_BasicTunnelExtension_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 775CEE5DD8FFC11266A4D7F9 /* Pods_iOS_BasicTunnel_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iOS_BasicTunnel_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
86573C14FDBC5268162C4955 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnel-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS.release.xcconfig"; sourceTree = "<group>"; }; B87BC309D14310866825A4CE /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnel-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS.debug.xcconfig"; sourceTree = "<group>"; };
9E2D2F7DF58A0C0F6427E281 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnel-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS.release.xcconfig"; sourceTree = "<group>"; }; BBFD61FA7BC0A2E0FE7FD2D5 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnelExtension-macOS/Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig"; sourceTree = "<group>"; };
A288006EEDE2BE66F8448A44 /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnelExtension-macOS/Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig"; sourceTree = "<group>"; }; D1271C71EB65C3EA62965A19 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnel-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS.release.xcconfig"; sourceTree = "<group>"; };
D43202F48A06F897845BB823 /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnel-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS.debug.xcconfig"; sourceTree = "<group>"; }; DC82CED2F66990DD0622CC78 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnelExtension-iOS/Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig"; sourceTree = "<group>"; };
EACBBF6B797755CE91FFFE75 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-iOS-BasicTunnelExtension-iOS/Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig"; sourceTree = "<group>"; }; E4A33190602EEF05A835166A /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-macOS-BasicTunnelExtension-macOS/Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig"; sourceTree = "<group>"; };
FE4702495E15F3783163A9DD /* Pods_macOS_BasicTunnel_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS_BasicTunnel_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E4F71774745704B9CF8E36C1 /* Pods_macOS_BasicTunnel_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_macOS_BasicTunnel_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -114,7 +114,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
7A8E24264F7886297FF7360E /* Pods_iOS_BasicTunnel_iOS.framework in Frameworks */, 1980C130D3B43C0024E59939 /* Pods_iOS_BasicTunnel_iOS.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -122,7 +122,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
3908146517D6E4FB2A9D937D /* Pods_iOS_BasicTunnelExtension_iOS.framework in Frameworks */, 3FB7C2F3C8148BF145FD2EF5 /* Pods_iOS_BasicTunnelExtension_iOS.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -131,7 +131,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
0EB6EEDA1F92D4BA005F6221 /* NetworkExtension.framework in Frameworks */, 0EB6EEDA1F92D4BA005F6221 /* NetworkExtension.framework in Frameworks */,
DDB7740C50825D06A90A8F85 /* Pods_macOS_BasicTunnel_macOS.framework in Frameworks */, F66522FC3C8356D4AE7D2428 /* Pods_macOS_BasicTunnel_macOS.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -140,7 +140,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
0EE878F81F936469002A0D58 /* NetworkExtension.framework in Frameworks */, 0EE878F81F936469002A0D58 /* NetworkExtension.framework in Frameworks */,
ED81344C597F479F327D005F /* Pods_macOS_BasicTunnelExtension_macOS.framework in Frameworks */, 39CD1A9C1AE5F4ABF30C4F97 /* Pods_macOS_BasicTunnelExtension_macOS.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -156,7 +156,7 @@
0EB6EECC1F92D43D005F6221 /* BasicTunnelExtension-macOS */, 0EB6EECC1F92D43D005F6221 /* BasicTunnelExtension-macOS */,
0EB39FCE1F7424580023AFFC /* Products */, 0EB39FCE1F7424580023AFFC /* Products */,
B850E57E641AD1B37E79BAB5 /* Frameworks */, B850E57E641AD1B37E79BAB5 /* Frameworks */,
34D3F90470498D814E74A5C6 /* Pods */, 94C1D7B5B11C6CCE74B21D93 /* Pods */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@ -250,17 +250,17 @@
name = "Supporting files"; name = "Supporting files";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
34D3F90470498D814E74A5C6 /* Pods */ = { 94C1D7B5B11C6CCE74B21D93 /* Pods */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5052DB12F617640E1D481436 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */, 484C87261073EF01BDC404F8 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */,
9E2D2F7DF58A0C0F6427E281 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */, 51B469FAC04F49DA76B86299 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */,
6435864DB434E6A2405C0A03 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */, 5900D83A429B34C1A705C5B7 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */,
EACBBF6B797755CE91FFFE75 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */, DC82CED2F66990DD0622CC78 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */,
D43202F48A06F897845BB823 /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */, B87BC309D14310866825A4CE /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */,
86573C14FDBC5268162C4955 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */, D1271C71EB65C3EA62965A19 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */,
A288006EEDE2BE66F8448A44 /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */, E4A33190602EEF05A835166A /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */,
644A04AFE7563DC48EFAF754 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */, BBFD61FA7BC0A2E0FE7FD2D5 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */,
); );
name = Pods; name = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
@ -269,10 +269,10 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */, 0EB6EED91F92D4BA005F6221 /* NetworkExtension.framework */,
58CD8D66DB993CAA3D95BF58 /* Pods_iOS_BasicTunnel_iOS.framework */, 775CEE5DD8FFC11266A4D7F9 /* Pods_iOS_BasicTunnel_iOS.framework */,
793C61EE3021675F5E1E7851 /* Pods_iOS_BasicTunnelExtension_iOS.framework */, 61E77EB097E4DC1610F5E50F /* Pods_iOS_BasicTunnelExtension_iOS.framework */,
FE4702495E15F3783163A9DD /* Pods_macOS_BasicTunnel_macOS.framework */, E4F71774745704B9CF8E36C1 /* Pods_macOS_BasicTunnel_macOS.framework */,
64C5E38D0BFB111803E5B140 /* Pods_macOS_BasicTunnelExtension_macOS.framework */, 62EFD8BCD07B20EF83F42763 /* Pods_macOS_BasicTunnelExtension_macOS.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@ -284,12 +284,12 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 0EB39FF51F7424F80023AFFC /* Build configuration list for PBXNativeTarget "BasicTunnel-iOS" */; buildConfigurationList = 0EB39FF51F7424F80023AFFC /* Build configuration list for PBXNativeTarget "BasicTunnel-iOS" */;
buildPhases = ( buildPhases = (
8654E3AEB3A2369E83089DE1 /* [CP] Check Pods Manifest.lock */, C772E0EE406756CD998F1DFD /* [CP] Check Pods Manifest.lock */,
0EB39FE21F7424F80023AFFC /* Sources */, 0EB39FE21F7424F80023AFFC /* Sources */,
0EB39FE31F7424F80023AFFC /* Frameworks */, 0EB39FE31F7424F80023AFFC /* Frameworks */,
0EB39FE41F7424F80023AFFC /* Resources */, 0EB39FE41F7424F80023AFFC /* Resources */,
0EB3A0091F7425140023AFFC /* Embed App Extensions */, 0EB3A0091F7425140023AFFC /* Embed App Extensions */,
C01795F3F1E523D48472410F /* [CP] Embed Pods Frameworks */, A3C198CD449DD5434CB4A22E /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -305,7 +305,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 0EB3A0061F7425140023AFFC /* Build configuration list for PBXNativeTarget "BasicTunnelExtension-iOS" */; buildConfigurationList = 0EB3A0061F7425140023AFFC /* Build configuration list for PBXNativeTarget "BasicTunnelExtension-iOS" */;
buildPhases = ( buildPhases = (
D83479D2193DDBE1F61F7994 /* [CP] Check Pods Manifest.lock */, 1D6B4C41FD2B3C5D8E3FA076 /* [CP] Check Pods Manifest.lock */,
0EB39FF81F7425140023AFFC /* Sources */, 0EB39FF81F7425140023AFFC /* Sources */,
0EB39FF91F7425140023AFFC /* Frameworks */, 0EB39FF91F7425140023AFFC /* Frameworks */,
0EB39FFA1F7425140023AFFC /* Resources */, 0EB39FFA1F7425140023AFFC /* Resources */,
@ -323,12 +323,12 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 0EB6EEC61F92D417005F6221 /* Build configuration list for PBXNativeTarget "BasicTunnel-macOS" */; buildConfigurationList = 0EB6EEC61F92D417005F6221 /* Build configuration list for PBXNativeTarget "BasicTunnel-macOS" */;
buildPhases = ( buildPhases = (
52FA651791DFCB2780F05CC0 /* [CP] Check Pods Manifest.lock */, F1880CC3FE9FC942D0F802BA /* [CP] Check Pods Manifest.lock */,
0EB6EEB31F92D417005F6221 /* Sources */, 0EB6EEB31F92D417005F6221 /* Sources */,
0EB6EEB41F92D417005F6221 /* Frameworks */, 0EB6EEB41F92D417005F6221 /* Frameworks */,
0EB6EEB51F92D417005F6221 /* Resources */, 0EB6EEB51F92D417005F6221 /* Resources */,
0EB6EED81F92D43D005F6221 /* Embed App Extensions */, 0EB6EED81F92D43D005F6221 /* Embed App Extensions */,
C808C600FAEEFF648BCD5A99 /* [CP] Embed Pods Frameworks */, AC2C3BCB219270755C04C726 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -344,7 +344,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 0EB6EED51F92D43D005F6221 /* Build configuration list for PBXNativeTarget "BasicTunnelExtension-macOS" */; buildConfigurationList = 0EB6EED51F92D43D005F6221 /* Build configuration list for PBXNativeTarget "BasicTunnelExtension-macOS" */;
buildPhases = ( buildPhases = (
EEDE45EF0F6328D22A7732F5 /* [CP] Check Pods Manifest.lock */, 6A664C6A5F9D3538B3DA1207 /* [CP] Check Pods Manifest.lock */,
0EB6EEC71F92D43D005F6221 /* Sources */, 0EB6EEC71F92D43D005F6221 /* Sources */,
0EB6EEC81F92D43D005F6221 /* Frameworks */, 0EB6EEC81F92D43D005F6221 /* Frameworks */,
0EB6EEC91F92D43D005F6221 /* Resources */, 0EB6EEC91F92D43D005F6221 /* Resources */,
@ -488,96 +488,20 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
52FA651791DFCB2780F05CC0 /* [CP] Check Pods Manifest.lock */ = { 1D6B4C41FD2B3C5D8E3FA076 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputFileListPaths = (
);
inputPaths = ( inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock", "${PODS_ROOT}/Manifest.lock",
); );
name = "[CP] Check Pods Manifest.lock"; name = "[CP] Check Pods Manifest.lock";
outputPaths = ( outputFileListPaths = (
"$(DERIVED_FILE_DIR)/Pods-macOS-BasicTunnel-macOS-checkManifestLockResult.txt",
); );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
8654E3AEB3A2369E83089DE1 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-iOS-BasicTunnel-iOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
C01795F3F1E523D48472410F /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS-frameworks.sh",
"${PODS_ROOT}/OpenSSL-Apple/frameworks/iPhone/openssl.framework",
"${BUILT_PRODUCTS_DIR}/PIATunnel-iOS/PIATunnel.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyBeaver-iOS/SwiftyBeaver.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PIATunnel.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyBeaver.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
C808C600FAEEFF648BCD5A99 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS-frameworks.sh",
"${PODS_ROOT}/OpenSSL-Apple/frameworks/MacOSX/openssl.framework",
"${BUILT_PRODUCTS_DIR}/PIATunnel-macOS/PIATunnel.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyBeaver-macOS/SwiftyBeaver.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PIATunnel.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyBeaver.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
D83479D2193DDBE1F61F7994 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = ( outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-iOS-BasicTunnelExtension-iOS-checkManifestLockResult.txt", "$(DERIVED_FILE_DIR)/Pods-iOS-BasicTunnelExtension-iOS-checkManifestLockResult.txt",
); );
@ -586,16 +510,20 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
EEDE45EF0F6328D22A7732F5 /* [CP] Check Pods Manifest.lock */ = { 6A664C6A5F9D3538B3DA1207 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputFileListPaths = (
);
inputPaths = ( inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock", "${PODS_ROOT}/Manifest.lock",
); );
name = "[CP] Check Pods Manifest.lock"; name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = ( outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-macOS-BasicTunnelExtension-macOS-checkManifestLockResult.txt", "$(DERIVED_FILE_DIR)/Pods-macOS-BasicTunnelExtension-macOS-checkManifestLockResult.txt",
); );
@ -604,6 +532,102 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
A3C198CD449DD5434CB4A22E /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS-frameworks.sh",
"${PODS_ROOT}/OpenSSL-Apple/frameworks/iPhone/openssl.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyBeaver-iOS/SwiftyBeaver.framework",
"${BUILT_PRODUCTS_DIR}/TunnelKit-iOS/TunnelKit.framework",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
);
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyBeaver.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TunnelKit.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iOS-BasicTunnel-iOS/Pods-iOS-BasicTunnel-iOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
AC2C3BCB219270755C04C726 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS-frameworks.sh",
"${PODS_ROOT}/OpenSSL-Apple/frameworks/MacOSX/openssl.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyBeaver-macOS/SwiftyBeaver.framework",
"${BUILT_PRODUCTS_DIR}/TunnelKit-macOS/TunnelKit.framework",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
);
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/openssl.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyBeaver.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TunnelKit.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-macOS-BasicTunnel-macOS/Pods-macOS-BasicTunnel-macOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
C772E0EE406756CD998F1DFD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-iOS-BasicTunnel-iOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
F1880CC3FE9FC942D0F802BA /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-macOS-BasicTunnel-macOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
@ -797,15 +821,15 @@
}; };
0EB39FF61F7424F80023AFFC /* Debug */ = { 0EB39FF61F7424F80023AFFC /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 5052DB12F617640E1D481436 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */; baseConfigurationReference = 484C87261073EF01BDC404F8 /* Pods-iOS-BasicTunnel-iOS.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "BasicTunnel-iOS/BasicTunnel-iOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnel-iOS/BasicTunnel-iOS.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnel-iOS/Info.plist"; INFOPLIST_FILE = "BasicTunnel-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.ios.demo.BasicTunnel; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.demo.BasicTunnel;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
@ -813,15 +837,15 @@
}; };
0EB39FF71F7424F80023AFFC /* Release */ = { 0EB39FF71F7424F80023AFFC /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 9E2D2F7DF58A0C0F6427E281 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */; baseConfigurationReference = 51B469FAC04F49DA76B86299 /* Pods-iOS-BasicTunnel-iOS.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "BasicTunnel-iOS/BasicTunnel-iOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnel-iOS/BasicTunnel-iOS.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnel-iOS/Info.plist"; INFOPLIST_FILE = "BasicTunnel-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.ios.demo.BasicTunnel; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.demo.BasicTunnel;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
@ -829,14 +853,14 @@
}; };
0EB3A0071F7425140023AFFC /* Debug */ = { 0EB3A0071F7425140023AFFC /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 6435864DB434E6A2405C0A03 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */; baseConfigurationReference = 5900D83A429B34C1A705C5B7 /* Pods-iOS-BasicTunnelExtension-iOS.debug.xcconfig */;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-iOS/BasicTunnelExtension-iOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-iOS/BasicTunnelExtension-iOS.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnelExtension-iOS/Info.plist"; INFOPLIST_FILE = "BasicTunnelExtension-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.ios.demo.BasicTunnel.BasicTunnelExtension; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.demo.BasicTunnel.BasicTunnelExtension;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
@ -845,14 +869,14 @@
}; };
0EB3A0081F7425140023AFFC /* Release */ = { 0EB3A0081F7425140023AFFC /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = EACBBF6B797755CE91FFFE75 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */; baseConfigurationReference = DC82CED2F66990DD0622CC78 /* Pods-iOS-BasicTunnelExtension-iOS.release.xcconfig */;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-iOS/BasicTunnelExtension-iOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-iOS/BasicTunnelExtension-iOS.entitlements";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnelExtension-iOS/Info.plist"; INFOPLIST_FILE = "BasicTunnelExtension-iOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.ios.demo.BasicTunnel.BasicTunnelExtension; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.ios.demo.BasicTunnel.BasicTunnelExtension;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
@ -861,17 +885,17 @@
}; };
0EB6EEC41F92D417005F6221 /* Debug */ = { 0EB6EEC41F92D417005F6221 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = D43202F48A06F897845BB823 /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */; baseConfigurationReference = B87BC309D14310866825A4CE /* Pods-macOS-BasicTunnel-macOS.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "BasicTunnel-macOS/BasicTunnel-macOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnel-macOS/BasicTunnel-macOS.entitlements";
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnel-macOS/Info.plist"; INFOPLIST_FILE = "BasicTunnel-macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.macos.demo.BasicTunnel; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.demo.BasicTunnel;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx; SDKROOT = macosx;
@ -880,17 +904,17 @@
}; };
0EB6EEC51F92D417005F6221 /* Release */ = { 0EB6EEC51F92D417005F6221 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 86573C14FDBC5268162C4955 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */; baseConfigurationReference = D1271C71EB65C3EA62965A19 /* Pods-macOS-BasicTunnel-macOS.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "BasicTunnel-macOS/BasicTunnel-macOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnel-macOS/BasicTunnel-macOS.entitlements";
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnel-macOS/Info.plist"; INFOPLIST_FILE = "BasicTunnel-macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.macos.demo.BasicTunnel; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.demo.BasicTunnel;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx; SDKROOT = macosx;
@ -899,15 +923,15 @@
}; };
0EB6EED61F92D43D005F6221 /* Debug */ = { 0EB6EED61F92D43D005F6221 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = A288006EEDE2BE66F8448A44 /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */; baseConfigurationReference = E4A33190602EEF05A835166A /* Pods-macOS-BasicTunnelExtension-macOS.debug.xcconfig */;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-macOS/BasicTunnelExtension-macOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-macOS/BasicTunnelExtension-macOS.entitlements";
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnelExtension-macOS/Info.plist"; INFOPLIST_FILE = "BasicTunnelExtension-macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.macos.demo.BasicTunnel.BasicTunnelExtension; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.demo.BasicTunnel.BasicTunnelExtension;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx; SDKROOT = macosx;
@ -917,15 +941,15 @@
}; };
0EB6EED71F92D43D005F6221 /* Release */ = { 0EB6EED71F92D43D005F6221 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 644A04AFE7563DC48EFAF754 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */; baseConfigurationReference = BBFD61FA7BC0A2E0FE7FD2D5 /* Pods-macOS-BasicTunnelExtension-macOS.release.xcconfig */;
buildSettings = { buildSettings = {
CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-macOS/BasicTunnelExtension-macOS.entitlements"; CODE_SIGN_ENTITLEMENTS = "BasicTunnelExtension-macOS/BasicTunnelExtension-macOS.entitlements";
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Mac Developer";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 5357M5NW9W; DEVELOPMENT_TEAM = DTDYD63ZX9;
INFOPLIST_FILE = "BasicTunnelExtension-macOS/Info.plist"; INFOPLIST_FILE = "BasicTunnelExtension-macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.privateinternetaccess.macos.demo.BasicTunnel.BasicTunnelExtension; PRODUCT_BUNDLE_IDENTIFIER = com.algoritmico.macos.demo.BasicTunnel.BasicTunnelExtension;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx; SDKROOT = macosx;

View File

@ -5,7 +5,7 @@ abstract_target 'iOS' do
platform :ios, '9.0' platform :ios, '9.0'
target 'BasicTunnelExtension-iOS' do target 'BasicTunnelExtension-iOS' do
pod 'PIATunnel', :path => '..' pod 'TunnelKit', :path => '..'
end end
target 'BasicTunnel-iOS' do target 'BasicTunnel-iOS' do
end end
@ -15,7 +15,7 @@ abstract_target 'macOS' do
platform :osx, '10.11' platform :osx, '10.11'
target 'BasicTunnelExtension-macOS' do target 'BasicTunnelExtension-macOS' do
pod 'PIATunnel', :path => '..' pod 'TunnelKit', :path => '..'
end end
target 'BasicTunnel-macOS' do target 'BasicTunnel-macOS' do
end end

View File

@ -1,18 +1,18 @@
PODS: PODS:
- OpenSSL-Apple (1.1.0h) - OpenSSL-Apple (1.1.0h)
- PIATunnel (1.1.6): - SwiftyBeaver (1.6.0)
- PIATunnel/AppExtension (= 1.1.6) - TunnelKit (1.0.0):
- PIATunnel/Core (= 1.1.6) - TunnelKit/AppExtension (= 1.0.0)
- PIATunnel/AppExtension (1.1.6): - TunnelKit/Core (= 1.0.0)
- PIATunnel/Core - TunnelKit/AppExtension (1.0.0):
- SwiftyBeaver - SwiftyBeaver
- PIATunnel/Core (1.1.6): - TunnelKit/Core
- TunnelKit/Core (1.0.0):
- OpenSSL-Apple (~> 1.1.0h) - OpenSSL-Apple (~> 1.1.0h)
- SwiftyBeaver - SwiftyBeaver
- SwiftyBeaver (1.6.0)
DEPENDENCIES: DEPENDENCIES:
- PIATunnel (from `..`) - TunnelKit (from `..`)
SPEC REPOS: SPEC REPOS:
https://github.com/cocoapods/specs.git: https://github.com/cocoapods/specs.git:
@ -20,14 +20,14 @@ SPEC REPOS:
- SwiftyBeaver - SwiftyBeaver
EXTERNAL SOURCES: EXTERNAL SOURCES:
PIATunnel: TunnelKit:
:path: ".." :path: ".."
SPEC CHECKSUMS: SPEC CHECKSUMS:
OpenSSL-Apple: cd153d705ef350eb834ae7ff5f21f792b51ed208 OpenSSL-Apple: cd153d705ef350eb834ae7ff5f21f792b51ed208
PIATunnel: b98780a58c8826bd82f1e15878078997ed172680
SwiftyBeaver: e45759613e50b522b0e6f53b1f0f14389b45ca34 SwiftyBeaver: e45759613e50b522b0e6f53b1f0f14389b45ca34
TunnelKit: 79e018dba82d9a2335daf5c55c473527cff52b73
PODFILE CHECKSUM: 1199e89f72f37e986463243abe5442ffdc81274c PODFILE CHECKSUM: dbd445ce3249028c60f04276181924bb9bfc726d
COCOAPODS: 1.5.3 COCOAPODS: 1.5.3