From 36ee076c9c9dd2067ba5b8655a843be0a6218410 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sun, 24 Mar 2019 23:08:38 +0100 Subject: [PATCH 1/6] Add ProtonVPN provider --- Passepartout-iOS/Global/SwiftGen+Assets.swift | 1 + .../protonvpn.imageset/Contents.json | 22 ++++++++++++++++++ .../protonvpn.imageset/protonvpn@2x.png | Bin 0 -> 1892 bytes .../protonvpn.imageset/protonvpn@3x.png | Bin 0 -> 2692 bytes .../Scenes/AccountViewController.swift | 3 +++ .../Resources/en.lproj/Localizable.strings | 3 ++- Passepartout/Sources/AppConstants.swift | 2 ++ .../Sources/Services/Infrastructure.swift | 2 ++ .../Services/InfrastructureFactory.swift | 1 + Passepartout/Sources/SwiftGen+Strings.swift | 6 ++++- 10 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 Passepartout-iOS/Providers.xcassets/protonvpn.imageset/Contents.json create mode 100644 Passepartout-iOS/Providers.xcassets/protonvpn.imageset/protonvpn@2x.png create mode 100644 Passepartout-iOS/Providers.xcassets/protonvpn.imageset/protonvpn@3x.png diff --git a/Passepartout-iOS/Global/SwiftGen+Assets.swift b/Passepartout-iOS/Global/SwiftGen+Assets.swift index f0074be0..95926084 100644 --- a/Passepartout-iOS/Global/SwiftGen+Assets.swift +++ b/Passepartout-iOS/Global/SwiftGen+Assets.swift @@ -283,6 +283,7 @@ internal enum Asset { internal enum Providers { internal static let mullvad = ImageAsset(name: "mullvad") internal static let pia = ImageAsset(name: "pia") + internal static let protonvpn = ImageAsset(name: "protonvpn") internal static let tunnelbear = ImageAsset(name: "tunnelbear") internal static let windscribe = ImageAsset(name: "windscribe") } diff --git a/Passepartout-iOS/Providers.xcassets/protonvpn.imageset/Contents.json b/Passepartout-iOS/Providers.xcassets/protonvpn.imageset/Contents.json new file mode 100644 index 00000000..148aaa0a --- /dev/null +++ b/Passepartout-iOS/Providers.xcassets/protonvpn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "protonvpn@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "protonvpn@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Passepartout-iOS/Providers.xcassets/protonvpn.imageset/protonvpn@2x.png b/Passepartout-iOS/Providers.xcassets/protonvpn.imageset/protonvpn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9078f7bc59ae9d179b0e05c37731e69da1193118 GIT binary patch literal 1892 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 OpenVPN Login\" section of the website."; "account.sections.guidance.footer.infrastructure.tunnelbear" = "Use your %@ website credentials. Your username is usually your e-mail."; -"account.sections.guidance.footer.infrastructure.windscribe" = "Find your credentials in the OpenVPN Config Generator on the %@ website."; +"account.sections.guidance.footer.infrastructure.windscribe" = "Find your %@ credentials in the OpenVPN Config Generator on the website."; "account.sections.registration.footer" = "Go get an account on the %@ website."; "account.cells.username.caption" = "Username"; "account.cells.username.placeholder" = "username"; diff --git a/Passepartout/Sources/AppConstants.swift b/Passepartout/Sources/AppConstants.swift index 5e9daebb..6152c822 100644 --- a/Passepartout/Sources/AppConstants.swift +++ b/Passepartout/Sources/AppConstants.swift @@ -165,12 +165,14 @@ public class AppConstants { } public static let guidances: [Infrastructure.Name: String] = [ + .protonVpn: "https://account.protonvpn.com/settings", .windscribe: "https://windscribe.com/getconfig/openvpn" ] public static let referrals: [Infrastructure.Name: String] = [ .mullvad: "https://mullvad.net/en/account/create/", .pia: "https://www.privateinternetaccess.com/pages/buy-vpn/", + .protonVpn: "https://protonvpn.net/?aid=keeshux", .tunnelBear: "https://click.tunnelbear.com/aff_c?offer_id=2&aff_id=7464", .windscribe: "https://secure.link/kCsD0prd" ] diff --git a/Passepartout/Sources/Services/Infrastructure.swift b/Passepartout/Sources/Services/Infrastructure.swift index 14e5b4da..1319a93e 100644 --- a/Passepartout/Sources/Services/Infrastructure.swift +++ b/Passepartout/Sources/Services/Infrastructure.swift @@ -32,6 +32,8 @@ public struct Infrastructure: Codable { case pia = "PIA" + case protonVpn = "ProtonVPN" + case tunnelBear = "TunnelBear" case windscribe = "Windscribe" diff --git a/Passepartout/Sources/Services/InfrastructureFactory.swift b/Passepartout/Sources/Services/InfrastructureFactory.swift index 44e9a45f..07fcb50e 100644 --- a/Passepartout/Sources/Services/InfrastructureFactory.swift +++ b/Passepartout/Sources/Services/InfrastructureFactory.swift @@ -59,6 +59,7 @@ public class InfrastructureFactory { public let allNames: [Infrastructure.Name] = [ .mullvad, .pia, + .protonVpn, .tunnelBear, .windscribe ] diff --git a/Passepartout/Sources/SwiftGen+Strings.swift b/Passepartout/Sources/SwiftGen+Strings.swift index 561d4648..e3a95d1b 100644 --- a/Passepartout/Sources/SwiftGen+Strings.swift +++ b/Passepartout/Sources/SwiftGen+Strings.swift @@ -106,11 +106,15 @@ public enum L10n { public static func pia(_ p1: String) -> String { return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.pia", p1) } + /// Find your %@ credentials in the "Account > OpenVPN Login" section of the website. + public static func protonvpn(_ p1: String) -> String { + return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.protonvpn", p1) + } /// Use your %@ website credentials. Your username is usually your e-mail. public static func tunnelbear(_ p1: String) -> String { return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.tunnelbear", p1) } - /// Find your credentials in the OpenVPN Config Generator on the %@ website. + /// Find your %@ credentials in the OpenVPN Config Generator on the website. public static func windscribe(_ p1: String) -> String { return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.windscribe", p1) } From 13fa38fb84cf3eb9a5ac9191a6424d32812a62f7 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 6 Apr 2019 14:14:48 +0200 Subject: [PATCH 2/6] Add ProtonVPN infrastructure --- Passepartout/Resources/Web/net/protonvpn.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 Passepartout/Resources/Web/net/protonvpn.json diff --git a/Passepartout/Resources/Web/net/protonvpn.json b/Passepartout/Resources/Web/net/protonvpn.json new file mode 100644 index 00000000..e7dccda5 --- /dev/null +++ b/Passepartout/Resources/Web/net/protonvpn.json @@ -0,0 +1 @@ +{"pools":[{"id":"at-01","name":"","country":"AT","num":"01","free":false,"hostname":"at-01.protonvpn.com","addrs":[3119830075]},{"id":"at-02","name":"","country":"AT","num":"02","free":false,"hostname":"at-02.protonvpn.com","addrs":[3119830076]},{"id":"at-03","name":"","country":"AT","num":"03","free":false,"hostname":"at-03.protonvpn.com","addrs":[3119830077]},{"id":"at-04","name":"","country":"AT","num":"04","free":false,"hostname":"at-04.protonvpn.com","addrs":[3119830078]},{"id":"at-05","name":"","country":"AT","num":"05","free":false,"hostname":"at-05.protonvpn.com","addrs":[3119830235]},{"id":"at-06","name":"","country":"AT","num":"06","free":false,"hostname":"at-06.protonvpn.com","addrs":[3119830236]},{"id":"at-07","name":"","country":"AT","num":"07","free":false,"hostname":"at-07.protonvpn.com","addrs":[3119830237]},{"id":"at-08","name":"","country":"AT","num":"08","free":false,"hostname":"at-08.protonvpn.com","addrs":[3119830238]},{"id":"au-01","name":"","country":"AU","num":"01","free":false,"hostname":"au-01.protonvpn.com","addrs":[3114387722]},{"id":"au-02","name":"","country":"AU","num":"02","free":false,"hostname":"au-02.protonvpn.com","addrs":[3114387723]},{"id":"au-03","name":"","country":"AU","num":"03","free":false,"hostname":"au-03.protonvpn.com","addrs":[3114387724]},{"id":"au-04","name":"","country":"AU","num":"04","free":false,"hostname":"au-04.protonvpn.com","addrs":[3114387725]},{"id":"au-05","name":"","country":"AU","num":"05","free":false,"hostname":"au-05.protonvpn.com","addrs":[3114387726]},{"id":"au-06","name":"","country":"AU","num":"06","free":false,"hostname":"au-06.protonvpn.com","addrs":[3114387727]},{"id":"au-07","name":"","country":"AU","num":"07","free":false,"hostname":"au-07.protonvpn.com","addrs":[3114387728]},{"id":"au-08","name":"","country":"AU","num":"08","free":false,"hostname":"au-08.protonvpn.com","addrs":[3114387729]},{"id":"au-09","name":"","country":"AU","num":"09","free":false,"hostname":"au-09.protonvpn.com","addrs":[771247235]},{"id":"au-10","name":"","country":"AU","num":"10","free":false,"hostname":"au-10.protonvpn.com","addrs":[771247236]},{"id":"au-11","name":"","country":"AU","num":"11","free":false,"hostname":"au-11.protonvpn.com","addrs":[771247237]},{"id":"au-12","name":"","country":"AU","num":"12","free":false,"hostname":"au-12.protonvpn.com","addrs":[771247238]},{"id":"be-01","name":"","country":"BE","num":"01","free":false,"hostname":"be-01.protonvpn.com","addrs":[3238621875]},{"id":"be-02","name":"","country":"BE","num":"02","free":false,"hostname":"be-02.protonvpn.com","addrs":[3238621876]},{"id":"be-03","name":"","country":"BE","num":"03","free":false,"hostname":"be-03.protonvpn.com","addrs":[3238621877]},{"id":"be-04","name":"","country":"BE","num":"04","free":false,"hostname":"be-04.protonvpn.com","addrs":[3238621878]},{"id":"br-01","name":"","country":"BR","num":"01","free":false,"hostname":"br-01.protonvpn.com","addrs":[3050702404]},{"id":"br-02","name":"","country":"BR","num":"02","free":false,"hostname":"br-02.protonvpn.com","addrs":[3050702405]},{"id":"br-03","name":"","country":"BR","num":"03","free":false,"hostname":"br-03.protonvpn.com","addrs":[3050702406]},{"id":"br-04","name":"","country":"BR","num":"04","free":false,"hostname":"br-04.protonvpn.com","addrs":[3050702407]},{"id":"ca-01","name":"","country":"CA","num":"01","free":false,"hostname":"ca-01.protonvpn.com","addrs":[1761500219]},{"id":"ca-02","name":"","country":"CA","num":"02","free":false,"hostname":"ca-02.protonvpn.com","addrs":[1761500220]},{"id":"ca-03","name":"","country":"CA","num":"03","free":false,"hostname":"ca-03.protonvpn.com","addrs":[1761500221]},{"id":"ca-04","name":"","country":"CA","num":"04","free":false,"hostname":"ca-04.protonvpn.com","addrs":[1761500222]},{"id":"ca-05","name":"","country":"CA","num":"05","free":false,"hostname":"ca-05.protonvpn.com","addrs":[2891130947]},{"id":"ca-06","name":"","country":"CA","num":"06","free":false,"hostname":"ca-06.protonvpn.com","addrs":[2891130948]},{"id":"ca-07","name":"","country":"CA","num":"07","free":false,"hostname":"ca-07.protonvpn.com","addrs":[2891130949]},{"id":"ca-08","name":"","country":"CA","num":"08","free":false,"hostname":"ca-08.protonvpn.com","addrs":[2891130950]},{"id":"ca-09","name":"","country":"CA","num":"09","free":false,"hostname":"ca-09.protonvpn.com","addrs":[3485278043]},{"id":"ca-10","name":"","country":"CA","num":"10","free":false,"hostname":"ca-10.protonvpn.com","addrs":[3485278044]},{"id":"ca-11","name":"","country":"CA","num":"11","free":false,"hostname":"ca-11.protonvpn.com","addrs":[3485278045]},{"id":"ca-12","name":"","country":"CA","num":"12","free":false,"hostname":"ca-12.protonvpn.com","addrs":[3485278046]},{"id":"ch-01","name":"","country":"CH","num":"01","free":false,"hostname":"ch-01.protonvpn.com","addrs":[3115804810]},{"id":"ch-02","name":"","country":"CH","num":"02","free":false,"hostname":"ch-02.protonvpn.com","addrs":[3115804811]},{"id":"ch-03","name":"","country":"CH","num":"03","free":false,"hostname":"ch-03.protonvpn.com","addrs":[3115804812]},{"id":"ch-04","name":"","country":"CH","num":"04","free":false,"hostname":"ch-04.protonvpn.com","addrs":[3115804813]},{"id":"ch-05","name":"","country":"CH","num":"05","free":false,"hostname":"ch-05.protonvpn.com","addrs":[3114245384]},{"id":"ch-06","name":"","country":"CH","num":"06","free":false,"hostname":"ch-06.protonvpn.com","addrs":[3114245385]},{"id":"ch-07","name":"","country":"CH","num":"07","free":false,"hostname":"ch-07.protonvpn.com","addrs":[3114245386]},{"id":"ch-08","name":"","country":"CH","num":"08","free":false,"hostname":"ch-08.protonvpn.com","addrs":[3114245387]},{"id":"ch-09-tor","name":"","country":"CH","num":"09","free":false,"hostname":"ch-09-tor.protonvpn.com","addrs":[3115804814]},{"id":"ch-10","name":"","country":"CH","num":"10","free":false,"hostname":"ch-10.protonvpn.com","addrs":[3114245395]},{"id":"ch-11","name":"","country":"CH","num":"11","free":false,"hostname":"ch-11.protonvpn.com","addrs":[3114245396]},{"id":"ch-12","name":"","country":"CH","num":"12","free":false,"hostname":"ch-12.protonvpn.com","addrs":[3114245397]},{"id":"ch-13","name":"","country":"CH","num":"13","free":false,"hostname":"ch-13.protonvpn.com","addrs":[3114245398]},{"id":"cz-01","name":"","country":"CZ","num":"01","free":false,"hostname":"cz-01.protonvpn.com","addrs":[3119646211]},{"id":"cz-02","name":"","country":"CZ","num":"02","free":false,"hostname":"cz-02.protonvpn.com","addrs":[3119646212]},{"id":"cz-03","name":"","country":"CZ","num":"03","free":false,"hostname":"cz-03.protonvpn.com","addrs":[3119646213]},{"id":"cz-04","name":"","country":"CZ","num":"04","free":false,"hostname":"cz-04.protonvpn.com","addrs":[3119646214]},{"id":"de-01","name":"","country":"DE","num":"01","free":false,"hostname":"de-01.protonvpn.com","addrs":[624573157]},{"id":"de-02","name":"","country":"DE","num":"02","free":false,"hostname":"de-02.protonvpn.com","addrs":[624573158]},{"id":"de-03","name":"","country":"DE","num":"03","free":false,"hostname":"de-03.protonvpn.com","addrs":[624573159]},{"id":"de-04","name":"","country":"DE","num":"04","free":false,"hostname":"de-04.protonvpn.com","addrs":[624573160]},{"id":"de-05","name":"","country":"DE","num":"05","free":false,"hostname":"de-05.protonvpn.com","addrs":[2918785673]},{"id":"de-06","name":"","country":"DE","num":"06","free":false,"hostname":"de-06.protonvpn.com","addrs":[2918785674]},{"id":"de-07","name":"","country":"DE","num":"07","free":false,"hostname":"de-07.protonvpn.com","addrs":[2918785675]},{"id":"de-08","name":"","country":"DE","num":"08","free":false,"hostname":"de-08.protonvpn.com","addrs":[2918785676]},{"id":"de-09","name":"","country":"DE","num":"09","free":false,"hostname":"de-09.protonvpn.com","addrs":[1382420675]},{"id":"de-10","name":"","country":"DE","num":"10","free":false,"hostname":"de-10.protonvpn.com","addrs":[1382420676]},{"id":"de-11","name":"","country":"DE","num":"11","free":false,"hostname":"de-11.protonvpn.com","addrs":[1382420677]},{"id":"de-12","name":"","country":"DE","num":"12","free":false,"hostname":"de-12.protonvpn.com","addrs":[1382420678]},{"id":"dk-01","name":"","country":"DK","num":"01","free":false,"hostname":"dk-01.protonvpn.com","addrs":[1605255427]},{"id":"dk-02","name":"","country":"DK","num":"02","free":false,"hostname":"dk-02.protonvpn.com","addrs":[1605255428]},{"id":"dk-03","name":"","country":"DK","num":"03","free":false,"hostname":"dk-03.protonvpn.com","addrs":[1605255429]},{"id":"dk-04","name":"","country":"DK","num":"04","free":false,"hostname":"dk-04.protonvpn.com","addrs":[1605255430]},{"id":"es-05","name":"","country":"ES","num":"05","free":false,"hostname":"es-05.protonvpn.com","addrs":[3283462035]},{"id":"es-06","name":"","country":"ES","num":"06","free":false,"hostname":"es-06.protonvpn.com","addrs":[3283462036]},{"id":"es-07","name":"","country":"ES","num":"07","free":false,"hostname":"es-07.protonvpn.com","addrs":[3283462037]},{"id":"es-08","name":"","country":"ES","num":"08","free":false,"hostname":"es-08.protonvpn.com","addrs":[3283462038]},{"id":"fi-01","name":"","country":"FI","num":"01","free":false,"hostname":"fi-01.protonvpn.com","addrs":[3257041976]},{"id":"fi-02","name":"","country":"FI","num":"02","free":false,"hostname":"fi-02.protonvpn.com","addrs":[3257041977]},{"id":"fi-03","name":"","country":"FI","num":"03","free":false,"hostname":"fi-03.protonvpn.com","addrs":[3257041978]},{"id":"fi-04","name":"","country":"FI","num":"04","free":false,"hostname":"fi-04.protonvpn.com","addrs":[3257041979]},{"id":"fr-05","name":"","country":"FR","num":"05","free":false,"hostname":"fr-05.protonvpn.com","addrs":[3109993915]},{"id":"fr-06","name":"","country":"FR","num":"06","free":false,"hostname":"fr-06.protonvpn.com","addrs":[3109993916]},{"id":"fr-07","name":"","country":"FR","num":"07","free":false,"hostname":"fr-07.protonvpn.com","addrs":[3109993917]},{"id":"fr-08","name":"","country":"FR","num":"08","free":false,"hostname":"fr-08.protonvpn.com","addrs":[3109993918]},{"id":"fr-09","name":"","country":"FR","num":"09","free":false,"hostname":"fr-09.protonvpn.com","addrs":[3258710291]},{"id":"fr-10","name":"","country":"FR","num":"10","free":false,"hostname":"fr-10.protonvpn.com","addrs":[3258710292]},{"id":"fr-11","name":"","country":"FR","num":"11","free":false,"hostname":"fr-11.protonvpn.com","addrs":[3258710293]},{"id":"fr-12","name":"","country":"FR","num":"12","free":false,"hostname":"fr-12.protonvpn.com","addrs":[3258710294]},{"id":"hk-01","name":"","country":"HK","num":"01","free":false,"hostname":"hk-01.protonvpn.com","addrs":[3510286823]},{"id":"hk-02","name":"","country":"HK","num":"02","free":false,"hostname":"hk-02.protonvpn.com","addrs":[3510286824]},{"id":"hk-03","name":"","country":"HK","num":"03","free":false,"hostname":"hk-03.protonvpn.com","addrs":[3510286825]},{"id":"hk-04","name":"","country":"HK","num":"04","free":false,"hostname":"hk-04.protonvpn.com","addrs":[3510286826]},{"id":"hk-05-tor","name":"","country":"HK","num":"05","free":false,"hostname":"hk-05-tor.protonvpn.com","addrs":[3510286746]},{"id":"ie-01","name":"","country":"IE","num":"01","free":false,"hostname":"ie-01.protonvpn.com","addrs":[94178563]},{"id":"ie-02","name":"","country":"IE","num":"02","free":false,"hostname":"ie-02.protonvpn.com","addrs":[94178564]},{"id":"ie-03","name":"","country":"IE","num":"03","free":false,"hostname":"ie-03.protonvpn.com","addrs":[94178565]},{"id":"ie-04","name":"","country":"IE","num":"04","free":false,"hostname":"ie-04.protonvpn.com","addrs":[94178566]},{"id":"il-01","name":"","country":"IL","num":"01","free":false,"hostname":"il-01.protonvpn.com","addrs":[1475346277]},{"id":"il-02","name":"","country":"IL","num":"02","free":false,"hostname":"il-02.protonvpn.com","addrs":[1475346278]},{"id":"il-03","name":"","country":"IL","num":"03","free":false,"hostname":"il-03.protonvpn.com","addrs":[1475346279]},{"id":"il-04","name":"","country":"IL","num":"04","free":false,"hostname":"il-04.protonvpn.com","addrs":[1475346280]},{"id":"in-01","name":"","country":"IN","num":"01","free":false,"hostname":"in-01.protonvpn.com","addrs":[1742596363]},{"id":"in-02","name":"","country":"IN","num":"02","free":false,"hostname":"in-02.protonvpn.com","addrs":[1742596364]},{"id":"is-01","name":"","country":"IS","num":"01","free":false,"hostname":"is-01.protonvpn.com","addrs":[3114245732]},{"id":"is-02","name":"","country":"IS","num":"02","free":false,"hostname":"is-02.protonvpn.com","addrs":[3114245733]},{"id":"is-03","name":"","country":"IS","num":"03","free":false,"hostname":"is-03.protonvpn.com","addrs":[3114245682]},{"id":"is-04","name":"","country":"IS","num":"04","free":false,"hostname":"is-04.protonvpn.com","addrs":[3114245683]},{"id":"is-05","name":"","country":"IS","num":"05","free":false,"hostname":"is-05.protonvpn.com","addrs":[3114245689]},{"id":"is-06","name":"","country":"IS","num":"06","free":false,"hostname":"is-06.protonvpn.com","addrs":[3114245690]},{"id":"is-07","name":"","country":"IS","num":"07","free":false,"hostname":"is-07.protonvpn.com","addrs":[3114245739]},{"id":"is-08","name":"","country":"IS","num":"08","free":false,"hostname":"is-08.protonvpn.com","addrs":[3114245740]},{"id":"it-01","name":"","country":"IT","num":"01","free":false,"hostname":"it-01.protonvpn.com","addrs":[3112180579]},{"id":"it-02","name":"","country":"IT","num":"02","free":false,"hostname":"it-02.protonvpn.com","addrs":[3112180580]},{"id":"it-03","name":"","country":"IT","num":"03","free":false,"hostname":"it-03.protonvpn.com","addrs":[3112180581]},{"id":"it-04","name":"","country":"IT","num":"04","free":false,"hostname":"it-04.protonvpn.com","addrs":[3112180582]},{"id":"jp-01","name":"","country":"JP","num":"01","free":false,"hostname":"jp-01.protonvpn.com","addrs":[3114387466]},{"id":"jp-02","name":"","country":"JP","num":"02","free":false,"hostname":"jp-02.protonvpn.com","addrs":[3114387467]},{"id":"jp-03","name":"","country":"JP","num":"03","free":false,"hostname":"jp-03.protonvpn.com","addrs":[3114387468]},{"id":"jp-04","name":"","country":"JP","num":"04","free":false,"hostname":"jp-04.protonvpn.com","addrs":[3114387469]},{"id":"jp-05","name":"","country":"JP","num":"05","free":false,"hostname":"jp-05.protonvpn.com","addrs":[3114387470]},{"id":"jp-06","name":"","country":"JP","num":"06","free":false,"hostname":"jp-06.protonvpn.com","addrs":[3114387471]},{"id":"jp-07","name":"","country":"JP","num":"07","free":false,"hostname":"jp-07.protonvpn.com","addrs":[3114387472]},{"id":"jp-08","name":"","country":"JP","num":"08","free":false,"hostname":"jp-08.protonvpn.com","addrs":[3114387473]},{"id":"jp-09","name":"","country":"JP","num":"09","free":false,"hostname":"jp-09.protonvpn.com","addrs":[3119645899]},{"id":"jp-10","name":"","country":"JP","num":"10","free":false,"hostname":"jp-10.protonvpn.com","addrs":[3119645900]},{"id":"jp-11","name":"","country":"JP","num":"11","free":false,"hostname":"jp-11.protonvpn.com","addrs":[3119645901]},{"id":"jp-12","name":"","country":"JP","num":"12","free":false,"hostname":"jp-12.protonvpn.com","addrs":[3119645902]},{"id":"jp-13","name":"","country":"JP","num":"13","free":false,"hostname":"jp-13.protonvpn.com","addrs":[1540337323]},{"id":"jp-14","name":"","country":"JP","num":"14","free":false,"hostname":"jp-14.protonvpn.com","addrs":[1540337324]},{"id":"jp-15","name":"","country":"JP","num":"15","free":false,"hostname":"jp-15.protonpvn.com","addrs":[]},{"id":"jp-16","name":"","country":"JP","num":"16","free":false,"hostname":"jp-16.protonvpn.com","addrs":[1540337326]},{"id":"jp-17","name":"","country":"JP","num":"17","free":false,"hostname":"jp-17.protonvpn.com","addrs":[3247706339]},{"id":"jp-18","name":"","country":"JP","num":"18","free":false,"hostname":"jp-18.protonvpn.com","addrs":[3247706340]},{"id":"jp-19","name":"","country":"JP","num":"19","free":false,"hostname":"jp-19.protonvpn.com","addrs":[3247706341]},{"id":"jp-20","name":"","country":"JP","num":"20","free":false,"hostname":"jp-20.protonvpn.com","addrs":[3247706342]},{"id":"jp-free-01","name":"","country":"JP","num":"01","free":true,"hostname":"jp-free-01.protonvpn.com","addrs":[1540337325,1540337326,3114387467,1540337324,3114387466]},{"id":"jp-free-02","name":"","country":"JP","num":"02","free":true,"hostname":"jp-free-02.protonvpn.com","addrs":[1540337323,3119645901,3119645899,3119645900,3119645902]},{"id":"jp-free-03","name":"","country":"JP","num":"03","free":true,"hostname":"jp-free-03.protonvpn.com","addrs":[3247706339,3247706340,3247706342,3247706341]},{"id":"kr-01","name":"","country":"KR","num":"01","free":false,"hostname":"kr-01.protonvpn.com","addrs":[469720102]},{"id":"kr-02","name":"","country":"KR","num":"02","free":false,"hostname":"kr-02.protonvpn.com","addrs":[469720103]},{"id":"kr-03","name":"","country":"KR","num":"03","free":false,"hostname":"kr-03.protonvpn.com","addrs":[469720104]},{"id":"kr-04","name":"","country":"KR","num":"04","free":false,"hostname":"kr-04.protonvpn.com","addrs":[469720105]},{"id":"lu-01","name":"","country":"LU","num":"01","free":false,"hostname":"lu-01.protonvpn.com","addrs":[1592976564]},{"id":"lu-02","name":"","country":"LU","num":"02","free":false,"hostname":"lu-02.protonvpn.com","addrs":[1592976556]},{"id":"lu-03","name":"","country":"LU","num":"03","free":false,"hostname":"lu-03.protonvpn.com","addrs":[1592976557]},{"id":"lu-04","name":"","country":"LU","num":"04","free":false,"hostname":"lu-04.protonvpn.com","addrs":[1592976558]},{"id":"nl-01","name":"","country":"NL","num":"01","free":false,"hostname":"nl-01.protonvpn.com","addrs":[1047529893]},{"id":"nl-02","name":"","country":"NL","num":"02","free":false,"hostname":"nl-02.protonvpn.com","addrs":[1047529894]},{"id":"nl-03","name":"","country":"NL","num":"03","free":false,"hostname":"nl-03.protonvpn.com","addrs":[1047529895]},{"id":"nl-04","name":"","country":"NL","num":"04","free":false,"hostname":"nl-04.protonvpn.com","addrs":[1047529965]},{"id":"nl-05","name":"","country":"NL","num":"05","free":false,"hostname":"nl-05.protonvpn.com","addrs":[1308078774]},{"id":"nl-06","name":"","country":"NL","num":"06","free":false,"hostname":"nl-06.protonvpn.com","addrs":[1308078775]},{"id":"nl-07","name":"","country":"NL","num":"07","free":false,"hostname":"nl-07.protonvpn.com","addrs":[1308078777]},{"id":"nl-08","name":"","country":"NL","num":"08","free":false,"hostname":"nl-08.protonvpn.com","addrs":[1308078778]},{"id":"nl-09","name":"","country":"NL","num":"09","free":false,"hostname":"nl-09.protonvpn.com","addrs":[1495755728]},{"id":"nl-101","name":"","country":"NL","num":"101","free":false,"hostname":"nl-101.protonvpn.com","addrs":[3642164059]},{"id":"nl-102","name":"","country":"NL","num":"102","free":false,"hostname":"nl-102.protonvpn.com","addrs":[3642164060]},{"id":"nl-103","name":"","country":"NL","num":"103","free":false,"hostname":"nl-103.protonvpn.com","addrs":[3642164064]},{"id":"nl-104","name":"","country":"NL","num":"104","free":false,"hostname":"nl-104.protonvpn.com","addrs":[3642164139]},{"id":"nl-105","name":"","country":"NL","num":"105","free":false,"hostname":"nl-105.protonvpn.com","addrs":[1495755722]},{"id":"nl-106","name":"","country":"NL","num":"106","free":false,"hostname":"nl-106.protonvpn.com","addrs":[1495755723]},{"id":"nl-107","name":"","country":"NL","num":"107","free":false,"hostname":"nl-107.protonvpn.com","addrs":[1495755724]},{"id":"nl-108","name":"","country":"NL","num":"108","free":false,"hostname":"nl-108.protonvpn.com","addrs":[1495755725]},{"id":"nl-109","name":"","country":"NL","num":"109","free":false,"hostname":"nl-109.protonvpn.com","addrs":[1495755718]},{"id":"nl-10","name":"","country":"NL","num":"10","free":false,"hostname":"nl-10.protonvpn.com","addrs":[1495755729]},{"id":"nl-110","name":"","country":"NL","num":"110","free":false,"hostname":"nl-110.protonvpn.com","addrs":[1495755719]},{"id":"nl-111","name":"","country":"NL","num":"111","free":false,"hostname":"nl-111.protonvpn.com","addrs":[1495755720]},{"id":"nl-112","name":"","country":"NL","num":"112","free":false,"hostname":"nl-112.protonvpn.com","addrs":[1495755721]},{"id":"nl-113","name":"","country":"NL","num":"113","free":false,"hostname":"nl-113.protonvpn.com","addrs":[1495755714]},{"id":"nl-114","name":"","country":"NL","num":"114","free":false,"hostname":"nl-114.protonvpn.com","addrs":[1495755715]},{"id":"nl-115","name":"","country":"NL","num":"115","free":false,"hostname":"nl-115.protonvpn.com","addrs":[1495755716]},{"id":"nl-116","name":"","country":"NL","num":"116","free":false,"hostname":"nl-116.protonvpn.com","addrs":[1495755717]},{"id":"nl-117","name":"","country":"NL","num":"117","free":false,"hostname":"nl-117.protonvpn.com","addrs":[1495755710]},{"id":"nl-118","name":"","country":"NL","num":"118","free":false,"hostname":"nl-118.protonvpn.com","addrs":[1495755711]},{"id":"nl-119","name":"","country":"NL","num":"119","free":false,"hostname":"nl-119.protonvpn.com","addrs":[1495755712]},{"id":"nl-11","name":"","country":"NL","num":"11","free":false,"hostname":"nl-11.protonvpn.com","addrs":[1495755730]},{"id":"nl-120","name":"","country":"NL","num":"120","free":false,"hostname":"nl-120.protonvpn.com","addrs":[1495755713]},{"id":"nl-125","name":"","country":"NL","num":"125","free":false,"hostname":"nl-125.protonvpn.com","addrs":[1841923350]},{"id":"nl-126","name":"","country":"NL","num":"126","free":false,"hostname":"nl-126.protonvpn.com","addrs":[1841923352]},{"id":"nl-127","name":"","country":"NL","num":"127","free":false,"hostname":"nl-127.protonvpn.com","addrs":[1841923354]},{"id":"nl-128","name":"","country":"NL","num":"128","free":false,"hostname":"nl-128.protonvpn.com","addrs":[1841923358]},{"id":"nl-129","name":"","country":"NL","num":"129","free":false,"hostname":"nl-129.protonvpn.com","addrs":[782667478]},{"id":"nl-12","name":"","country":"NL","num":"12","free":false,"hostname":"nl-12.protonvpn.com","addrs":[1495755731]},{"id":"nl-130","name":"","country":"NL","num":"130","free":false,"hostname":"nl-130.protonvpn.com","addrs":[782667479]},{"id":"nl-131","name":"","country":"NL","num":"131","free":false,"hostname":"nl-131.protonvpn.com","addrs":[782667480]},{"id":"nl-132","name":"","country":"NL","num":"132","free":false,"hostname":"nl-132.protonvpn.com","addrs":[782667481]},{"id":"nl-133","name":"","country":"NL","num":"133","free":false,"hostname":"nl-133.protonvpn.com","addrs":[782667483]},{"id":"nl-134","name":"","country":"NL","num":"134","free":false,"hostname":"nl-134.protonvpn.com","addrs":[782667484]},{"id":"nl-135","name":"","country":"NL","num":"135","free":false,"hostname":"nl-135.protonvpn.com","addrs":[782667485]},{"id":"nl-136","name":"","country":"NL","num":"136","free":false,"hostname":"nl-136.protonvpn.com","addrs":[782667486]},{"id":"nl-137","name":"","country":"NL","num":"137","free":false,"hostname":"nl-137.protonvpn.com","addrs":[3114660131]},{"id":"nl-138","name":"","country":"NL","num":"138","free":false,"hostname":"nl-138.protonvpn.com","addrs":[3114660132]},{"id":"nl-139","name":"","country":"NL","num":"139","free":false,"hostname":"nl-139.protonvpn.com","addrs":[3114660133]},{"id":"nl-140","name":"","country":"NL","num":"140","free":false,"hostname":"nl-140.protonvpn.com","addrs":[3114660134]},{"id":"nl-free-01","name":"","country":"NL","num":"01","free":true,"hostname":"nl-free-01.protonvpn.com","addrs":[1495755715,1495755719,1841923350,782667479,1495755711,1495755723,782667484,3642164059,1841923352,1495755718,1495755716,1495755712,1495755714,1495755710,1495755720,3642164060,1841923354,782667483,782667478,1495755722,1495755724,3642164064]},{"id":"nl-free-02","name":"","country":"NL","num":"02","free":true,"hostname":"nl-free-02.protonvpn.com","addrs":[3642164139,782667485,782667480,1495755713,782667481,1495755721,1495755725,782667486,1841923358,1495755717]},{"id":"no-01","name":"","country":"NO","num":"01","free":false,"hostname":"no-01.protonvpn.com","addrs":[1605255739]},{"id":"no-02","name":"","country":"NO","num":"02","free":false,"hostname":"no-02.protonvpn.com","addrs":[1605255740]},{"id":"no-03","name":"","country":"NO","num":"03","free":false,"hostname":"no-03.protonvpn.com","addrs":[1605255741]},{"id":"no-04","name":"","country":"NO","num":"04","free":false,"hostname":"no-04.protonvpn.com","addrs":[1605255742]},{"id":"nz-01","name":"","country":"NZ","num":"01","free":false,"hostname":"nz-01.protonvpn.com","addrs":[3029723043]},{"id":"nz-02","name":"","country":"NZ","num":"02","free":false,"hostname":"nz-02.protonvpn.com","addrs":[3029723044]},{"id":"nz-03","name":"","country":"NZ","num":"03","free":false,"hostname":"nz-03.protonvpn.com","addrs":[3029723045]},{"id":"nz-04","name":"","country":"NZ","num":"04","free":false,"hostname":"nz-04.protonvpn.com","addrs":[3029723046]},{"id":"pl-01","name":"","country":"PL","num":"01","free":false,"hostname":"pl-01.protonvpn.com","addrs":[3261294923]},{"id":"pl-02","name":"","country":"PL","num":"02","free":false,"hostname":"pl-02.protonvpn.com","addrs":[3261294924]},{"id":"pl-03","name":"","country":"PL","num":"03","free":false,"hostname":"pl-03.protonvpn.com","addrs":[3261294925]},{"id":"pl-04","name":"","country":"PL","num":"04","free":false,"hostname":"pl-04.protonvpn.com","addrs":[3261294926]},{"id":"pt-01","name":"","country":"PT","num":"01","free":false,"hostname":"pt-01.protonvpn.com","addrs":[3115228162]},{"id":"pt-02","name":"","country":"PT","num":"02","free":false,"hostname":"pt-02.protonvpn.com","addrs":[3115228163]},{"id":"pt-03","name":"","country":"PT","num":"03","free":false,"hostname":"pt-03.protonvpn.com","addrs":[3115228164]},{"id":"pt-04","name":"","country":"PT","num":"04","free":false,"hostname":"pt-04.protonvpn.com","addrs":[3115228165]},{"id":"ru-01","name":"","country":"RU","num":"01","free":false,"hostname":"ru-01.protonvpn.com","addrs":[84414699]},{"id":"ru-02","name":"","country":"RU","num":"02","free":false,"hostname":"ru-02.protonvpn.com","addrs":[84414700]},{"id":"ru-03","name":"","country":"RU","num":"03","free":false,"hostname":"ru-03.protonvpn.com","addrs":[84414701]},{"id":"ru-04","name":"","country":"RU","num":"04","free":false,"hostname":"ru-04.protonvpn.com","addrs":[84414702]},{"id":"se-01","name":"","country":"SE","num":"01","free":false,"hostname":"se-01.protonvpn.com","addrs":[3114245123]},{"id":"se-02","name":"","country":"SE","num":"02","free":false,"hostname":"se-02.protonvpn.com","addrs":[3114245124]},{"id":"se-03","name":"","country":"SE","num":"03","free":false,"hostname":"se-03.protonvpn.com","addrs":[3114245125]},{"id":"se-04","name":"","country":"SE","num":"04","free":false,"hostname":"se-04.protonvpn.com","addrs":[3114245126]},{"id":"se-05","name":"","country":"SE","num":"05","free":false,"hostname":"se-05.protonvpn.com","addrs":[3114245137]},{"id":"se-06","name":"","country":"SE","num":"06","free":false,"hostname":"se-06.protonvpn.com","addrs":[3114245138]},{"id":"se-07","name":"","country":"SE","num":"07","free":false,"hostname":"se-07.protonvpn.com","addrs":[3114245139]},{"id":"se-08","name":"","country":"SE","num":"08","free":false,"hostname":"se-08.protonvpn.com","addrs":[3114245140]},{"id":"sg-01","name":"","country":"SG","num":"01","free":false,"hostname":"sg-01.protonvpn.com","addrs":[3510282470]},{"id":"sg-02","name":"","country":"SG","num":"02","free":false,"hostname":"sg-02.protonvpn.com","addrs":[3510282471]},{"id":"sg-03","name":"","country":"SG","num":"03","free":false,"hostname":"sg-03.protonvpn.com","addrs":[3510282472]},{"id":"sg-04","name":"","country":"SG","num":"04","free":false,"hostname":"sg-04.protonvpn.com","addrs":[3510282473]},{"id":"sg-05","name":"","country":"SG","num":"05","free":false,"hostname":"sg-05.protonvpn.com","addrs":[3510283112]},{"id":"sg-06","name":"","country":"SG","num":"06","free":false,"hostname":"sg-06.protonvpn.com","addrs":[3510283113]},{"id":"sg-07","name":"","country":"SG","num":"07","free":false,"hostname":"sg-07.protonvpn.com","addrs":[3510283114]},{"id":"sg-08","name":"","country":"SG","num":"08","free":false,"hostname":"sg-08.protonvpn.com","addrs":[3510283115]},{"id":"sg-09","name":"","country":"SG","num":"09","free":false,"hostname":"sg-09.protonvpn.com","addrs":[1540336971]},{"id":"sg-10","name":"","country":"SG","num":"10","free":false,"hostname":"sg-10.protonvpn.com","addrs":[1540336972]},{"id":"sg-11","name":"","country":"SG","num":"11","free":false,"hostname":"sg-11.protonvpn.com","addrs":[1540336973]},{"id":"sg-12","name":"","country":"SG","num":"12","free":false,"hostname":"sg-12.protonvpn.com","addrs":[1540336974]},{"id":"sg-13","name":"","country":"SG","num":"13","free":false,"hostname":"sg-13.protonvpn.com","addrs":[3112179731]},{"id":"sg-14","name":"","country":"SG","num":"14","free":false,"hostname":"sg-14.protonvpn.com","addrs":[3112179732]},{"id":"sg-15","name":"","country":"SG","num":"15","free":false,"hostname":"sg-15.protonvpn.com","addrs":[3112179733]},{"id":"sg-16","name":"","country":"SG","num":"16","free":false,"hostname":"sg-16.protonvpn.com","addrs":[3112179734]},{"id":"sg-17","name":"","country":"SG","num":"17","free":false,"hostname":"sg-17.protonvpn.com","addrs":[3112179739]},{"id":"sg-18","name":"","country":"SG","num":"18","free":false,"hostname":"sg-18.protonvpn.com","addrs":[3112179740]},{"id":"sg-19","name":"","country":"SG","num":"19","free":false,"hostname":"sg-19.protonvpn.com","addrs":[3112179741]},{"id":"sg-20","name":"","country":"SG","num":"20","free":false,"hostname":"sg-20.protonvpn.com","addrs":[3112179742]},{"id":"uk-05","name":"","country":"GB","num":"05","free":false,"hostname":"uk-05.protonvpn.com","addrs":[3106688118]},{"id":"uk-06","name":"","country":"GB","num":"06","free":false,"hostname":"uk-06.protonvpn.com","addrs":[3106688119]},{"id":"uk-07","name":"","country":"GB","num":"07","free":false,"hostname":"uk-07.protonvpn.com","addrs":[3106688120]},{"id":"uk-08","name":"","country":"GB","num":"08","free":false,"hostname":"uk-08.protonvpn.com","addrs":[3106688121]},{"id":"uk-09","name":"","country":"GB","num":"09","free":false,"hostname":"uk-09.protonvpn.com","addrs":[1318966251]},{"id":"uk-10","name":"","country":"GB","num":"10","free":false,"hostname":"uk-10.protonvpn.com","addrs":[1318966252]},{"id":"uk-11","name":"","country":"GB","num":"11","free":false,"hostname":"uk-11.protonvpn.com","addrs":[1318966253]},{"id":"uk-12","name":"","country":"GB","num":"12","free":false,"hostname":"uk-12.protonvpn.com","addrs":[1318966254]},{"id":"us-ca-01","name":"","country":"US","area":"ca","num":"01","free":false,"hostname":"us-ca-01.protonvpn.com","addrs":[3510272353]},{"id":"us-ca-02","name":"","country":"US","area":"ca","num":"02","free":false,"hostname":"us-ca-02.protonvpn.com","addrs":[3510272354]},{"id":"us-ca-03","name":"","country":"US","area":"ca","num":"03","free":false,"hostname":"us-ca-03.protonvpn.com","addrs":[3510272355]},{"id":"us-ca-04","name":"","country":"US","area":"ca","num":"04","free":false,"hostname":"us-ca-04.protonvpn.com","addrs":[3510272356]},{"id":"us-ca-09","name":"","country":"US","area":"ca","num":"09","free":false,"hostname":"us-ca-09.protonvpn.com","addrs":[3325306424]},{"id":"us-ca-101","name":"","country":"US","area":"ca","num":"101","free":false,"hostname":"us-ca-101.protonvpn.com","addrs":[3510275738]},{"id":"us-ca-102","name":"","country":"US","area":"ca","num":"102","free":false,"hostname":"us-ca-102.protonvpn.com","addrs":[3510275739]},{"id":"us-ca-103","name":"","country":"US","area":"ca","num":"103","free":false,"hostname":"us-ca-103.protonvpn.com","addrs":[3510275740]},{"id":"us-ca-104","name":"","country":"US","area":"ca","num":"104","free":false,"hostname":"us-ca-104.protonvpn.com","addrs":[3510275741]},{"id":"us-ca-105","name":"","country":"US","area":"ca","num":"105","free":false,"hostname":"us-ca-105.protonvpn.com","addrs":[3510275742]},{"id":"us-ca-106","name":"","country":"US","area":"ca","num":"106","free":false,"hostname":"us-ca-106.protonvpn.com","addrs":[3510275743]},{"id":"us-ca-107","name":"","country":"US","area":"ca","num":"107","free":false,"hostname":"us-ca-107.protonvpn.com","addrs":[3510275744]},{"id":"us-ca-108","name":"","country":"US","area":"ca","num":"108","free":false,"hostname":"us-ca-108.protonvpn.com","addrs":[3510275745]},{"id":"us-ca-10","name":"","country":"US","area":"ca","num":"10","free":false,"hostname":"us-ca-10.protonvpn.com","addrs":[3325306425]},{"id":"us-ca-113","name":"","country":"US","area":"ca","num":"113","free":false,"hostname":"us-ca-113.protonvpn.com","addrs":[3325306420]},{"id":"us-ca-114","name":"","country":"US","area":"ca","num":"114","free":false,"hostname":"us-ca-114.protonvpn.com","addrs":[3325306421]},{"id":"us-ca-115","name":"","country":"US","area":"ca","num":"115","free":false,"hostname":"us-ca-115.protonvpn.com","addrs":[3325306422]},{"id":"us-ca-116","name":"","country":"US","area":"ca","num":"116","free":false,"hostname":"us-ca-116.protonvpn.com","addrs":[3325306423]},{"id":"us-ca-11","name":"","country":"US","area":"ca","num":"11","free":false,"hostname":"us-ca-11.protonvpn.com","addrs":[3325306426]},{"id":"us-ca-12","name":"","country":"US","area":"ca","num":"12","free":false,"hostname":"us-ca-12.protonvpn.com","addrs":[3325306427]},{"id":"us-co-09","name":"","country":"US","area":"co","num":"09","free":false,"hostname":"us-co-09.protonvpn.com","addrs":[3325305875]},{"id":"us-co-10","name":"","country":"US","area":"co","num":"10","free":false,"hostname":"us-co-10.protonvpn.com","addrs":[3325305876]},{"id":"us-co-11","name":"","country":"US","area":"co","num":"11","free":false,"hostname":"us-co-11.protonvpn.com","addrs":[3325305877]},{"id":"us-co-12","name":"","country":"US","area":"co","num":"12","free":false,"hostname":"us-co-12.protonvpn.com","addrs":[3325305878]},{"id":"us-co-13","name":"","country":"US","area":"co","num":"13","free":false,"hostname":"us-co-13.protonvpn.com","addrs":[2455290187]},{"id":"us-co-14","name":"","country":"US","area":"co","num":"14","free":false,"hostname":"us-co-14.protonvpn.com","addrs":[2455290188]},{"id":"us-co-15","name":"","country":"US","area":"co","num":"15","free":false,"hostname":"us-co-15.protonvpn.com","addrs":[2455290189]},{"id":"us-co-16","name":"","country":"US","area":"co","num":"16","free":false,"hostname":"us-co-16.protonvpn.com","addrs":[2455290190]},{"id":"us-free-01","name":"","country":"US","num":"01","free":true,"hostname":"us-free-01.protonvpn.com","addrs":[3510277074,1815805989,3510275743,3510275738,3510275745,3488902579,3510275742,1815805990,3510277105,3510277106,3227568966,3510277109,3510277102,1168230213,3510275741,1168230214,1168230212,3510277108,3227568965,3510277103,3488902580,1815805991,3510275739]},{"id":"us-free-02","name":"","country":"US","num":"02","free":true,"hostname":"us-free-02.protonvpn.com","addrs":[3227568967,3510275744,3325306421,3227568968,3510275740,3488902581,1168230215,3325306420,3488902582,3325306422,3325306423,1815805992,3510277107]},{"id":"us-il-05","name":"","country":"US","area":"il","num":"05","free":false,"hostname":"us-il-05.protonvpn.com","addrs":[3496225721]},{"id":"us-il-06","name":"","country":"US","area":"il","num":"06","free":false,"hostname":"us-il-06.protonvpn.com","addrs":[3496225722]},{"id":"us-il-07","name":"","country":"US","area":"il","num":"07","free":false,"hostname":"us-il-07.protonvpn.com","addrs":[3496225723]},{"id":"us-il-08","name":"","country":"US","area":"il","num":"08","free":false,"hostname":"us-il-08.protonvpn.com","addrs":[3496225724]},{"id":"us-il-09","name":"","country":"US","area":"il","num":"09","free":false,"hostname":"us-il-09.protonvpn.com","addrs":[1168230216]},{"id":"us-il-105","name":"","country":"US","area":"il","num":"105","free":false,"hostname":"us-il-105.protonvpn.com","addrs":[1168230212]},{"id":"us-il-106","name":"","country":"US","area":"il","num":"106","free":false,"hostname":"us-il-106.protonvpn.com","addrs":[1168230213]},{"id":"us-il-107","name":"","country":"US","area":"il","num":"107","free":false,"hostname":"us-il-107.protonvpn.com","addrs":[1168230214]},{"id":"us-il-108","name":"","country":"US","area":"il","num":"108","free":false,"hostname":"us-il-108.protonvpn.com","addrs":[1168230215]},{"id":"us-il-10","name":"","country":"US","area":"il","num":"10","free":false,"hostname":"us-il-10.protonvpn.com","addrs":[1168230217]},{"id":"us-il-11","name":"","country":"US","area":"il","num":"11","free":false,"hostname":"us-il-11.protonvpn.com","addrs":[1168230218]},{"id":"us-il-12","name":"","country":"US","area":"il","num":"12","free":false,"hostname":"us-il-12.protonvpn.com","addrs":[1168230219]},{"id":"us-nj-01","name":"","country":"US","area":"nj","num":"01","free":false,"hostname":"us-nj-01.protonvpn.com","addrs":[1137333113]},{"id":"us-nj-02","name":"","country":"US","area":"nj","num":"02","free":false,"hostname":"us-nj-02.protonvpn.com","addrs":[1137333114]},{"id":"us-nj-03","name":"","country":"US","area":"nj","num":"03","free":false,"hostname":"us-nj-03.protonvpn.com","addrs":[1137333115]},{"id":"us-nj-04","name":"","country":"US","area":"nj","num":"04","free":false,"hostname":"us-nj-04.protonvpn.com","addrs":[1137333116]},{"id":"us-nj-05","name":"","country":"US","area":"nj","num":"05","free":false,"hostname":"us-nj-05.protonvpn.com","addrs":[3237797411]},{"id":"us-nj-06","name":"","country":"US","area":"nj","num":"06","free":false,"hostname":"us-nj-06.protonvpn.com","addrs":[3237797412]},{"id":"us-nj-07","name":"","country":"US","area":"nj","num":"07","free":false,"hostname":"us-nj-07.protonvpn.com","addrs":[3237797413]},{"id":"us-nj-08","name":"","country":"US","area":"nj","num":"08","free":false,"hostname":"us-nj-08.protonvpn.com","addrs":[3237797414]},{"id":"us-ny-01","name":"","country":"US","area":"ny","num":"01","free":false,"hostname":"us-ny-01.protonvpn.com","addrs":[1759418739]},{"id":"us-ny-02","name":"","country":"US","area":"ny","num":"02","free":false,"hostname":"us-ny-02.protonvpn.com","addrs":[1759418740]},{"id":"us-ny-03","name":"","country":"US","area":"ny","num":"03","free":false,"hostname":"us-ny-03.protonvpn.com","addrs":[1759418741]},{"id":"us-ny-04","name":"","country":"US","area":"ny","num":"04","free":false,"hostname":"us-ny-04.protonvpn.com","addrs":[1759418742]},{"id":"us-tx-01","name":"","country":"US","area":"tx","num":"01","free":false,"hostname":"us-tx-01.protonvpn.com","addrs":[3510276906]},{"id":"us-tx-02","name":"","country":"US","area":"tx","num":"02","free":false,"hostname":"us-tx-02.protonvpn.com","addrs":[3510276907]},{"id":"us-tx-03","name":"","country":"US","area":"tx","num":"03","free":false,"hostname":"us-tx-03.protonvpn.com","addrs":[3510276908]},{"id":"us-tx-04-tor","name":"","country":"US","area":"tx","num":"04","free":false,"hostname":"us-tx-04-tor.protonvpn.com","addrs":[3510276909]},{"id":"us-tx-05","name":"","country":"US","area":"tx","num":"05","free":false,"hostname":"us-tx-05.protonvpn.com","addrs":[3495205699]},{"id":"us-tx-06","name":"","country":"US","area":"tx","num":"06","free":false,"hostname":"us-tx-06.protonvpn.com","addrs":[3495205700]},{"id":"us-tx-07","name":"","country":"US","area":"tx","num":"07","free":false,"hostname":"us-tx-07.protonvpn.com","addrs":[3495205701]},{"id":"us-tx-08","name":"","country":"US","area":"tx","num":"08","free":false,"hostname":"us-tx-08.protonvpn.com","addrs":[3495205702]},{"id":"us-tx-101","name":"","country":"US","area":"tx","num":"101","free":false,"hostname":"us-tx-101.protonvpn.com","addrs":[3510277074]},{"id":"us-tx-102","name":"","country":"US","area":"tx","num":"102","free":false,"hostname":"us-tx-102.protonvpn.com","addrs":[3510277102]},{"id":"us-tx-103","name":"","country":"US","area":"tx","num":"103","free":false,"hostname":"us-tx-103.protonvpn.com","addrs":[3510277103]},{"id":"us-tx-104","name":"","country":"US","area":"tx","num":"104","free":false,"hostname":"us-tx-104.protonvpn.com","addrs":[3510277105]},{"id":"us-tx-105","name":"","country":"US","area":"tx","num":"105","free":false,"hostname":"us-tx-105.protonvpn.com","addrs":[3510277106]},{"id":"us-tx-106","name":"","country":"US","area":"tx","num":"106","free":false,"hostname":"us-tx-106.protonvpn.com","addrs":[3510277107]},{"id":"us-tx-107","name":"","country":"US","area":"tx","num":"107","free":false,"hostname":"us-tx-107.protonvpn.com","addrs":[3510277108]},{"id":"us-tx-108","name":"","country":"US","area":"tx","num":"108","free":false,"hostname":"us-tx-108.protonvpn.com","addrs":[3510277109]},{"id":"us-va-01","name":"","country":"US","area":"va","num":"01","free":false,"hostname":"us-va-01.protonvpn.com","addrs":[2731720861]},{"id":"us-va-02","name":"","country":"US","area":"va","num":"02","free":false,"hostname":"us-va-02.protonvpn.com","addrs":[2731720862]},{"id":"us-va-03","name":"","country":"US","area":"va","num":"03","free":false,"hostname":"us-va-03.protonvpn.com","addrs":[2731720863]},{"id":"us-va-04","name":"","country":"US","area":"va","num":"04","free":false,"hostname":"us-va-04.protonvpn.com","addrs":[2731720864]},{"id":"us-va-05","name":"","country":"US","area":"va","num":"05","free":false,"hostname":"us-va-05.protonvpn.com","addrs":[1118512459]},{"id":"us-va-06","name":"","country":"US","area":"va","num":"06","free":false,"hostname":"us-va-06.protonvpn.com","addrs":[1118512460]},{"id":"us-va-07","name":"","country":"US","area":"va","num":"07","free":false,"hostname":"us-va-07.protonvpn.com","addrs":[1118512461]},{"id":"us-va-08","name":"","country":"US","area":"va","num":"08","free":false,"hostname":"us-va-08.protonvpn.com","addrs":[1118512462]},{"id":"us-va-101","name":"","country":"US","area":"va","num":"101","free":false,"hostname":"us-va-101.protonvpn.com","addrs":[1815805989]},{"id":"us-va-102","name":"","country":"US","area":"va","num":"102","free":false,"hostname":"us-va-102.protonvpn.com","addrs":[1815805990]},{"id":"us-va-103","name":"","country":"US","area":"va","num":"103","free":false,"hostname":"us-va-103.protonvpn.com","addrs":[1815805991]},{"id":"us-va-104","name":"","country":"US","area":"va","num":"104","free":false,"hostname":"us-va-104.protonvpn.com","addrs":[1815805992]},{"id":"us-va-105","name":"","country":"US","area":"va","num":"105","free":false,"hostname":"us-va-105.protonvpn.com","addrs":[3227568965]},{"id":"us-va-106","name":"","country":"US","area":"va","num":"106","free":false,"hostname":"us-va-106.protonvpn.com","addrs":[3227568966]},{"id":"us-va-107","name":"","country":"US","area":"va","num":"107","free":false,"hostname":"us-va-107.protonvpn.com","addrs":[3227568967]},{"id":"us-va-108","name":"","country":"US","area":"va","num":"108","free":false,"hostname":"us-va-108.protonvpn.com","addrs":[3227568968]},{"id":"us-va-109","name":"","country":"US","area":"va","num":"109","free":false,"hostname":"us-va-109.protonvpn.com","addrs":[3488902579]},{"id":"us-va-110","name":"","country":"US","area":"va","num":"110","free":false,"hostname":"us-va-110.protonvpn.com","addrs":[3488902580]},{"id":"us-va-111","name":"","country":"US","area":"va","num":"111","free":false,"hostname":"us-va-111.protonvpn.com","addrs":[3488902581]},{"id":"us-va-112","name":"","country":"US","area":"va","num":"112","free":false,"hostname":"us-va-112.protonvpn.com","addrs":[3488902582]},{"id":"us-wa-01","name":"","country":"US","area":"wa","num":"01","free":false,"hostname":"us-wa-01.protonvpn.com","addrs":[1116032612]},{"id":"us-wa-02","name":"","country":"US","area":"wa","num":"02","free":false,"hostname":"us-wa-02.protonvpn.com","addrs":[1116032613]},{"id":"us-wa-03","name":"","country":"US","area":"wa","num":"03","free":false,"hostname":"us-wa-03.protonvpn.com","addrs":[1116032614]},{"id":"us-wa-04","name":"","country":"US","area":"wa","num":"04","free":false,"hostname":"us-wa-04.protonvpn.com","addrs":[1116032615]},{"id":"us-wa-05","name":"","country":"US","area":"wa","num":"05","free":false,"hostname":"us-wa-05.protonvpn.com","addrs":[1116032616]},{"id":"us-wa-06","name":"","country":"US","area":"wa","num":"06","free":false,"hostname":"us-wa-06.protonvpn.com","addrs":[1116032617]},{"id":"us-wa-07","name":"","country":"US","area":"wa","num":"07","free":false,"hostname":"us-wa-07.protonvpn.com","addrs":[1116032618]},{"id":"us-wa-08","name":"","country":"US","area":"wa","num":"08","free":false,"hostname":"us-wa-08.protonvpn.com","addrs":[1116032619]},{"id":"za-01","name":"","country":"ZA","num":"01","free":false,"hostname":"za-01.protonvpn.com","addrs":[3236310403]},{"id":"za-02","name":"","country":"ZA","num":"02","free":false,"hostname":"za-02.protonvpn.com","addrs":[3236310404]},{"id":"za-03","name":"","country":"ZA","num":"03","free":false,"hostname":"za-03.protonvpn.com","addrs":[3236310405]},{"id":"za-04","name":"","country":"ZA","num":"04","free":false,"hostname":"za-04.protonvpn.com","addrs":[3236310406]}],"presets":[{"id":"default","name":"Default","comment":"256-bit encryption","cfg":{"ca":"-----BEGIN CERTIFICATE-----\nMIIFozCCA4ugAwIBAgIBATANBgkqhkiG9w0BAQ0FADBAMQswCQYDVQQGEwJDSDEV\nMBMGA1UEChMMUHJvdG9uVlBOIEFHMRowGAYDVQQDExFQcm90b25WUE4gUm9vdCBD\nQTAeFw0xNzAyMTUxNDM4MDBaFw0yNzAyMTUxNDM4MDBaMEAxCzAJBgNVBAYTAkNI\nMRUwEwYDVQQKEwxQcm90b25WUE4gQUcxGjAYBgNVBAMTEVByb3RvblZQTiBSb290\nIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAt+BsSsZg7+AuqTq7\nvDbPzfygtl9f8fLJqO4amsyOXlI7pquL5IsEZhpWyJIIvYybqS4s1/T7BbvHPLVE\nwlrq8A5DBIXcfuXrBbKoYkmpICGc2u1KYVGOZ9A+PH9z4Tr6OXFfXRnsbZToie8t\n2Xjv/dZDdUDAqeW89I/mXg3k5x08m2nfGCQDm4gCanN1r5MT7ge56z0MkY3FFGCO\nqRwspIEUzu1ZqGSTkG1eQiOYIrdOF5cc7n2APyvBIcfvp/W3cpTOEmEBJ7/14RnX\nnHo0fcx61Inx/6ZxzKkW8BMdGGQF3tF6u2M0FjVN0lLH9S0ul1TgoOS56yEJ34hr\nJSRTqHuar3t/xdCbKFZjyXFZFNsXVvgJu34CNLrHHTGJj9jiUfFnxWQYMo9UNUd4\na3PPG1HnbG7LAjlvj5JlJ5aqO5gshdnqb9uIQeR2CdzcCJgklwRGCyDT1pm7eoiv\nWV19YBd81vKulLzgPavu3kRRe83yl29It2hwQ9FMs5w6ZV/X6ciTKo3etkX9nBD9\nZzJPsGQsBUy7CzO1jK4W01+u3ItmQS+1s4xtcFxdFY8o/q1zoqBlxpe5MQIWN6Qa\nlryiET74gMHE/S5WrPlsq/gehxsdgc6GDUXG4dk8vn6OUMa6wb5wRO3VXGEc67IY\nm4mDFTYiPvLaFOxtndlUWuCruKcCAwEAAaOBpzCBpDAMBgNVHRMEBTADAQH/MB0G\nA1UdDgQWBBSDkIaYhLVZTwyLNTetNB2qV0gkVDBoBgNVHSMEYTBfgBSDkIaYhLVZ\nTwyLNTetNB2qV0gkVKFEpEIwQDELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFByb3Rv\nblZQTiBBRzEaMBgGA1UEAxMRUHJvdG9uVlBOIFJvb3QgQ0GCAQEwCwYDVR0PBAQD\nAgEGMA0GCSqGSIb3DQEBDQUAA4ICAQCYr7LpvnfZXBCxVIVc2ea1fjxQ6vkTj0zM\nhtFs3qfeXpMRf+g1NAh4vv1UIwLsczilMt87SjpJ25pZPyS3O+/VlI9ceZMvtGXd\nMGfXhTDp//zRoL1cbzSHee9tQlmEm1tKFxB0wfWd/inGRjZxpJCTQh8oc7CTziHZ\nufS+Jkfpc4Rasr31fl7mHhJahF1j/ka/OOWmFbiHBNjzmNWPQInJm+0ygFqij5qs\n51OEvubR8yh5Mdq4TNuWhFuTxpqoJ87VKaSOx/Aefca44Etwcj4gHb7LThidw/ky\nzysZiWjyrbfX/31RX7QanKiMk2RDtgZaWi/lMfsl5O+6E2lJ1vo4xv9pW8225B5X\neAeXHCfjV/vrrCFqeCprNF6a3Tn/LX6VNy3jbeC+167QagBOaoDA01XPOx7Odhsb\nGd7cJ5VkgyycZgLnT9zrChgwjx59JQosFEG1DsaAgHfpEl/N3YPJh68N7fwN41Cj\nzsk39v6iZdfuet/sP7oiP5/gLmA/CIPNhdIYxaojbLjFPkftVjVPn49RqwqzJJPR\nN8BOyb94yhQ7KO4F3IcLT/y/dsWitY0ZH4lCnAVV/v2YjWAWS3OWyC8BFx/Jmc3W\nDK/yPwECUcPgHIeXiRjHnJt0Zcm23O2Q3RphpU+1SO3XixsXpOVOYP6rJIXW9bMZ\nA1gTTlpi7A==\n-----END CERTIFICATE-----\n","wrap":{"strategy":"auth","key":{"dir":1,"data":"as7wP2JnW0sbvQPlOxh3J0I86nQiQhBsspFqikyCl1Y9IsflzvQwsRA8b2brH8WzdaZy8Vji4uk2w/qkiwNabeF76qwjtfA7ELho1T0DUh2LoRUFnad3pgy/17LJxXRyeKFbj25oo+9/1YPsnzmMi9RzXatAy9HjxiqCLpdIkYbDCgtIx8OOoyzrBW0/pacQ4QzMeg3bNjsIw9J3ejOV4QwLYID1YwkZKrWqzUtF9V2mH8d685vYGhkhinl2LDOGLfVXhQdfN9jHHcikIJfuQzRHOaDdSNAwJbBFDPH7XoyuuJPZqW0fFVGbs8TctA7jFmcuoWwBJmT4qfESVVGN6w=="}},"ep":["UDP:80","UDP:443","UDP:4569","UDP:1194","UDP:5060","TCP:443","TCP:3389","TCP:8080","TCP:8443"],"cipher":"AES-256-CBC","auth":"SHA512","frame":1,"reneg":0,"eku":true,"random":true}}],"defaults":{"username":"ABCdefGH012_jklMNop34Q_R","pool":"us-free-01","preset":"default"},"build":1281,"name":"ProtonVPN"} \ No newline at end of file From 0fab0e8f8d1233cb2d1f16e455d09ae93271cea2 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 6 Apr 2019 14:32:41 +0200 Subject: [PATCH 3/6] Update metadata with ProtonVPN --- README.md | 2 ++ fastlane/metadata/en-US/description.txt | 1 + 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index b84a904b..728dcc21 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ Passepartout can connect to a few well-known VPN providers with an existing acco - [Mullvad][app-net-mullvad] - [Private Internet Access][app-net-pia] +- [ProtonVPN][app-net-protonvpn] - [TunnelBear][app-net-tunnelbear] - [Windscribe][app-net-windscribe] - ...more soon! @@ -146,6 +147,7 @@ Website: [passepartoutvpn.app][about-website] [app-api]: https://github.com/passepartoutvpn/passepartout-api [app-net-mullvad]: https://mullvad.net/en/account/create/ [app-net-pia]: https://www.privateinternetaccess.com/pages/buy-vpn/ +[app-net-protonvpn]: https://protonvpn.net/?aid=keeshux [app-net-tunnelbear]: https://click.tunnelbear.com/aff_c?offer_id=2&aff_id=7464 [app-net-windscribe]: https://secure.link/kCsD0prd diff --git a/fastlane/metadata/en-US/description.txt b/fastlane/metadata/en-US/description.txt index 3ca84f94..657a5de8 100644 --- a/fastlane/metadata/en-US/description.txt +++ b/fastlane/metadata/en-US/description.txt @@ -18,6 +18,7 @@ FEATURES - Convenient presets for major VPN networks: - Mullvad - Private Internet Access + - ProtonVPN - TunnelBear - Windscribe - ...more soon! From c158e1ac57a1a239c5763fe4ffee4bc963978daa Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 6 Apr 2019 14:16:37 +0200 Subject: [PATCH 4/6] Update CHANGELOG Fixes #7 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bc325d5..f2838cc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- ProtonVPN provider. [#7](https://github.com/passepartoutvpn/passepartout-ios/issues/7) - Italian translations. [#58](https://github.com/passepartoutvpn/passepartout-ios/pull/58) ### Fixed From 44334486f7d85e0015c186838df2c5c982bf60c4 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 6 Apr 2019 20:29:24 +0200 Subject: [PATCH 5/6] Bump minor version (provider) --- Passepartout-Core/Info.plist | 2 +- Passepartout-CoreTests/Info.plist | 2 +- Passepartout-iOS-Tunnel/Info.plist | 2 +- Passepartout-iOS/Info.plist | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Passepartout-Core/Info.plist b/Passepartout-Core/Info.plist index e6340c56..4476ba21 100644 --- a/Passepartout-Core/Info.plist +++ b/Passepartout-Core/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.3.1 + 1.4.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/Passepartout-CoreTests/Info.plist b/Passepartout-CoreTests/Info.plist index f7489b0c..2e93959f 100644 --- a/Passepartout-CoreTests/Info.plist +++ b/Passepartout-CoreTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.3.1 + 1.4.0 CFBundleVersion 1 diff --git a/Passepartout-iOS-Tunnel/Info.plist b/Passepartout-iOS-Tunnel/Info.plist index 615af7ec..3ef4f571 100644 --- a/Passepartout-iOS-Tunnel/Info.plist +++ b/Passepartout-iOS-Tunnel/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.3.1 + 1.4.0 CFBundleVersion 1 NSExtension diff --git a/Passepartout-iOS/Info.plist b/Passepartout-iOS/Info.plist index 974db2c5..99af76fa 100644 --- a/Passepartout-iOS/Info.plist +++ b/Passepartout-iOS/Info.plist @@ -34,7 +34,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.1 + 1.4.0 CFBundleVersion 1 ITSAppUsesNonExemptEncryption From 2bc7c031c23eb67efdec234f59fac3e4c0a3f161 Mon Sep 17 00:00:00 2001 From: Davide De Rosa Date: Sat, 6 Apr 2019 20:33:18 +0200 Subject: [PATCH 6/6] Fix enum case --- Passepartout-iOS/Scenes/AccountViewController.swift | 2 +- Passepartout/Sources/AppConstants.swift | 4 ++-- Passepartout/Sources/Services/Infrastructure.swift | 2 +- Passepartout/Sources/Services/InfrastructureFactory.swift | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Passepartout-iOS/Scenes/AccountViewController.swift b/Passepartout-iOS/Scenes/AccountViewController.swift index e1085e7b..e10a70fc 100644 --- a/Passepartout-iOS/Scenes/AccountViewController.swift +++ b/Passepartout-iOS/Scenes/AccountViewController.swift @@ -68,7 +68,7 @@ class AccountViewController: UIViewController, TableModelHost { case .pia: return V.pia(name.rawValue) - case .protonVpn: + case .protonVPN: return V.protonvpn(name.rawValue) case .tunnelBear: diff --git a/Passepartout/Sources/AppConstants.swift b/Passepartout/Sources/AppConstants.swift index 6152c822..923ade19 100644 --- a/Passepartout/Sources/AppConstants.swift +++ b/Passepartout/Sources/AppConstants.swift @@ -165,14 +165,14 @@ public class AppConstants { } public static let guidances: [Infrastructure.Name: String] = [ - .protonVpn: "https://account.protonvpn.com/settings", + .protonVPN: "https://account.protonvpn.com/settings", .windscribe: "https://windscribe.com/getconfig/openvpn" ] public static let referrals: [Infrastructure.Name: String] = [ .mullvad: "https://mullvad.net/en/account/create/", .pia: "https://www.privateinternetaccess.com/pages/buy-vpn/", - .protonVpn: "https://protonvpn.net/?aid=keeshux", + .protonVPN: "https://protonvpn.net/?aid=keeshux", .tunnelBear: "https://click.tunnelbear.com/aff_c?offer_id=2&aff_id=7464", .windscribe: "https://secure.link/kCsD0prd" ] diff --git a/Passepartout/Sources/Services/Infrastructure.swift b/Passepartout/Sources/Services/Infrastructure.swift index 1319a93e..260425d1 100644 --- a/Passepartout/Sources/Services/Infrastructure.swift +++ b/Passepartout/Sources/Services/Infrastructure.swift @@ -32,7 +32,7 @@ public struct Infrastructure: Codable { case pia = "PIA" - case protonVpn = "ProtonVPN" + case protonVPN = "ProtonVPN" case tunnelBear = "TunnelBear" diff --git a/Passepartout/Sources/Services/InfrastructureFactory.swift b/Passepartout/Sources/Services/InfrastructureFactory.swift index 07fcb50e..146d0fe4 100644 --- a/Passepartout/Sources/Services/InfrastructureFactory.swift +++ b/Passepartout/Sources/Services/InfrastructureFactory.swift @@ -59,7 +59,7 @@ public class InfrastructureFactory { public let allNames: [Infrastructure.Name] = [ .mullvad, .pia, - .protonVpn, + .protonVPN, .tunnelBear, .windscribe ]