diff --git a/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift b/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift index 32d32eca..5fcf3893 100644 --- a/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift +++ b/Passepartout-iOS/Scenes/Organizer/OrganizerViewController.swift @@ -109,16 +109,16 @@ class OrganizerViewController: UITableViewController, TableModelHost { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - if !didShowSubreddit && !TransientStore.shared.didHandleSubreddit { + if !didShowSubreddit && !TransientStore.didHandleSubreddit { didShowSubreddit = true let alert = Macros.alert(L10n.Reddit.title, L10n.Reddit.message) alert.addDefaultAction(L10n.Reddit.Buttons.subscribe) { - TransientStore.shared.didHandleSubreddit = true + TransientStore.didHandleSubreddit = true self.subscribeSubreddit() } alert.addAction(L10n.Reddit.Buttons.never) { - TransientStore.shared.didHandleSubreddit = true + TransientStore.didHandleSubreddit = true } alert.addCancelAction(L10n.Reddit.Buttons.remind) present(alert, animated: true, completion: nil) diff --git a/Passepartout-iOS/Scenes/ServiceViewController.swift b/Passepartout-iOS/Scenes/ServiceViewController.swift index 1d37b94d..6057b475 100644 --- a/Passepartout-iOS/Scenes/ServiceViewController.swift +++ b/Passepartout-iOS/Scenes/ServiceViewController.swift @@ -360,7 +360,7 @@ class ServiceViewController: UIViewController, TableModelHost { private func testInternetConnectivity() { let hud = HUD() - Utils.checkConnectivityURL(AppConstants.VPN.connectivityURL, timeout: AppConstants.VPN.connectivityTimeout) { + Utils.checkConnectivityURL(AppConstants.Web.connectivityURL, timeout: AppConstants.Web.connectivityTimeout) { hud.hide() let V = L10n.Service.Alerts.TestConnectivity.Messages.self @@ -401,9 +401,8 @@ class ServiceViewController: UIViewController, TableModelHost { } private func togglePrivateDataMasking(cell: ToggleTableViewCell) { - TransientStore.shared.masksPrivateData = cell.isOn - AppConstants.VPN.baseConfiguration.masksPrivateData = cell.isOn - service.baseConfiguration = AppConstants.VPN.baseConfiguration.build() + TransientStore.masksPrivateData = cell.isOn + service.baseConfiguration = TransientStore.baseVPNConfiguration.build() // for privacy, delete potentially unmasked data if vpn.status != .disconnected { @@ -739,7 +738,7 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog case .masksPrivateData: let cell = Cells.toggle.dequeue(from: tableView, for: indexPath, tag: row.rawValue, delegate: self) cell.caption = L10n.Service.Cells.MasksPrivateData.caption - cell.isOn = TransientStore.shared.masksPrivateData + cell.isOn = TransientStore.masksPrivateData return cell // feedback diff --git a/Passepartout/Sources/AppConstants.swift b/Passepartout/Sources/AppConstants.swift index 38766d07..f6e0fac6 100644 --- a/Passepartout/Sources/AppConstants.swift +++ b/Passepartout/Sources/AppConstants.swift @@ -46,32 +46,6 @@ public class AppConstants { public static let hostsDirectory = "Hosts" } - public class VPN { - public static var baseConfiguration: TunnelKitProvider.ConfigurationBuilder = { - let sessionBuilder = SessionProxy.ConfigurationBuilder(ca: CryptoContainer(pem: "")) - var builder = TunnelKitProvider.ConfigurationBuilder(sessionConfiguration: sessionBuilder.build()) - builder.mtu = 1250 - builder.shouldDebug = true -// builder.debugLogFormat = "$Dyyyy-MM-dd HH:mm:ss.SSS$d $L $N.$F:$l - $M" -// builder.debugLogFormat = "$DHH:mm:ss$d $N.$F:$l - $M" - builder.debugLogFormat = Log.debugFormat - builder.masksPrivateData = TransientStore.shared.masksPrivateData - return builder - }() - - private static let connectivityStrings: [String] = [ - "https://www.amazon.com", - "https://www.google.com", - "https://www.twitter.com", - "https://www.facebook.com", - "https://www.instagram.com" - ] - - public static let connectivityURL = URL(string: connectivityStrings.customRandomElement())! - - public static let connectivityTimeout: TimeInterval = 10.0 - } - public class Web { private static let version = "v1" @@ -84,6 +58,18 @@ public class AppConstants { public static let timeout: TimeInterval = 3.0 public static let minimumUpdateInterval: TimeInterval = 600.0 // 10 minutes + + private static let connectivityStrings: [String] = [ + "https://www.amazon.com", + "https://www.google.com", + "https://www.twitter.com", + "https://www.facebook.com", + "https://www.instagram.com" + ] + + public static let connectivityURL = URL(string: connectivityStrings.customRandomElement())! + + public static let connectivityTimeout: TimeInterval = 10.0 } public class Log { diff --git a/Passepartout/Sources/Model/TransientStore.swift b/Passepartout/Sources/Model/TransientStore.swift index ae53a30c..df93dad2 100644 --- a/Passepartout/Sources/Model/TransientStore.swift +++ b/Passepartout/Sources/Model/TransientStore.swift @@ -24,6 +24,7 @@ // import Foundation +import TunnelKit import SwiftyBeaver private let log = SwiftyBeaver.self @@ -43,7 +44,7 @@ public class TransientStore { public let service: ConnectionService - public var didHandleSubreddit: Bool { + public static var didHandleSubreddit: Bool { get { return UserDefaults.standard.bool(forKey: Keys.didHandleSubreddit) } @@ -52,7 +53,7 @@ public class TransientStore { } } - public var masksPrivateData: Bool { + public static var masksPrivateData: Bool { get { return UserDefaults.standard.bool(forKey: Keys.masksPrivateData) } @@ -61,6 +62,18 @@ public class TransientStore { } } + public static var baseVPNConfiguration: TunnelKitProvider.ConfigurationBuilder { + let sessionBuilder = SessionProxy.ConfigurationBuilder(ca: CryptoContainer(pem: "")) + var builder = TunnelKitProvider.ConfigurationBuilder(sessionConfiguration: sessionBuilder.build()) + builder.mtu = 1250 + builder.shouldDebug = true +// builder.debugLogFormat = "$Dyyyy-MM-dd HH:mm:ss.SSS$d $L $N.$F:$l - $M" +// builder.debugLogFormat = "$DHH:mm:ss$d $N.$F:$l - $M" + builder.debugLogFormat = AppConstants.Log.debugFormat + builder.masksPrivateData = masksPrivateData + return builder + } + private init() { UserDefaults.standard.register(defaults: [ Keys.didHandleSubreddit: false, @@ -72,7 +85,7 @@ public class TransientStore { // this must be graceful ConnectionService.migrateJSON(from: TransientStore.serviceURL, to: TransientStore.serviceURL) - let cfg = AppConstants.VPN.baseConfiguration.build() + let cfg = TransientStore.baseVPNConfiguration.build() do { let data = try Data(contentsOf: TransientStore.serviceURL) if let content = String(data: data, encoding: .utf8) {