Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import NetworkExtension
- import UIKit
- import OpenVPNAdapter
- import WebKit
- class ViewController: UIViewController {
- @IBOutlet weak var webView: WKWebView!
- var providerManager: NETunnelProviderManager? {
- didSet {
- provideVPNSettings()
- }
- }
- lazy var options = ["Settings": getOpenVPNData()!,
- "Username": "anton.klymenko", // anton.klymenko-su-kh
- "Password": "+M6O$aIVC8^bMj20"] as! [String: NSObject]
- override func viewDidLoad() {
- super.viewDidLoad()
- setupDelegate()
- startVPN()
- }
- func startVPN() {
- NETunnelProviderManager.loadAllFromPreferences { (managers, error) in
- guard error == nil else {
- return
- }
- self.providerManager?.isOnDemandEnabled = true
- if managers?.first == nil {
- self.providerManager = NETunnelProviderManager()
- } else {
- self.providerManager = managers?.first
- }
- }
- }
- func provideVPNSettings() {
- providerManager?.loadFromPreferences { (error) in
- guard error == nil else {
- print("loadFromPreferences failed: \(String(describing: error?.localizedDescription)) ")
- return
- }
- }
- guard
- let configurationFileURL = Bundle.main.url(forResource: "anton.klymenko-su-kh", withExtension: "ovpn"),
- let configurationFileContent = try? Data(contentsOf: configurationFileURL)
- else {
- fatalError()
- }
- let tunnelProtocol = NETunnelProviderProtocol()
- tunnelProtocol.serverAddress = ""
- tunnelProtocol.providerBundleIdentifier = "Sigma-Software.ETS-Mobile.VPN.Extension"
- tunnelProtocol.providerConfiguration = ["ovpn": configurationFileContent]
- tunnelProtocol.username = "anton.klymenko"
- tunnelProtocol.passwordReference = Data("+M6O$aIVC8^bMj20".utf8)
- // tunnelProtocol.passwordReference = ",YkGu&8+lCl6hlU8".data(using: .utf8)
- print("UserName: \(String(describing: tunnelProtocol.username))")
- print("Password: \(String(describing: tunnelProtocol.passwordReference))")
- self.providerManager?.protocolConfiguration = tunnelProtocol
- self.providerManager?.localizedDescription = "OpenVPN ETS"
- self.providerManager?.isEnabled = true
- self.providerManager?.saveToPreferences(completionHandler: { error in
- if error != nil {
- print(error ?? "Error Line: 68")
- } else {
- print("providerManager.saveToPreferences is OK")
- }
- })
- do {
- try self.providerManager?.connection.startVPNTunnel()
- } catch {
- print("startVPNTunnel failed")
- }
- }
- func setupDelegate() {
- webView.navigationDelegate = self
- }
- @IBAction func goToGoole(_ sender: UIButton) {
- let googleUrl = URL(string: "https://google.com")
- let googleRequest = URLRequest(url: googleUrl!)
- webView.load(googleRequest)
- }
- @IBAction func goToETS(_ sender: UIButton) {
- let etsUrl = URL(string: "https://blog.i.sigmaukraine.com/")
- let etsRequest = URLRequest(url: etsUrl!)
- webView.load(etsRequest)
- }
- func getOpenVPNData() -> Data? {
- if let path = Bundle.main.path(forResource: "anton.klymenko-su-kh", ofType: "ovpn") {
- do {
- let fileSource = try Data(contentsOf: URL(fileURLWithPath: path))
- return fileSource
- } catch {
- print(error)
- }
- }
- return nil
- }
- }
- extension ViewController: WKNavigationDelegate {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement