diff --git a/Passepartout-iOS/Scenes/ConfigurationViewController.swift b/Passepartout-iOS/Scenes/ConfigurationViewController.swift index 2a7894dc..2dd37ccd 100644 --- a/Passepartout-iOS/Scenes/ConfigurationViewController.swift +++ b/Passepartout-iOS/Scenes/ConfigurationViewController.swift @@ -58,6 +58,7 @@ class ConfigurationViewController: UIViewController, TableModelHost { model.add(.reset) } model.add(.tls) + model.add(.compression) if let _ = configuration.dnsServers { model.add(.dns) } @@ -66,6 +67,7 @@ class ConfigurationViewController: UIViewController, TableModelHost { // headers model.setHeader(L10n.Configuration.Sections.Communication.header, for: .communication) model.setHeader(L10n.Configuration.Sections.Tls.header, for: .tls) + model.setHeader(L10n.Configuration.Sections.Compression.header, for: .compression) if let _ = configuration.dnsServers { model.setHeader(L10n.Configuration.Sections.Dns.header, for: .dns) } @@ -77,15 +79,16 @@ class ConfigurationViewController: UIViewController, TableModelHost { } // rows - model.set([.cipher, .digest, .compressionFrame], in: .communication) + model.set([.cipher, .digest], in: .communication) if isEditable { model.set([.resetOriginal], in: .reset) } model.set([.client, .tlsWrapping], in: .tls) + model.set([.compressionFraming, .compressionAlgorithm], in: .compression) if let dnsServers = configuration.dnsServers { model.set(.dnsServer, count: dnsServers.count, in: .dns) } - model.set([.compressionAlgorithm, .keepAlive, .renegSeconds], in: .other) + model.set([.keepAlive, .renegSeconds], in: .other) return model }() @@ -167,6 +170,8 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat case tls + case compression + case dns case other @@ -177,18 +182,18 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat case digest - case compressionFrame - case resetOriginal case client case tlsWrapping - case dnsServer + case compressionFraming case compressionAlgorithm + case dnsServer + case keepAlive case renegSeconds @@ -243,10 +248,6 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat cell.isTappable = false } - case .compressionFrame: - cell.leftText = L10n.Configuration.Cells.CompressionFrame.caption - cell.rightText = configuration.compressionFraming.cellDescription - case .resetOriginal: cell.leftText = L10n.Configuration.Cells.ResetOriginal.caption cell.applyAction(Theme.current) @@ -274,6 +275,23 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat cell.accessoryType = .none cell.isTappable = false + case .compressionFraming: + cell.leftText = L10n.Configuration.Cells.CompressionFraming.caption + cell.rightText = configuration.compressionFraming.cellDescription + cell.accessoryType = .none + cell.isTappable = false + + case .compressionAlgorithm: + cell.leftText = L10n.Configuration.Cells.CompressionAlgorithm.caption + let V = L10n.Configuration.Cells.CompressionAlgorithm.Value.self + if let compressionAlgorithm = configuration.compressionAlgorithm { + cell.rightText = compressionAlgorithm.cellDescription + } else { + cell.rightText = V.disabled + } + cell.accessoryType = .none + cell.isTappable = false + case .dnsServer: guard let dnsServers = configuration.dnsServers else { fatalError("Showing DNS section without any custom server") @@ -283,12 +301,6 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat cell.accessoryType = .none cell.isTappable = false - case .compressionAlgorithm: - cell.leftText = L10n.Configuration.Cells.CompressionAlgorithm.caption - cell.rightText = L10n.Configuration.Cells.CompressionAlgorithm.Value.disabled // hardcoded because compression unsupported - cell.accessoryType = .none - cell.isTappable = false - case .keepAlive: cell.leftText = L10n.Configuration.Cells.KeepAlive.caption let V = L10n.Configuration.Cells.KeepAlive.Value.self @@ -350,17 +362,17 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat } navigationController?.pushViewController(vc, animated: true) - case .compressionFrame: - let vc = OptionViewController() - vc.title = settingCell?.leftText - vc.options = [.disabled, .compLZO, .compress] - vc.selectedOption = configuration.compressionFraming - vc.descriptionBlock = { $0.cellDescription } - vc.selectionBlock = { [weak self] in - self?.configuration.compressionFraming = $0 - self?.popAndCheckRefresh() - } - navigationController?.pushViewController(vc, animated: true) +// case .compressionFraming: +// let vc = OptionViewController() +// vc.title = settingCell?.leftText +// vc.options = [.disabled, .compLZO, .compress] +// vc.selectedOption = configuration.compressionFraming +// vc.descriptionBlock = { $0.cellDescription } +// vc.selectionBlock = { [weak self] in +// self?.configuration.compressionFraming = $0 +// self?.popAndCheckRefresh() +// } +// navigationController?.pushViewController(vc, animated: true) case .resetOriginal: tableView.deselectRow(at: indexPath, animated: true) @@ -386,7 +398,7 @@ extension ConfigurationViewController: UITableViewDataSource, UITableViewDelegat private extension SessionProxy.CompressionFraming { var cellDescription: String { - let V = L10n.Configuration.Cells.CompressionFrame.Value.self + let V = L10n.Configuration.Cells.CompressionFraming.Value.self switch self { case .disabled: return V.disabled @@ -399,3 +411,19 @@ private extension SessionProxy.CompressionFraming { } } } + +private extension SessionProxy.CompressionAlgorithm { + var cellDescription: String { + let V = L10n.Configuration.Cells.CompressionAlgorithm.Value.self + switch self { + case .disabled: + return V.disabled + + case .LZO: + return V.lzo + + case .other: + return V.other + } + } +} diff --git a/Passepartout/Resources/en.lproj/Localizable.strings b/Passepartout/Resources/en.lproj/Localizable.strings index 0e247016..c6b25067 100644 --- a/Passepartout/Resources/en.lproj/Localizable.strings +++ b/Passepartout/Resources/en.lproj/Localizable.strings @@ -139,15 +139,12 @@ "configuration.sections.communication.header" = "Communication"; "configuration.sections.reset.footer" = "If you ended up with broken connectivity after changing the communication parameters, tap to revert to the original configuration."; "configuration.sections.tls.header" = "TLS"; +"configuration.sections.compression.header" = "Compression"; "configuration.sections.dns.header" = "DNS"; "configuration.sections.other.header" = "Other"; "configuration.cells.cipher.caption" = "Cipher"; "configuration.cells.digest.caption" = "Authentication"; "configuration.cells.digest.value.embedded" = "Embedded"; -"configuration.cells.compression_frame.caption" = "Framing"; -"configuration.cells.compression_frame.value.disabled" = "None"; -"configuration.cells.compression_frame.value.lzo" = "LZO"; -"configuration.cells.compression_frame.value.compress" = "Compress"; "configuration.cells.reset_original.caption" = "Reset configuration"; "configuration.cells.client.caption" = "Client certificate"; "configuration.cells.client.value.enabled" = "Verified"; @@ -157,8 +154,14 @@ "configuration.cells.tls_wrapping.value.crypt" = "Encryption"; "configuration.cells.tls_wrapping.value.disabled" = "Disabled"; "configuration.cells.dns_server.caption" = "Address"; -"configuration.cells.compression_algorithm.caption" = "Compression"; +"configuration.cells.compression_framing.caption" = "Framing"; +"configuration.cells.compression_framing.value.disabled" = "None"; +"configuration.cells.compression_framing.value.lzo" = "--comp-lzo"; +"configuration.cells.compression_framing.value.compress" = "--compress"; +"configuration.cells.compression_algorithm.caption" = "Algorithm"; "configuration.cells.compression_algorithm.value.disabled" = "Disabled"; +"configuration.cells.compression_algorithm.value.lzo" = "LZO"; +"configuration.cells.compression_algorithm.value.other" = "Unsupported"; "configuration.cells.keep_alive.caption" = "Keep-alive"; "configuration.cells.keep_alive.value.seconds" = "%d seconds"; "configuration.cells.keep_alive.value.never" = "Disabled"; diff --git a/Passepartout/Sources/SwiftGen+Strings.swift b/Passepartout/Sources/SwiftGen+Strings.swift index e7842941..575fa86d 100644 --- a/Passepartout/Sources/SwiftGen+Strings.swift +++ b/Passepartout/Sources/SwiftGen+Strings.swift @@ -109,23 +109,27 @@ public enum L10n { } } public enum CompressionAlgorithm { - /// Compression + /// Algorithm public static let caption = L10n.tr("Localizable", "configuration.cells.compression_algorithm.caption") public enum Value { /// Disabled public static let disabled = L10n.tr("Localizable", "configuration.cells.compression_algorithm.value.disabled") + /// LZO + public static let lzo = L10n.tr("Localizable", "configuration.cells.compression_algorithm.value.lzo") + /// Unsupported + public static let other = L10n.tr("Localizable", "configuration.cells.compression_algorithm.value.other") } } - public enum CompressionFrame { + public enum CompressionFraming { /// Framing - public static let caption = L10n.tr("Localizable", "configuration.cells.compression_frame.caption") + public static let caption = L10n.tr("Localizable", "configuration.cells.compression_framing.caption") public enum Value { - /// Compress - public static let compress = L10n.tr("Localizable", "configuration.cells.compression_frame.value.compress") + /// --compress + public static let compress = L10n.tr("Localizable", "configuration.cells.compression_framing.value.compress") /// None - public static let disabled = L10n.tr("Localizable", "configuration.cells.compression_frame.value.disabled") - /// LZO - public static let lzo = L10n.tr("Localizable", "configuration.cells.compression_frame.value.lzo") + public static let disabled = L10n.tr("Localizable", "configuration.cells.compression_framing.value.disabled") + /// --comp-lzo + public static let lzo = L10n.tr("Localizable", "configuration.cells.compression_framing.value.lzo") } } public enum Digest { @@ -186,6 +190,10 @@ public enum L10n { /// Communication public static let header = L10n.tr("Localizable", "configuration.sections.communication.header") } + public enum Compression { + /// Compression + public static let header = L10n.tr("Localizable", "configuration.sections.compression.header") + } public enum Dns { /// DNS public static let header = L10n.tr("Localizable", "configuration.sections.dns.header")