Merge branch 'minor-fixes'

This commit is contained in:
Davide De Rosa 2018-10-28 14:50:24 +01:00
commit 571cee7818
10 changed files with 174 additions and 261 deletions

View File

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Add current Wi-Fi to trusted networks list but don't trust it by default.
## 1.0 beta 1159 (2018-10-27) ## 1.0 beta 1159 (2018-10-27)
### Fixed ### Fixed

View File

@ -0,0 +1,75 @@
// swiftlint:disable all
// Generated using SwiftGen, by O.Halligon https://github.com/SwiftGen/SwiftGen
// swiftlint:disable sorted_imports
import Foundation
import UIKit
// swiftlint:disable superfluous_disable_command
// swiftlint:disable file_length
// MARK: - Storyboard Scenes
// swiftlint:disable explicit_type_interface identifier_name line_length type_body_length type_name
internal enum StoryboardScene {
internal enum Main: StoryboardType {
internal static let storyboardName = "Main"
internal static let initialScene = InitialSceneType<UIKit.UISplitViewController>(storyboard: Main.self)
internal static let accountIdentifier = SceneType<AccountViewController>(storyboard: Main.self, identifier: "AccountIdentifier")
internal static let configurationIdentifier = SceneType<ConfigurationViewController>(storyboard: Main.self, identifier: "ConfigurationIdentifier")
internal static let serviceIdentifier = SceneType<UIKit.UINavigationController>(storyboard: Main.self, identifier: "ServiceIdentifier")
}
internal enum Organizer: StoryboardType {
internal static let storyboardName = "Organizer"
internal static let initialScene = InitialSceneType<UIKit.UINavigationController>(storyboard: Organizer.self)
internal static let provider = SceneType<UIKit.UINavigationController>(storyboard: Organizer.self, identifier: "Provider")
internal static let wizardHostIdentifier = SceneType<UIKit.UINavigationController>(storyboard: Organizer.self, identifier: "WizardHostIdentifier")
}
}
// swiftlint:enable explicit_type_interface identifier_name line_length type_body_length type_name
// MARK: - Implementation Details
internal protocol StoryboardType {
static var storyboardName: String { get }
}
internal extension StoryboardType {
static var storyboard: UIStoryboard {
let name = self.storyboardName
return UIStoryboard(name: name, bundle: Bundle(for: BundleToken.self))
}
}
internal struct SceneType<T: UIViewController> {
internal let storyboard: StoryboardType.Type
internal let identifier: String
internal func instantiate() -> T {
let identifier = self.identifier
guard let controller = storyboard.storyboard.instantiateViewController(withIdentifier: identifier) as? T else {
fatalError("ViewController '\(identifier)' is not of the expected class \(T.self).")
}
return controller
}
}
internal struct InitialSceneType<T: UIViewController> {
internal let storyboard: StoryboardType.Type
internal func instantiate() -> T {
guard let controller = storyboard.storyboard.instantiateInitialViewController() as? T else {
fatalError("ViewController is not of the expected class \(T.self).")
}
return controller
}
}
private final class BundleToken {}

View File

@ -0,0 +1,54 @@
// swiftlint:disable all
// Generated using SwiftGen, by O.Halligon https://github.com/SwiftGen/SwiftGen
// swiftlint:disable sorted_imports
import Foundation
import UIKit
// swiftlint:disable superfluous_disable_command
// swiftlint:disable file_length
// MARK: - Storyboard Segues
// swiftlint:disable explicit_type_interface identifier_name line_length type_body_length type_name
internal enum StoryboardSegue {
internal enum Main: String, SegueType {
case accountSegueIdentifier = "AccountSegueIdentifier"
case debugLogSegueIdentifier = "DebugLogSegueIdentifier"
case endpointSegueIdentifier = "EndpointSegueIdentifier"
case hostParametersSegueIdentifier = "HostParametersSegueIdentifier"
case providerPoolSegueIdentifier = "ProviderPoolSegueIdentifier"
case providerPresetSegueIdentifier = "ProviderPresetSegueIdentifier"
}
internal enum Organizer: String, SegueType {
case aboutSegueIdentifier = "AboutSegueIdentifier"
case addProviderSegueIdentifier = "AddProviderSegueIdentifier"
case creditsSegueIdentifier = "CreditsSegueIdentifier"
case disclaimerSegueIdentifier = "DisclaimerSegueIdentifier"
case importHostSegueIdentifier = "ImportHostSegueIdentifier"
case selectProfileSegueIdentifier = "SelectProfileSegueIdentifier"
case showImportedHostsSegueIdentifier = "ShowImportedHostsSegueIdentifier"
case versionSegueIdentifier = "VersionSegueIdentifier"
}
}
// swiftlint:enable explicit_type_interface identifier_name line_length type_body_length type_name
// MARK: - Implementation Details
internal protocol SegueType: RawRepresentable {}
internal extension UIViewController {
func perform<S: SegueType>(segue: S, sender: Any? = nil) where S.RawValue == String {
let identifier = segue.rawValue
performSegue(withIdentifier: identifier, sender: sender)
}
}
internal extension SegueType where RawValue == String {
init?(_ segue: UIStoryboardSegue) {
guard let identifier = segue.identifier else { return nil }
self.init(rawValue: identifier)
}
}
private final class BundleToken {}

View File

@ -1,101 +0,0 @@
// Generated using SwiftGen, by O.Halligon https://github.com/SwiftGen/SwiftGen
// swiftlint:disable sorted_imports
import Foundation
import UIKit
import Passepartout_iOS
// swiftlint:disable superfluous_disable_command
// swiftlint:disable file_length
internal protocol StoryboardType {
static var storyboardName: String { get }
}
internal extension StoryboardType {
static var storyboard: UIStoryboard {
let name = self.storyboardName
return UIStoryboard(name: name, bundle: Bundle(for: BundleToken.self))
}
}
internal struct SceneType<T: Any> {
internal let storyboard: StoryboardType.Type
internal let identifier: String
internal func instantiate() -> T {
let identifier = self.identifier
guard let controller = storyboard.storyboard.instantiateViewController(withIdentifier: identifier) as? T else {
fatalError("ViewController '\(identifier)' is not of the expected class \(T.self).")
}
return controller
}
}
internal struct InitialSceneType<T: Any> {
internal let storyboard: StoryboardType.Type
internal func instantiate() -> T {
guard let controller = storyboard.storyboard.instantiateInitialViewController() as? T else {
fatalError("ViewController is not of the expected class \(T.self).")
}
return controller
}
}
internal protocol SegueType: RawRepresentable { }
internal extension UIViewController {
func perform<S: SegueType>(segue: S, sender: Any? = nil) where S.RawValue == String {
let identifier = segue.rawValue
performSegue(withIdentifier: identifier, sender: sender)
}
}
// swiftlint:disable explicit_type_interface identifier_name line_length type_body_length type_name
internal enum StoryboardScene {
internal enum Main: StoryboardType {
internal static let storyboardName = "Main"
internal static let initialScene = InitialSceneType<UISplitViewController>(storyboard: Main.self)
internal static let accountIdentifier = SceneType<Passepartout_iOS.AccountViewController>(storyboard: Main.self, identifier: "AccountIdentifier")
internal static let configurationIdentifier = SceneType<Passepartout_iOS.ConfigurationViewController>(storyboard: Main.self, identifier: "ConfigurationIdentifier")
internal static let serviceIdentifier = SceneType<UINavigationController>(storyboard: Main.self, identifier: "ServiceIdentifier")
}
internal enum Organizer: StoryboardType {
internal static let storyboardName = "Organizer"
internal static let initialScene = InitialSceneType<UINavigationController>(storyboard: Organizer.self)
internal static let provider = SceneType<UINavigationController>(storyboard: Organizer.self, identifier: "Provider")
internal static let wizardHostIdentifier = SceneType<UINavigationController>(storyboard: Organizer.self, identifier: "WizardHostIdentifier")
}
}
internal enum StoryboardSegue {
internal enum Main: String, SegueType {
case accountSegueIdentifier = "AccountSegueIdentifier"
case debugLogSegueIdentifier = "DebugLogSegueIdentifier"
case endpointSegueIdentifier = "EndpointSegueIdentifier"
case hostParametersSegueIdentifier = "HostParametersSegueIdentifier"
case providerPoolSegueIdentifier = "ProviderPoolSegueIdentifier"
case providerPresetSegueIdentifier = "ProviderPresetSegueIdentifier"
}
internal enum Organizer: String, SegueType {
case aboutSegueIdentifier = "AboutSegueIdentifier"
case addProviderSegueIdentifier = "AddProviderSegueIdentifier"
case creditsSegueIdentifier = "CreditsSegueIdentifier"
case disclaimerSegueIdentifier = "DisclaimerSegueIdentifier"
case importHostSegueIdentifier = "ImportHostSegueIdentifier"
case selectProfileSegueIdentifier = "SelectProfileSegueIdentifier"
case showImportedHostsSegueIdentifier = "ShowImportedHostsSegueIdentifier"
case versionSegueIdentifier = "VersionSegueIdentifier"
}
}
// swiftlint:enable explicit_type_interface identifier_name line_length type_body_length type_name
private final class BundleToken {}

View File

@ -9,7 +9,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
0E05C5D420D1645F006EE732 /* FieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05C5CE20D139AF006EE732 /* FieldTableViewCell.swift */; }; 0E05C5D420D1645F006EE732 /* FieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05C5CE20D139AF006EE732 /* FieldTableViewCell.swift */; };
0E05C5D520D1645F006EE732 /* SettingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED824CD20D12DBE00F2FE9E /* SettingTableViewCell.swift */; }; 0E05C5D520D1645F006EE732 /* SettingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED824CD20D12DBE00F2FE9E /* SettingTableViewCell.swift */; };
0E05C5D620D1645F006EE732 /* SwiftGen+Storyboards.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE320C89028004C739C /* SwiftGen+Storyboards.swift */; }; 0E05C5D620D1645F006EE732 /* SwiftGen+Scenes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE320C89028004C739C /* SwiftGen+Scenes.swift */; };
0E05C5D720D1645F006EE732 /* ToggleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED824C920D12B8700F2FE9E /* ToggleTableViewCell.swift */; }; 0E05C5D720D1645F006EE732 /* ToggleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED824C920D12B8700F2FE9E /* ToggleTableViewCell.swift */; };
0E05C5DC20D198B9006EE732 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0E05C5DF20D198B9006EE732 /* Localizable.strings */; }; 0E05C5DC20D198B9006EE732 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0E05C5DF20D198B9006EE732 /* Localizable.strings */; };
0E05C5E420D1993C006EE732 /* SwiftGen+Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05C5E320D1993C006EE732 /* SwiftGen+Strings.swift */; }; 0E05C5E420D1993C006EE732 /* SwiftGen+Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E05C5E320D1993C006EE732 /* SwiftGen+Strings.swift */; };
@ -85,6 +85,7 @@
0EDE8DE720C93945004C739C /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE620C93945004C739C /* Credentials.swift */; }; 0EDE8DE720C93945004C739C /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DE620C93945004C739C /* Credentials.swift */; };
0EDE8DEE20C93E4C004C739C /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; }; 0EDE8DEE20C93E4C004C739C /* GroupConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */; };
0EE3BBB2215ED3A900F30952 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */; }; 0EE3BBB2215ED3A900F30952 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */; };
0EF56BBB2185AC8500B0C8AB /* SwiftGen+Segues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF56BBA2185AC8500B0C8AB /* SwiftGen+Segues.swift */; };
0EF5CF252141CE58004FF1BD /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF5CF242141CE58004FF1BD /* HUD.swift */; }; 0EF5CF252141CE58004FF1BD /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF5CF242141CE58004FF1BD /* HUD.swift */; };
0EF5CF292141F31F004FF1BD /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4FD7ED20D539A0002221FF /* Utils.swift */; }; 0EF5CF292141F31F004FF1BD /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E4FD7ED20D539A0002221FF /* Utils.swift */; };
0EFD943E215BE10800529B64 /* IssueReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFD943D215BE10800529B64 /* IssueReporter.swift */; }; 0EFD943E215BE10800529B64 /* IssueReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EFD943D215BE10800529B64 /* IssueReporter.swift */; };
@ -208,10 +209,11 @@
0EDE8DC520C86910004C739C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 0EDE8DC520C86910004C739C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
0EDE8DD220C86978004C739C /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; 0EDE8DD220C86978004C739C /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; };
0EDE8DE220C86A13004C739C /* Passepartout.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Passepartout.entitlements; sourceTree = "<group>"; }; 0EDE8DE220C86A13004C739C /* Passepartout.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Passepartout.entitlements; sourceTree = "<group>"; };
0EDE8DE320C89028004C739C /* SwiftGen+Storyboards.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Storyboards.swift"; sourceTree = "<group>"; }; 0EDE8DE320C89028004C739C /* SwiftGen+Scenes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Scenes.swift"; sourceTree = "<group>"; };
0EDE8DE620C93945004C739C /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = "<group>"; }; 0EDE8DE620C93945004C739C /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = "<group>"; };
0EDE8DED20C93E4C004C739C /* GroupConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupConstants.swift; sourceTree = "<group>"; }; 0EDE8DED20C93E4C004C739C /* GroupConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupConstants.swift; sourceTree = "<group>"; };
0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = "<group>"; }; 0EE3BBB1215ED3A900F30952 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = "<group>"; };
0EF56BBA2185AC8500B0C8AB /* SwiftGen+Segues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SwiftGen+Segues.swift"; sourceTree = "<group>"; };
0EF5CF242141CE58004FF1BD /* HUD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = "<group>"; }; 0EF5CF242141CE58004FF1BD /* HUD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = "<group>"; };
0EFD943D215BE10800529B64 /* IssueReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueReporter.swift; sourceTree = "<group>"; }; 0EFD943D215BE10800529B64 /* IssueReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IssueReporter.swift; sourceTree = "<group>"; };
0EFD943F215BED8E00529B64 /* LabelViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelViewController.swift; sourceTree = "<group>"; }; 0EFD943F215BED8E00529B64 /* LabelViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelViewController.swift; sourceTree = "<group>"; };
@ -441,7 +443,8 @@
0E4FD7F020D58618002221FF /* Macros.swift */, 0E4FD7F020D58618002221FF /* Macros.swift */,
0ED38AE9214054A50004D387 /* OptionViewController.swift */, 0ED38AE9214054A50004D387 /* OptionViewController.swift */,
0EA068F3218475F800C320AD /* ParsedFile+Alerts.swift */, 0EA068F3218475F800C320AD /* ParsedFile+Alerts.swift */,
0EDE8DE320C89028004C739C /* SwiftGen+Storyboards.swift */, 0EDE8DE320C89028004C739C /* SwiftGen+Scenes.swift */,
0EF56BBA2185AC8500B0C8AB /* SwiftGen+Segues.swift */,
0E05C61C20D27C82006EE732 /* Theme.swift */, 0E05C61C20D27C82006EE732 /* Theme.swift */,
0ECEE44F20E1182E00A6BB43 /* Theme+Cells.swift */, 0ECEE44F20E1182E00A6BB43 /* Theme+Cells.swift */,
0E2B493F20FCFF990094784C /* Theme+Titles.swift */, 0E2B493F20FCFF990094784C /* Theme+Titles.swift */,
@ -827,11 +830,12 @@
0E5E5DE2215119DD00E318A3 /* VPNConfiguration.swift in Sources */, 0E5E5DE2215119DD00E318A3 /* VPNConfiguration.swift in Sources */,
0EBE3AA0213DC1A100BFA2F5 /* ConnectionProfile.swift in Sources */, 0EBE3AA0213DC1A100BFA2F5 /* ConnectionProfile.swift in Sources */,
0E1066C920E0F84A004F98B7 /* Cells.swift in Sources */, 0E1066C920E0F84A004F98B7 /* Cells.swift in Sources */,
0EF56BBB2185AC8500B0C8AB /* SwiftGen+Segues.swift in Sources */,
0EBE3AA6213DC1B000BFA2F5 /* ProviderConnectionProfile.swift in Sources */, 0EBE3AA6213DC1B000BFA2F5 /* ProviderConnectionProfile.swift in Sources */,
0E3DA371215CB5BF00B40FC9 /* VersionViewController.swift in Sources */, 0E3DA371215CB5BF00B40FC9 /* VersionViewController.swift in Sources */,
0EBBE8F52182361800106008 /* ConnectionService+Migration.swift in Sources */, 0EBBE8F52182361800106008 /* ConnectionService+Migration.swift in Sources */,
0E39BCF3214DA9310035E9DE /* AppConstants.swift in Sources */, 0E39BCF3214DA9310035E9DE /* AppConstants.swift in Sources */,
0E05C5D620D1645F006EE732 /* SwiftGen+Storyboards.swift in Sources */, 0E05C5D620D1645F006EE732 /* SwiftGen+Scenes.swift in Sources */,
0E2B494220FD16540094784C /* TransientStore.swift in Sources */, 0E2B494220FD16540094784C /* TransientStore.swift in Sources */,
0E89DFC5213DF7AE00741BA1 /* Preferences.swift in Sources */, 0E89DFC5213DF7AE00741BA1 /* Preferences.swift in Sources */,
0E6BE13A20CFB76800A6DD36 /* ApplicationError.swift in Sources */, 0E6BE13A20CFB76800A6DD36 /* ApplicationError.swift in Sources */,

View File

@ -98,7 +98,7 @@
//"service.cells.vpn_prefers_udp.caption" = "Prefer UDP socket"; //"service.cells.vpn_prefers_udp.caption" = "Prefer UDP socket";
"service.cells.trusted_mobile.caption" = "Cellular network"; "service.cells.trusted_mobile.caption" = "Cellular network";
"service.cells.trusted_wifi.caption" = "%@"; "service.cells.trusted_wifi.caption" = "%@";
"service.cells.trusted_add_wifi.caption" = "Trust current Wi-Fi"; "service.cells.trusted_add_wifi.caption" = "Add current Wi-Fi";
"service.cells.trusted_policy.caption" = "Retain existing connection"; "service.cells.trusted_policy.caption" = "Retain existing connection";
"service.cells.test_connectivity.caption" = "Test connectivity"; "service.cells.test_connectivity.caption" = "Test connectivity";
"service.cells.data_count.caption" = "Exchanged bytes count"; "service.cells.data_count.caption" = "Exchanged bytes count";

View File

@ -129,9 +129,10 @@ class TrustedNetworksModel {
return return
} }
let isTrusted = false
let rowIndex = rowIndexForWifi(at: index) let rowIndex = rowIndexForWifi(at: index)
let completionHandler: () -> Void = { let completionHandler: () -> Void = {
self.trustedWifis[wifiToAdd] = true self.trustedWifis[wifiToAdd] = isTrusted
if !isDuplicate { if !isDuplicate {
self.sortedWifis.insert(wifiToAdd, at: index) self.sortedWifis.insert(wifiToAdd, at: index)
@ -140,7 +141,7 @@ class TrustedNetworksModel {
#endif #endif
self.delegate?.trustedNetworks(self, shouldInsertWifiAt: rowIndex) self.delegate?.trustedNetworks(self, shouldInsertWifiAt: rowIndex)
} else { } else {
self.delegate?.trustedNetworks(self, shouldReloadWifiAt: rowIndex, isTrusted: true) self.delegate?.trustedNetworks(self, shouldReloadWifiAt: rowIndex, isTrusted: isTrusted)
} }
self.delegate?.trustedNetworksShouldReinstall(self) self.delegate?.trustedNetworksShouldReinstall(self)

View File

@ -1,3 +1,4 @@
// swiftlint:disable all
// Generated using SwiftGen, by O.Halligon https://github.com/SwiftGen/SwiftGen // Generated using SwiftGen, by O.Halligon https://github.com/SwiftGen/SwiftGen
import Foundation import Foundation
@ -5,63 +6,54 @@ import Foundation
// swiftlint:disable superfluous_disable_command // swiftlint:disable superfluous_disable_command
// swiftlint:disable file_length // swiftlint:disable file_length
// swiftlint:disable explicit_type_interface identifier_name line_length nesting type_body_length type_name // MARK: - Strings
// swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length
// swiftlint:disable nesting type_body_length type_name
internal enum L10n { internal enum L10n {
internal enum About { internal enum About {
/// About /// About
internal static let title = L10n.tr("Localizable", "about.title") internal static let title = L10n.tr("Localizable", "about.title")
internal enum Cells { internal enum Cells {
internal enum JoinCommunity { internal enum JoinCommunity {
/// Join community /// Join community
internal static let caption = L10n.tr("Localizable", "about.cells.join_community.caption") internal static let caption = L10n.tr("Localizable", "about.cells.join_community.caption")
} }
internal enum ShareGeneric { internal enum ShareGeneric {
/// Invite a friend /// Invite a friend
internal static let caption = L10n.tr("Localizable", "about.cells.share_generic.caption") internal static let caption = L10n.tr("Localizable", "about.cells.share_generic.caption")
} }
internal enum ShareTwitter { internal enum ShareTwitter {
/// Tweet about it! /// Tweet about it!
internal static let caption = L10n.tr("Localizable", "about.cells.share_twitter.caption") internal static let caption = L10n.tr("Localizable", "about.cells.share_twitter.caption")
} }
internal enum Version { internal enum Version {
/// Version /// Version
internal static let caption = L10n.tr("Localizable", "about.cells.version.caption") internal static let caption = L10n.tr("Localizable", "about.cells.version.caption")
} }
internal enum Website { internal enum Website {
/// Visit website /// Visit website
internal static let caption = L10n.tr("Localizable", "about.cells.website.caption") internal static let caption = L10n.tr("Localizable", "about.cells.website.caption")
} }
internal enum WriteReview { internal enum WriteReview {
/// Write a review /// Write a review
internal static let caption = L10n.tr("Localizable", "about.cells.write_review.caption") internal static let caption = L10n.tr("Localizable", "about.cells.write_review.caption")
} }
} }
internal enum Sections { internal enum Sections {
internal enum Feedback { internal enum Feedback {
/// Feedback /// Feedback
internal static let header = L10n.tr("Localizable", "about.sections.feedback.header") internal static let header = L10n.tr("Localizable", "about.sections.feedback.header")
} }
internal enum Info { internal enum Info {
/// General /// General
internal static let header = L10n.tr("Localizable", "about.sections.info.header") internal static let header = L10n.tr("Localizable", "about.sections.info.header")
} }
internal enum Share { internal enum Share {
/// Share /// Share
internal static let header = L10n.tr("Localizable", "about.sections.share.header") internal static let header = L10n.tr("Localizable", "about.sections.share.header")
} }
internal enum Source { internal enum Source {
/// Source code /// Source code
internal static let header = L10n.tr("Localizable", "about.sections.source.header") internal static let header = L10n.tr("Localizable", "about.sections.source.header")
@ -70,16 +62,13 @@ internal enum L10n {
} }
internal enum Account { internal enum Account {
internal enum Cells { internal enum Cells {
internal enum Password { internal enum Password {
/// Password /// Password
internal static let caption = L10n.tr("Localizable", "account.cells.password.caption") internal static let caption = L10n.tr("Localizable", "account.cells.password.caption")
/// secret /// secret
internal static let placeholder = L10n.tr("Localizable", "account.cells.password.placeholder") internal static let placeholder = L10n.tr("Localizable", "account.cells.password.placeholder")
} }
internal enum Username { internal enum Username {
/// Username /// Username
internal static let caption = L10n.tr("Localizable", "account.cells.username.caption") internal static let caption = L10n.tr("Localizable", "account.cells.username.caption")
@ -87,9 +76,7 @@ internal enum L10n {
internal static let placeholder = L10n.tr("Localizable", "account.cells.username.placeholder") internal static let placeholder = L10n.tr("Localizable", "account.cells.username.placeholder")
} }
} }
internal enum SuggestionFooter { internal enum SuggestionFooter {
internal enum Infrastructure { internal enum Infrastructure {
/// Use your website credentials. Your username is usually numeric with a "p" prefix. /// Use your website credentials. Your username is usually numeric with a "p" prefix.
internal static let pia = L10n.tr("Localizable", "account.suggestion_footer.infrastructure.pia") internal static let pia = L10n.tr("Localizable", "account.suggestion_footer.infrastructure.pia")
@ -98,18 +85,14 @@ internal enum L10n {
} }
internal enum Configuration { internal enum Configuration {
internal enum Cells { internal enum Cells {
internal enum Cipher { internal enum Cipher {
/// Cipher /// Cipher
internal static let caption = L10n.tr("Localizable", "configuration.cells.cipher.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.cipher.caption")
} }
internal enum Client { internal enum Client {
/// Client certificate /// Client certificate
internal static let caption = L10n.tr("Localizable", "configuration.cells.client.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.client.caption")
internal enum Value { internal enum Value {
/// Not verified /// Not verified
internal static let disabled = L10n.tr("Localizable", "configuration.cells.client.value.disabled") internal static let disabled = L10n.tr("Localizable", "configuration.cells.client.value.disabled")
@ -117,21 +100,17 @@ internal enum L10n {
internal static let enabled = L10n.tr("Localizable", "configuration.cells.client.value.enabled") internal static let enabled = L10n.tr("Localizable", "configuration.cells.client.value.enabled")
} }
} }
internal enum CompressionAlgorithm { internal enum CompressionAlgorithm {
/// Compression /// Compression
internal static let caption = L10n.tr("Localizable", "configuration.cells.compression_algorithm.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.compression_algorithm.caption")
internal enum Value { internal enum Value {
/// Disabled /// Disabled
internal static let disabled = L10n.tr("Localizable", "configuration.cells.compression_algorithm.value.disabled") internal static let disabled = L10n.tr("Localizable", "configuration.cells.compression_algorithm.value.disabled")
} }
} }
internal enum CompressionFrame { internal enum CompressionFrame {
/// Framing /// Framing
internal static let caption = L10n.tr("Localizable", "configuration.cells.compression_frame.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.compression_frame.caption")
internal enum Value { internal enum Value {
/// Compress /// Compress
internal static let compress = L10n.tr("Localizable", "configuration.cells.compression_frame.value.compress") internal static let compress = L10n.tr("Localizable", "configuration.cells.compression_frame.value.compress")
@ -141,21 +120,17 @@ internal enum L10n {
internal static let lzo = L10n.tr("Localizable", "configuration.cells.compression_frame.value.lzo") internal static let lzo = L10n.tr("Localizable", "configuration.cells.compression_frame.value.lzo")
} }
} }
internal enum Digest { internal enum Digest {
/// Authentication /// Authentication
internal static let caption = L10n.tr("Localizable", "configuration.cells.digest.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.digest.caption")
internal enum Value { internal enum Value {
/// Embedded /// Embedded
internal static let embedded = L10n.tr("Localizable", "configuration.cells.digest.value.embedded") internal static let embedded = L10n.tr("Localizable", "configuration.cells.digest.value.embedded")
} }
} }
internal enum KeepAlive { internal enum KeepAlive {
/// Keep-alive /// Keep-alive
internal static let caption = L10n.tr("Localizable", "configuration.cells.keep_alive.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.keep_alive.caption")
internal enum Value { internal enum Value {
/// Disabled /// Disabled
internal static let never = L10n.tr("Localizable", "configuration.cells.keep_alive.value.never") internal static let never = L10n.tr("Localizable", "configuration.cells.keep_alive.value.never")
@ -165,11 +140,9 @@ internal enum L10n {
} }
} }
} }
internal enum RenegotiationSeconds { internal enum RenegotiationSeconds {
/// Renegotiation /// Renegotiation
internal static let caption = L10n.tr("Localizable", "configuration.cells.renegotiation_seconds.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.renegotiation_seconds.caption")
internal enum Value { internal enum Value {
/// after %@ /// after %@
internal static func after(_ p1: String) -> String { internal static func after(_ p1: String) -> String {
@ -179,16 +152,13 @@ internal enum L10n {
internal static let never = L10n.tr("Localizable", "configuration.cells.renegotiation_seconds.value.never") internal static let never = L10n.tr("Localizable", "configuration.cells.renegotiation_seconds.value.never")
} }
} }
internal enum ResetOriginal { internal enum ResetOriginal {
/// Reset configuration /// Reset configuration
internal static let caption = L10n.tr("Localizable", "configuration.cells.reset_original.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.reset_original.caption")
} }
internal enum TlsWrapping { internal enum TlsWrapping {
/// Wrapping /// Wrapping
internal static let caption = L10n.tr("Localizable", "configuration.cells.tls_wrapping.caption") internal static let caption = L10n.tr("Localizable", "configuration.cells.tls_wrapping.caption")
internal enum Value { internal enum Value {
/// Authentication /// Authentication
internal static let auth = L10n.tr("Localizable", "configuration.cells.tls_wrapping.value.auth") internal static let auth = L10n.tr("Localizable", "configuration.cells.tls_wrapping.value.auth")
@ -199,24 +169,19 @@ internal enum L10n {
} }
} }
} }
internal enum Sections { internal enum Sections {
internal enum Communication { internal enum Communication {
/// Communication /// Communication
internal static let header = L10n.tr("Localizable", "configuration.sections.communication.header") internal static let header = L10n.tr("Localizable", "configuration.sections.communication.header")
} }
internal enum Other { internal enum Other {
/// Other /// Other
internal static let header = L10n.tr("Localizable", "configuration.sections.other.header") internal static let header = L10n.tr("Localizable", "configuration.sections.other.header")
} }
internal enum Reset { internal enum Reset {
/// If you ended up with broken connectivity after changing the communication parameters, tap to revert to the original configuration. /// If you ended up with broken connectivity after changing the communication parameters, tap to revert to the original configuration.
internal static let footer = L10n.tr("Localizable", "configuration.sections.reset.footer") internal static let footer = L10n.tr("Localizable", "configuration.sections.reset.footer")
} }
internal enum Tls { internal enum Tls {
/// TLS /// TLS
internal static let header = L10n.tr("Localizable", "configuration.sections.tls.header") internal static let header = L10n.tr("Localizable", "configuration.sections.tls.header")
@ -227,7 +192,6 @@ internal enum L10n {
internal enum Credits { internal enum Credits {
/// Credits /// Credits
internal static let title = L10n.tr("Localizable", "credits.title") internal static let title = L10n.tr("Localizable", "credits.title")
internal enum Labels { internal enum Labels {
/// Passepartout is a non-official client and is in no way affiliated with OpenVPN Inc.\n\nThe logo is taken from the awesome Circle Icons set by Nick Roach. /// Passepartout is a non-official client and is in no way affiliated with OpenVPN Inc.\n\nThe logo is taken from the awesome Circle Icons set by Nick Roach.
internal static let thirdParties = L10n.tr("Localizable", "credits.labels.third_parties") internal static let thirdParties = L10n.tr("Localizable", "credits.labels.third_parties")
@ -235,15 +199,12 @@ internal enum L10n {
} }
internal enum DebugLog { internal enum DebugLog {
internal enum Alerts { internal enum Alerts {
internal enum EmptyLog { internal enum EmptyLog {
/// The debug log is empty. /// The debug log is empty.
internal static let message = L10n.tr("Localizable", "debug_log.alerts.empty_log.message") internal static let message = L10n.tr("Localizable", "debug_log.alerts.empty_log.message")
} }
} }
internal enum Buttons { internal enum Buttons {
/// Next /// Next
internal static let next = L10n.tr("Localizable", "debug_log.buttons.next") internal static let next = L10n.tr("Localizable", "debug_log.buttons.next")
@ -255,7 +216,6 @@ internal enum L10n {
internal enum Disclaimer { internal enum Disclaimer {
/// Disclaimer /// Disclaimer
internal static let title = L10n.tr("Localizable", "disclaimer.title") internal static let title = L10n.tr("Localizable", "disclaimer.title")
internal enum Labels { internal enum Labels {
/// Passepartout is a VPN client based on independent work. As such, the developer -while making his best efforts to avoid it- takes no responsibility about any damage caused by the use of this software.\n\nAdditionally, the developer takes no responsibility about data usage, monitoring, logging etc. by the servers you connect to. Passepartout is not even involved in the above choices, as they're part of server-side policies.\n\nFor more information about data usage by third parties, please review the privacy policy of your VPN provider. /// Passepartout is a VPN client based on independent work. As such, the developer -while making his best efforts to avoid it- takes no responsibility about any damage caused by the use of this software.\n\nAdditionally, the developer takes no responsibility about data usage, monitoring, logging etc. by the servers you connect to. Passepartout is not even involved in the above choices, as they're part of server-side policies.\n\nFor more information about data usage by third parties, please review the privacy policy of your VPN provider.
internal static let text = L10n.tr("Localizable", "disclaimer.labels.text") internal static let text = L10n.tr("Localizable", "disclaimer.labels.text")
@ -263,27 +223,21 @@ internal enum L10n {
} }
internal enum Endpoint { internal enum Endpoint {
internal enum Cells { internal enum Cells {
internal enum AnyAddress { internal enum AnyAddress {
/// Any /// Any
internal static let caption = L10n.tr("Localizable", "endpoint.cells.any_address.caption") internal static let caption = L10n.tr("Localizable", "endpoint.cells.any_address.caption")
} }
internal enum AnyProtocol { internal enum AnyProtocol {
/// Any /// Any
internal static let caption = L10n.tr("Localizable", "endpoint.cells.any_protocol.caption") internal static let caption = L10n.tr("Localizable", "endpoint.cells.any_protocol.caption")
} }
} }
internal enum Sections { internal enum Sections {
internal enum LocationAddresses { internal enum LocationAddresses {
/// Addresses /// Addresses
internal static let header = L10n.tr("Localizable", "endpoint.sections.location_addresses.header") internal static let header = L10n.tr("Localizable", "endpoint.sections.location_addresses.header")
} }
internal enum LocationProtocols { internal enum LocationProtocols {
/// Protocols /// Protocols
internal static let header = L10n.tr("Localizable", "endpoint.sections.location_protocols.header") internal static let header = L10n.tr("Localizable", "endpoint.sections.location_protocols.header")
@ -310,20 +264,16 @@ internal enum L10n {
internal static let message = L10n.tr("Localizable", "issue_reporter.message") internal static let message = L10n.tr("Localizable", "issue_reporter.message")
/// Report issue /// Report issue
internal static let title = L10n.tr("Localizable", "issue_reporter.title") internal static let title = L10n.tr("Localizable", "issue_reporter.title")
internal enum Alerts { internal enum Alerts {
internal enum EmailNotConfigured { internal enum EmailNotConfigured {
/// No e-mail account is configured. /// No e-mail account is configured.
internal static let message = L10n.tr("Localizable", "issue_reporter.alerts.email_not_configured.message") internal static let message = L10n.tr("Localizable", "issue_reporter.alerts.email_not_configured.message")
} }
} }
internal enum Buttons { internal enum Buttons {
/// I understand /// I understand
internal static let accept = L10n.tr("Localizable", "issue_reporter.buttons.accept") internal static let accept = L10n.tr("Localizable", "issue_reporter.buttons.accept")
} }
internal enum Email { internal enum Email {
/// Hi,\n\n%@\n\n%@\n\nRegards /// Hi,\n\n%@\n\n%@\n\nRegards
internal static func body(_ p1: String, _ p2: String) -> String { internal static func body(_ p1: String, _ p2: String) -> String {
@ -339,67 +289,53 @@ internal enum L10n {
} }
internal enum Organizer { internal enum Organizer {
internal enum Alerts { internal enum Alerts {
internal enum AddHost { internal enum AddHost {
/// Open an URL to an .ovpn configuration file from Safari, Mail or another app to set up a host profile.\n\nYou can also import an .ovpn with iTunes File Sharing. /// Open an URL to an .ovpn configuration file from Safari, Mail or another app to set up a host profile.\n\nYou can also import an .ovpn with iTunes File Sharing.
internal static let message = L10n.tr("Localizable", "organizer.alerts.add_host.message") internal static let message = L10n.tr("Localizable", "organizer.alerts.add_host.message")
} }
internal enum DeleteVpnProfile { internal enum DeleteVpnProfile {
/// Do you really want to delete the VPN profile from the device? /// Do you really want to delete the VPN profile from the device?
internal static let message = L10n.tr("Localizable", "organizer.alerts.delete_vpn_profile.message") internal static let message = L10n.tr("Localizable", "organizer.alerts.delete_vpn_profile.message")
} }
internal enum ExhaustedProviders { internal enum ExhaustedProviders {
/// You have created profiles for any available network. /// You have created profiles for any available network.
internal static let message = L10n.tr("Localizable", "organizer.alerts.exhausted_providers.message") internal static let message = L10n.tr("Localizable", "organizer.alerts.exhausted_providers.message")
} }
} }
internal enum Cells { internal enum Cells {
internal enum About { internal enum About {
/// About %@ /// About %@
internal static func caption(_ p1: String) -> String { internal static func caption(_ p1: String) -> String {
return L10n.tr("Localizable", "organizer.cells.about.caption", p1) return L10n.tr("Localizable", "organizer.cells.about.caption", p1)
} }
} }
internal enum AddHost { internal enum AddHost {
/// Add new host /// Add new host
internal static let caption = L10n.tr("Localizable", "organizer.cells.add_host.caption") internal static let caption = L10n.tr("Localizable", "organizer.cells.add_host.caption")
} }
internal enum AddProvider { internal enum AddProvider {
/// Add new network /// Add new network
internal static let caption = L10n.tr("Localizable", "organizer.cells.add_provider.caption") internal static let caption = L10n.tr("Localizable", "organizer.cells.add_provider.caption")
} }
internal enum Profile { internal enum Profile {
internal enum Value { internal enum Value {
/// In use /// In use
internal static let current = L10n.tr("Localizable", "organizer.cells.profile.value.current") internal static let current = L10n.tr("Localizable", "organizer.cells.profile.value.current")
} }
} }
internal enum Uninstall { internal enum Uninstall {
/// Delete VPN profile /// Delete VPN profile
internal static let caption = L10n.tr("Localizable", "organizer.cells.uninstall.caption") internal static let caption = L10n.tr("Localizable", "organizer.cells.uninstall.caption")
} }
} }
internal enum Sections { internal enum Sections {
internal enum Hosts { internal enum Hosts {
/// Import hosts from raw .ovpn configuration files. /// Import hosts from raw .ovpn configuration files.
internal static let footer = L10n.tr("Localizable", "organizer.sections.hosts.footer") internal static let footer = L10n.tr("Localizable", "organizer.sections.hosts.footer")
/// Hosts /// Hosts
internal static let header = L10n.tr("Localizable", "organizer.sections.hosts.header") internal static let header = L10n.tr("Localizable", "organizer.sections.hosts.header")
} }
internal enum Providers { internal enum Providers {
/// Here you find a few public infrastructures offering preset configuration profiles. /// Here you find a few public infrastructures offering preset configuration profiles.
internal static let footer = L10n.tr("Localizable", "organizer.sections.providers.footer") internal static let footer = L10n.tr("Localizable", "organizer.sections.providers.footer")
@ -410,35 +346,29 @@ internal enum L10n {
} }
internal enum ParsedFile { internal enum ParsedFile {
internal enum Alerts { internal enum Alerts {
internal enum Buttons { internal enum Buttons {
/// Report an issue /// Report an issue
internal static let report = L10n.tr("Localizable", "parsed_file.alerts.buttons.report") internal static let report = L10n.tr("Localizable", "parsed_file.alerts.buttons.report")
} }
internal enum Missing { internal enum Missing {
/// The configuration file lacks a required option (%@). /// The configuration file lacks a required option (%@).
internal static func message(_ p1: String) -> String { internal static func message(_ p1: String) -> String {
return L10n.tr("Localizable", "parsed_file.alerts.missing.message", p1) return L10n.tr("Localizable", "parsed_file.alerts.missing.message", p1)
} }
} }
internal enum Parsing { internal enum Parsing {
/// Unable to parse the provided configuration file (%@). /// Unable to parse the provided configuration file (%@).
internal static func message(_ p1: String) -> String { internal static func message(_ p1: String) -> String {
return L10n.tr("Localizable", "parsed_file.alerts.parsing.message", p1) return L10n.tr("Localizable", "parsed_file.alerts.parsing.message", p1)
} }
} }
internal enum PotentiallyUnsupported { internal enum PotentiallyUnsupported {
/// The configuration file is correct but contains a potentially unsupported option (%@).\n\nConnectivity may break depending on server settings. /// The configuration file is correct but contains a potentially unsupported option (%@).\n\nConnectivity may break depending on server settings.
internal static func message(_ p1: String) -> String { internal static func message(_ p1: String) -> String {
return L10n.tr("Localizable", "parsed_file.alerts.potentially_unsupported.message", p1) return L10n.tr("Localizable", "parsed_file.alerts.potentially_unsupported.message", p1)
} }
} }
internal enum Unsupported { internal enum Unsupported {
/// The configuration file contains an unsupported option (%@). /// The configuration file contains an unsupported option (%@).
internal static func message(_ p1: String) -> String { internal static func message(_ p1: String) -> String {
@ -449,11 +379,8 @@ internal enum L10n {
} }
internal enum Provider { internal enum Provider {
internal enum Preset { internal enum Preset {
internal enum Cells { internal enum Cells {
internal enum TechDetails { internal enum TechDetails {
/// Technical details /// Technical details
internal static let caption = L10n.tr("Localizable", "provider.preset.cells.tech_details.caption") internal static let caption = L10n.tr("Localizable", "provider.preset.cells.tech_details.caption")
@ -467,7 +394,6 @@ internal enum L10n {
internal static let message = L10n.tr("Localizable", "reddit.message") internal static let message = L10n.tr("Localizable", "reddit.message")
/// Reddit /// Reddit
internal static let title = L10n.tr("Localizable", "reddit.title") internal static let title = L10n.tr("Localizable", "reddit.title")
internal enum Buttons { internal enum Buttons {
/// Don't ask again /// Don't ask again
internal static let never = L10n.tr("Localizable", "reddit.buttons.never") internal static let never = L10n.tr("Localizable", "reddit.buttons.never")
@ -479,16 +405,12 @@ internal enum L10n {
} }
internal enum Service { internal enum Service {
internal enum Alerts { internal enum Alerts {
internal enum CredentialsNeeded { internal enum CredentialsNeeded {
/// You need to enter account credentials first. /// You need to enter account credentials first.
internal static let message = L10n.tr("Localizable", "service.alerts.credentials_needed.message") internal static let message = L10n.tr("Localizable", "service.alerts.credentials_needed.message")
} }
internal enum DataCount { internal enum DataCount {
internal enum Messages { internal enum Messages {
/// Received: %llu\nSent: %llu /// Received: %llu\nSent: %llu
internal static func current(_ p1: Int, _ p2: Int) -> String { internal static func current(_ p1: Int, _ p2: Int) -> String {
@ -498,16 +420,13 @@ internal enum L10n {
internal static let notAvailable = L10n.tr("Localizable", "service.alerts.data_count.messages.not_available") internal static let notAvailable = L10n.tr("Localizable", "service.alerts.data_count.messages.not_available")
} }
} }
internal enum ReconnectVpn { internal enum ReconnectVpn {
/// Do you want to reconnect to the VPN? /// Do you want to reconnect to the VPN?
internal static let message = L10n.tr("Localizable", "service.alerts.reconnect_vpn.message") internal static let message = L10n.tr("Localizable", "service.alerts.reconnect_vpn.message")
} }
internal enum TestConnectivity { internal enum TestConnectivity {
/// Connectivity /// Connectivity
internal static let title = L10n.tr("Localizable", "service.alerts.test_connectivity.title") internal static let title = L10n.tr("Localizable", "service.alerts.test_connectivity.title")
internal enum Messages { internal enum Messages {
/// Your device has no Internet connectivity, please review your profile parameters. /// Your device has no Internet connectivity, please review your profile parameters.
internal static let failure = L10n.tr("Localizable", "service.alerts.test_connectivity.messages.failure") internal static let failure = L10n.tr("Localizable", "service.alerts.test_connectivity.messages.failure")
@ -515,54 +434,43 @@ internal enum L10n {
internal static let success = L10n.tr("Localizable", "service.alerts.test_connectivity.messages.success") internal static let success = L10n.tr("Localizable", "service.alerts.test_connectivity.messages.success")
} }
} }
internal enum Trusted { internal enum Trusted {
internal enum NoNetwork { internal enum NoNetwork {
/// You are not connected to any Wi-Fi network. /// You are not connected to any Wi-Fi network.
internal static let message = L10n.tr("Localizable", "service.alerts.trusted.no_network.message") internal static let message = L10n.tr("Localizable", "service.alerts.trusted.no_network.message")
} }
internal enum WillDisconnectPolicy { internal enum WillDisconnectPolicy {
/// By changing the trust policy, the VPN may be disconnected. Continue? /// By changing the trust policy, the VPN may be disconnected. Continue?
internal static let message = L10n.tr("Localizable", "service.alerts.trusted.will_disconnect_policy.message") internal static let message = L10n.tr("Localizable", "service.alerts.trusted.will_disconnect_policy.message")
} }
internal enum WillDisconnectTrusted { internal enum WillDisconnectTrusted {
/// By trusting this network, the VPN may be disconnected. Continue? /// By trusting this network, the VPN may be disconnected. Continue?
internal static let message = L10n.tr("Localizable", "service.alerts.trusted.will_disconnect_trusted.message") internal static let message = L10n.tr("Localizable", "service.alerts.trusted.will_disconnect_trusted.message")
} }
} }
} }
internal enum Cells { internal enum Cells {
internal enum Account { internal enum Account {
/// Account /// Account
internal static let caption = L10n.tr("Localizable", "service.cells.account.caption") internal static let caption = L10n.tr("Localizable", "service.cells.account.caption")
/// None configured /// None configured
internal static let `none` = L10n.tr("Localizable", "service.cells.account.none") internal static let `none` = L10n.tr("Localizable", "service.cells.account.none")
} }
internal enum ConnectionStatus { internal enum ConnectionStatus {
/// Status /// Status
internal static let caption = L10n.tr("Localizable", "service.cells.connection_status.caption") internal static let caption = L10n.tr("Localizable", "service.cells.connection_status.caption")
} }
internal enum DataCount { internal enum DataCount {
/// Exchanged bytes count /// Exchanged bytes count
internal static let caption = L10n.tr("Localizable", "service.cells.data_count.caption") internal static let caption = L10n.tr("Localizable", "service.cells.data_count.caption")
} }
internal enum DebugLog { internal enum DebugLog {
/// Debug log /// Debug log
internal static let caption = L10n.tr("Localizable", "service.cells.debug_log.caption") internal static let caption = L10n.tr("Localizable", "service.cells.debug_log.caption")
} }
internal enum Endpoint { internal enum Endpoint {
/// Endpoint /// Endpoint
internal static let caption = L10n.tr("Localizable", "service.cells.endpoint.caption") internal static let caption = L10n.tr("Localizable", "service.cells.endpoint.caption")
internal enum Value { internal enum Value {
/// Automatic /// Automatic
internal static let automatic = L10n.tr("Localizable", "service.cells.endpoint.value.automatic") internal static let automatic = L10n.tr("Localizable", "service.cells.endpoint.value.automatic")
@ -570,13 +478,10 @@ internal enum L10n {
internal static let manual = L10n.tr("Localizable", "service.cells.endpoint.value.manual") internal static let manual = L10n.tr("Localizable", "service.cells.endpoint.value.manual")
} }
} }
internal enum Host { internal enum Host {
internal enum Parameters { internal enum Parameters {
/// Parameters /// Parameters
internal static let caption = L10n.tr("Localizable", "service.cells.host.parameters.caption") internal static let caption = L10n.tr("Localizable", "service.cells.host.parameters.caption")
internal enum Value { internal enum Value {
/// %@ /// %@
internal static func cipher(_ p1: String) -> String { internal static func cipher(_ p1: String) -> String {
@ -589,137 +494,111 @@ internal enum L10n {
} }
} }
} }
internal enum Provider { internal enum Provider {
internal enum Pool { internal enum Pool {
/// Location /// Location
internal static let caption = L10n.tr("Localizable", "service.cells.provider.pool.caption") internal static let caption = L10n.tr("Localizable", "service.cells.provider.pool.caption")
} }
internal enum Preset { internal enum Preset {
/// Preset /// Preset
internal static let caption = L10n.tr("Localizable", "service.cells.provider.preset.caption") internal static let caption = L10n.tr("Localizable", "service.cells.provider.preset.caption")
} }
internal enum Refresh { internal enum Refresh {
/// Refresh infrastructure /// Refresh infrastructure
internal static let caption = L10n.tr("Localizable", "service.cells.provider.refresh.caption") internal static let caption = L10n.tr("Localizable", "service.cells.provider.refresh.caption")
} }
} }
internal enum Reconnect { internal enum Reconnect {
/// Reconnect /// Reconnect
internal static let caption = L10n.tr("Localizable", "service.cells.reconnect.caption") internal static let caption = L10n.tr("Localizable", "service.cells.reconnect.caption")
} }
internal enum ReportIssue { internal enum ReportIssue {
/// Report connectivity issue /// Report connectivity issue
internal static let caption = L10n.tr("Localizable", "service.cells.report_issue.caption") internal static let caption = L10n.tr("Localizable", "service.cells.report_issue.caption")
} }
internal enum TestConnectivity { internal enum TestConnectivity {
/// Test connectivity /// Test connectivity
internal static let caption = L10n.tr("Localizable", "service.cells.test_connectivity.caption") internal static let caption = L10n.tr("Localizable", "service.cells.test_connectivity.caption")
} }
internal enum TrustedAddWifi { internal enum TrustedAddWifi {
/// Trust current Wi-Fi /// Add current Wi-Fi
internal static let caption = L10n.tr("Localizable", "service.cells.trusted_add_wifi.caption") internal static let caption = L10n.tr("Localizable", "service.cells.trusted_add_wifi.caption")
} }
internal enum TrustedMobile { internal enum TrustedMobile {
/// Cellular network /// Cellular network
internal static let caption = L10n.tr("Localizable", "service.cells.trusted_mobile.caption") internal static let caption = L10n.tr("Localizable", "service.cells.trusted_mobile.caption")
} }
internal enum TrustedPolicy { internal enum TrustedPolicy {
/// Retain existing connection /// Retain existing connection
internal static let caption = L10n.tr("Localizable", "service.cells.trusted_policy.caption") internal static let caption = L10n.tr("Localizable", "service.cells.trusted_policy.caption")
} }
internal enum TrustedWifi { internal enum TrustedWifi {
/// %@ /// %@
internal static func caption(_ p1: String) -> String { internal static func caption(_ p1: String) -> String {
return L10n.tr("Localizable", "service.cells.trusted_wifi.caption", p1) return L10n.tr("Localizable", "service.cells.trusted_wifi.caption", p1)
} }
} }
internal enum UseProfile { internal enum UseProfile {
/// Use this profile /// Use this profile
internal static let caption = L10n.tr("Localizable", "service.cells.use_profile.caption") internal static let caption = L10n.tr("Localizable", "service.cells.use_profile.caption")
} }
internal enum VpnResolvesHostname { internal enum VpnResolvesHostname {
/// Resolve server hostname /// Resolve server hostname
internal static let caption = L10n.tr("Localizable", "service.cells.vpn_resolves_hostname.caption") internal static let caption = L10n.tr("Localizable", "service.cells.vpn_resolves_hostname.caption")
} }
internal enum VpnService { internal enum VpnService {
/// Enabled /// Enabled
internal static let caption = L10n.tr("Localizable", "service.cells.vpn_service.caption") internal static let caption = L10n.tr("Localizable", "service.cells.vpn_service.caption")
} }
internal enum VpnSurvivesSleep { internal enum VpnSurvivesSleep {
/// Keep alive on sleep /// Keep alive on sleep
internal static let caption = L10n.tr("Localizable", "service.cells.vpn_survives_sleep.caption") internal static let caption = L10n.tr("Localizable", "service.cells.vpn_survives_sleep.caption")
} }
} }
internal enum Sections { internal enum Sections {
internal enum Configuration { internal enum Configuration {
/// Configuration /// Configuration
internal static let header = L10n.tr("Localizable", "service.sections.configuration.header") internal static let header = L10n.tr("Localizable", "service.sections.configuration.header")
} }
internal enum Diagnostics { internal enum Diagnostics {
/// Diagnostics /// Diagnostics
internal static let header = L10n.tr("Localizable", "service.sections.diagnostics.header") internal static let header = L10n.tr("Localizable", "service.sections.diagnostics.header")
} }
internal enum General { internal enum General {
/// General /// General
internal static let header = L10n.tr("Localizable", "service.sections.general.header") internal static let header = L10n.tr("Localizable", "service.sections.general.header")
} }
internal enum ProviderInfrastructure { internal enum ProviderInfrastructure {
/// Last updated on %@. /// Last updated on %@.
internal static func footer(_ p1: String) -> String { internal static func footer(_ p1: String) -> String {
return L10n.tr("Localizable", "service.sections.provider_infrastructure.footer", p1) return L10n.tr("Localizable", "service.sections.provider_infrastructure.footer", p1)
} }
} }
internal enum Status { internal enum Status {
/// Connection /// Connection
internal static let header = L10n.tr("Localizable", "service.sections.status.header") internal static let header = L10n.tr("Localizable", "service.sections.status.header")
} }
internal enum Trusted { internal enum Trusted {
/// When entering a trusted network, an existing VPN connection will not be shut down by default. Disable to always enforce a disconnection. /// When entering a trusted network, an existing VPN connection will not be shut down by default. Disable to always enforce a disconnection.
internal static let footer = L10n.tr("Localizable", "service.sections.trusted.footer") internal static let footer = L10n.tr("Localizable", "service.sections.trusted.footer")
/// Trusted networks /// Trusted networks
internal static let header = L10n.tr("Localizable", "service.sections.trusted.header") internal static let header = L10n.tr("Localizable", "service.sections.trusted.header")
} }
internal enum Vpn { internal enum Vpn {
/// The connection will be established whenever necessary. /// The connection will be established whenever necessary.
internal static let footer = L10n.tr("Localizable", "service.sections.vpn.footer") internal static let footer = L10n.tr("Localizable", "service.sections.vpn.footer")
/// VPN /// VPN
internal static let header = L10n.tr("Localizable", "service.sections.vpn.header") internal static let header = L10n.tr("Localizable", "service.sections.vpn.header")
} }
internal enum VpnResolvesHostname { internal enum VpnResolvesHostname {
/// Preferred in most networks and required in some IPv6 networks. Disable where DNS is blocked, or to speed up negotiation when DNS is slow to respond. /// Preferred in most networks and required in some IPv6 networks. Disable where DNS is blocked, or to speed up negotiation when DNS is slow to respond.
internal static let footer = L10n.tr("Localizable", "service.sections.vpn_resolves_hostname.footer") internal static let footer = L10n.tr("Localizable", "service.sections.vpn_resolves_hostname.footer")
} }
internal enum VpnSurvivesSleep { internal enum VpnSurvivesSleep {
/// Disable to improve battery usage, at the expense of occasional slowdowns due to wake-up reconnections. /// Disable to improve battery usage, at the expense of occasional slowdowns due to wake-up reconnections.
internal static let footer = L10n.tr("Localizable", "service.sections.vpn_survives_sleep.footer") internal static let footer = L10n.tr("Localizable", "service.sections.vpn_survives_sleep.footer")
} }
} }
internal enum Welcome { internal enum Welcome {
/// Welcome to Passepartout!\n\nUse the organizer to add a new profile. /// Welcome to Passepartout!\n\nUse the organizer to add a new profile.
internal static let message = L10n.tr("Localizable", "service.welcome.message") internal static let message = L10n.tr("Localizable", "service.welcome.message")
@ -732,12 +611,10 @@ internal enum L10n {
} }
internal enum Version { internal enum Version {
internal enum Buttons { internal enum Buttons {
/// CHANGELOG /// CHANGELOG
internal static let changelog = L10n.tr("Localizable", "version.buttons.changelog") internal static let changelog = L10n.tr("Localizable", "version.buttons.changelog")
} }
internal enum Labels { internal enum Labels {
/// Passepartout and TunnelKit are written and maintained by Davide De Rosa (keeshux).\n\nTunnelKit is a native OpenVPN client originally forked from PIATunnel by Private Internet Access.\n\nSource code for Passepartout and TunnelKit is publicly available on GitHub under the GPLv3. /// Passepartout and TunnelKit are written and maintained by Davide De Rosa (keeshux).\n\nTunnelKit is a native OpenVPN client originally forked from PIATunnel by Private Internet Access.\n\nSource code for Passepartout and TunnelKit is publicly available on GitHub under the GPLv3.
internal static let intro = L10n.tr("Localizable", "version.labels.intro") internal static let intro = L10n.tr("Localizable", "version.labels.intro")
@ -755,7 +632,6 @@ internal enum L10n {
internal static let disconnecting = L10n.tr("Localizable", "vpn.disconnecting") internal static let disconnecting = L10n.tr("Localizable", "vpn.disconnecting")
/// Inactive /// Inactive
internal static let inactive = L10n.tr("Localizable", "vpn.inactive") internal static let inactive = L10n.tr("Localizable", "vpn.inactive")
internal enum Errors { internal enum Errors {
/// Auth failed /// Auth failed
internal static let auth = L10n.tr("Localizable", "vpn.errors.auth") internal static let auth = L10n.tr("Localizable", "vpn.errors.auth")
@ -773,19 +649,14 @@ internal enum L10n {
} }
internal enum Wizards { internal enum Wizards {
internal enum Host { internal enum Host {
internal enum Alerts { internal enum Alerts {
internal enum Existing { internal enum Existing {
/// A host profile with the same title already exists. Replace it? /// A host profile with the same title already exists. Replace it?
internal static let message = L10n.tr("Localizable", "wizards.host.alerts.existing.message") internal static let message = L10n.tr("Localizable", "wizards.host.alerts.existing.message")
} }
} }
internal enum Cells { internal enum Cells {
internal enum TitleInput { internal enum TitleInput {
/// Title /// Title
internal static let caption = L10n.tr("Localizable", "wizards.host.cells.title_input.caption") internal static let caption = L10n.tr("Localizable", "wizards.host.cells.title_input.caption")
@ -793,9 +664,7 @@ internal enum L10n {
internal static let placeholder = L10n.tr("Localizable", "wizards.host.cells.title_input.placeholder") internal static let placeholder = L10n.tr("Localizable", "wizards.host.cells.title_input.placeholder")
} }
} }
internal enum Sections { internal enum Sections {
internal enum Existing { internal enum Existing {
/// Existing profiles /// Existing profiles
internal static let header = L10n.tr("Localizable", "wizards.host.sections.existing.header") internal static let header = L10n.tr("Localizable", "wizards.host.sections.existing.header")
@ -804,7 +673,10 @@ internal enum L10n {
} }
} }
} }
// swiftlint:enable explicit_type_interface identifier_name line_length nesting type_body_length type_name // swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length
// swiftlint:enable nesting type_body_length type_name
// MARK: - Implementation Details
extension L10n { extension L10n {
private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String { private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {

View File

@ -99,10 +99,6 @@ extension TunnelKitProvider.Configuration {
var tlsKeyLines: [Substring]? var tlsKeyLines: [Substring]?
var tlsWrap: SessionProxy.TLSWrap? var tlsWrap: SessionProxy.TLSWrap?
var currentBlockName: String?
var currentBlock: [String] = []
var unsupportedError: ApplicationError? = nil
log.verbose("Configuration file:") log.verbose("Configuration file:")
for line in lines { for line in lines {
log.verbose(line) log.verbose(line)
@ -115,6 +111,10 @@ extension TunnelKitProvider.Configuration {
} }
} }
var currentBlockName: String?
var currentBlock: [String] = []
var unsupportedError: ApplicationError? = nil
Regex.blockBegin.enumerateComponents(in: line) { Regex.blockBegin.enumerateComponents(in: line) {
isHandled = true isHandled = true
let tag = $0.first! let tag = $0.first!
@ -229,7 +229,7 @@ extension TunnelKitProvider.Configuration {
compressionFraming = .compLZO compressionFraming = .compLZO
guard let arg = $0.first, arg == "no" else { guard let arg = $0.first, arg == "no" else {
warning = .unsupportedConfiguration(option: "compression") warning = warning ?? .unsupportedConfiguration(option: "compression")
return return
} }
} }
@ -238,7 +238,7 @@ extension TunnelKitProvider.Configuration {
compressionFraming = .compress compressionFraming = .compress
guard $0.isEmpty else { guard $0.isEmpty else {
warning = .unsupportedConfiguration(option: "compression") warning = warning ?? .unsupportedConfiguration(option: "compression")
return return
} }
} }

View File

@ -1,14 +1,16 @@
strings: strings:
paths: inputs:
- Passepartout/Resources/en.lproj/Localizable.strings - Passepartout/Resources/en.lproj/Localizable.strings
templateName: structured-swift4 outputs:
- templateName: structured-swift4
output: Passepartout/Sources/SwiftGen+Strings.swift output: Passepartout/Sources/SwiftGen+Strings.swift
storyboards: ib:
paths: inputs:
- Passepartout-iOS/en.lproj/Main.storyboard - Passepartout-iOS/en.lproj/Main.storyboard
- Passepartout-iOS/en.lproj/Organizer.storyboard - Passepartout-iOS/en.lproj/Organizer.storyboard
templateName: swift4 outputs:
output: Passepartout-iOS/Global/SwiftGen+Storyboards.swift - templateName: scenes-swift4
params: output: Passepartout-iOS/Global/SwiftGen+Scenes.swift
module: Passepartout - templateName: segues-swift4
output: Passepartout-iOS/Global/SwiftGen+Segues.swift