Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2018
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. import NetworkExtension
  2. import UIKit
  3. import OpenVPNAdapter
  4. import WebKit
  5.  
  6. class ViewController: UIViewController {
  7.  
  8. @IBOutlet weak var webView: WKWebView!
  9.  
  10. var providerManager: NETunnelProviderManager? {
  11. didSet {
  12. provideVPNSettings()
  13. }
  14. }
  15.  
  16. lazy var options = ["Settings": getOpenVPNData()!,
  17. "Username": "anton.klymenko", // anton.klymenko-su-kh
  18. "Password": "+M6O$aIVC8^bMj20"] as! [String: NSObject]
  19.  
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22. setupDelegate()
  23.  
  24. startVPN()
  25. }
  26.  
  27. func startVPN() {
  28. NETunnelProviderManager.loadAllFromPreferences { (managers, error) in
  29. guard error == nil else {
  30. return
  31. }
  32. self.providerManager?.isOnDemandEnabled = true
  33.  
  34. if managers?.first == nil {
  35. self.providerManager = NETunnelProviderManager()
  36. } else {
  37. self.providerManager = managers?.first
  38. }
  39. }
  40. }
  41.  
  42. func provideVPNSettings() {
  43. providerManager?.loadFromPreferences { (error) in
  44. guard error == nil else {
  45. print("loadFromPreferences failed: \(String(describing: error?.localizedDescription)) ")
  46. return
  47. }
  48. }
  49.  
  50. guard
  51. let configurationFileURL = Bundle.main.url(forResource: "anton.klymenko-su-kh", withExtension: "ovpn"),
  52. let configurationFileContent = try? Data(contentsOf: configurationFileURL)
  53. else {
  54. fatalError()
  55. }
  56.  
  57. let tunnelProtocol = NETunnelProviderProtocol()
  58. tunnelProtocol.serverAddress = ""
  59. tunnelProtocol.providerBundleIdentifier = "Sigma-Software.ETS-Mobile.VPN.Extension"
  60. tunnelProtocol.providerConfiguration = ["ovpn": configurationFileContent]
  61. tunnelProtocol.username = "anton.klymenko"
  62. tunnelProtocol.passwordReference = Data("+M6O$aIVC8^bMj20".utf8)
  63.  
  64.  
  65. // tunnelProtocol.passwordReference = ",YkGu&8+lCl6hlU8".data(using: .utf8)
  66. print("UserName: \(String(describing: tunnelProtocol.username))")
  67. print("Password: \(String(describing: tunnelProtocol.passwordReference))")
  68.  
  69. self.providerManager?.protocolConfiguration = tunnelProtocol
  70. self.providerManager?.localizedDescription = "OpenVPN ETS"
  71. self.providerManager?.isEnabled = true
  72.  
  73. self.providerManager?.saveToPreferences(completionHandler: { error in
  74. if error != nil {
  75. print(error ?? "Error Line: 68")
  76. } else {
  77. print("providerManager.saveToPreferences is OK")
  78. }
  79. })
  80.  
  81. do {
  82. try self.providerManager?.connection.startVPNTunnel()
  83. } catch {
  84. print("startVPNTunnel failed")
  85. }
  86. }
  87.  
  88. func setupDelegate() {
  89. webView.navigationDelegate = self
  90. }
  91.  
  92. @IBAction func goToGoole(_ sender: UIButton) {
  93. let googleUrl = URL(string: "https://google.com")
  94. let googleRequest = URLRequest(url: googleUrl!)
  95. webView.load(googleRequest)
  96. }
  97.  
  98. @IBAction func goToETS(_ sender: UIButton) {
  99. let etsUrl = URL(string: "https://blog.i.sigmaukraine.com/")
  100. let etsRequest = URLRequest(url: etsUrl!)
  101. webView.load(etsRequest)
  102. }
  103.  
  104. func getOpenVPNData() -> Data? {
  105. if let path = Bundle.main.path(forResource: "anton.klymenko-su-kh", ofType: "ovpn") {
  106. do {
  107. let fileSource = try Data(contentsOf: URL(fileURLWithPath: path))
  108. return fileSource
  109. } catch {
  110. print(error)
  111. }
  112. }
  113. return nil
  114. }
  115. }
  116.  
  117. extension ViewController: WKNavigationDelegate {
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement