Merge pull request #59 from passepartoutvpn/integrate-protonvpn
Integrate ProtonVPN provider
This commit is contained in:
commit
d627b2ab36
|
@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
- ProtonVPN provider. [#7](https://github.com/passepartoutvpn/passepartout-ios/issues/7)
|
||||||
- Italian translations. [#58](https://github.com/passepartoutvpn/passepartout-ios/pull/58)
|
- Italian translations. [#58](https://github.com/passepartoutvpn/passepartout-ios/pull/58)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.4.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>BNDL</string>
|
<string>BNDL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.4.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.4.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
|
|
|
@ -283,6 +283,7 @@ internal enum Asset {
|
||||||
internal enum Providers {
|
internal enum Providers {
|
||||||
internal static let mullvad = ImageAsset(name: "mullvad")
|
internal static let mullvad = ImageAsset(name: "mullvad")
|
||||||
internal static let pia = ImageAsset(name: "pia")
|
internal static let pia = ImageAsset(name: "pia")
|
||||||
|
internal static let protonvpn = ImageAsset(name: "protonvpn")
|
||||||
internal static let tunnelbear = ImageAsset(name: "tunnelbear")
|
internal static let tunnelbear = ImageAsset(name: "tunnelbear")
|
||||||
internal static let windscribe = ImageAsset(name: "windscribe")
|
internal static let windscribe = ImageAsset(name: "windscribe")
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.3.1</string>
|
<string>1.4.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -68,6 +68,9 @@ class AccountViewController: UIViewController, TableModelHost {
|
||||||
case .pia:
|
case .pia:
|
||||||
return V.pia(name.rawValue)
|
return V.pia(name.rawValue)
|
||||||
|
|
||||||
|
case .protonVPN:
|
||||||
|
return V.protonvpn(name.rawValue)
|
||||||
|
|
||||||
case .tunnelBear:
|
case .tunnelBear:
|
||||||
return V.tunnelbear(name.rawValue)
|
return V.tunnelbear(name.rawValue)
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -130,8 +130,9 @@
|
||||||
"account.sections.credentials.header" = "Credentials";
|
"account.sections.credentials.header" = "Credentials";
|
||||||
"account.sections.guidance.footer.infrastructure.mullvad" = "Use your %@ website account number and password \"m\".";
|
"account.sections.guidance.footer.infrastructure.mullvad" = "Use your %@ website account number and password \"m\".";
|
||||||
"account.sections.guidance.footer.infrastructure.pia" = "Use your %@ website credentials. Your username is usually numeric with a \"p\" prefix.";
|
"account.sections.guidance.footer.infrastructure.pia" = "Use your %@ website credentials. Your username is usually numeric with a \"p\" prefix.";
|
||||||
|
"account.sections.guidance.footer.infrastructure.protonvpn" = "Find your %@ credentials in the \"Account > 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.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.sections.registration.footer" = "Go get an account on the %@ website.";
|
||||||
"account.cells.username.caption" = "Username";
|
"account.cells.username.caption" = "Username";
|
||||||
"account.cells.username.placeholder" = "username";
|
"account.cells.username.placeholder" = "username";
|
||||||
|
|
|
@ -165,12 +165,14 @@ public class AppConstants {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static let guidances: [Infrastructure.Name: String] = [
|
public static let guidances: [Infrastructure.Name: String] = [
|
||||||
|
.protonVPN: "https://account.protonvpn.com/settings",
|
||||||
.windscribe: "https://windscribe.com/getconfig/openvpn"
|
.windscribe: "https://windscribe.com/getconfig/openvpn"
|
||||||
]
|
]
|
||||||
|
|
||||||
public static let referrals: [Infrastructure.Name: String] = [
|
public static let referrals: [Infrastructure.Name: String] = [
|
||||||
.mullvad: "https://mullvad.net/en/account/create/",
|
.mullvad: "https://mullvad.net/en/account/create/",
|
||||||
.pia: "https://www.privateinternetaccess.com/pages/buy-vpn/",
|
.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",
|
.tunnelBear: "https://click.tunnelbear.com/aff_c?offer_id=2&aff_id=7464",
|
||||||
.windscribe: "https://secure.link/kCsD0prd"
|
.windscribe: "https://secure.link/kCsD0prd"
|
||||||
]
|
]
|
||||||
|
|
|
@ -32,6 +32,8 @@ public struct Infrastructure: Codable {
|
||||||
|
|
||||||
case pia = "PIA"
|
case pia = "PIA"
|
||||||
|
|
||||||
|
case protonVPN = "ProtonVPN"
|
||||||
|
|
||||||
case tunnelBear = "TunnelBear"
|
case tunnelBear = "TunnelBear"
|
||||||
|
|
||||||
case windscribe = "Windscribe"
|
case windscribe = "Windscribe"
|
||||||
|
|
|
@ -59,6 +59,7 @@ public class InfrastructureFactory {
|
||||||
public let allNames: [Infrastructure.Name] = [
|
public let allNames: [Infrastructure.Name] = [
|
||||||
.mullvad,
|
.mullvad,
|
||||||
.pia,
|
.pia,
|
||||||
|
.protonVPN,
|
||||||
.tunnelBear,
|
.tunnelBear,
|
||||||
.windscribe
|
.windscribe
|
||||||
]
|
]
|
||||||
|
|
|
@ -106,11 +106,15 @@ public enum L10n {
|
||||||
public static func pia(_ p1: String) -> String {
|
public static func pia(_ p1: String) -> String {
|
||||||
return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.pia", p1)
|
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.
|
/// Use your %@ website credentials. Your username is usually your e-mail.
|
||||||
public static func tunnelbear(_ p1: String) -> String {
|
public static func tunnelbear(_ p1: String) -> String {
|
||||||
return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.tunnelbear", p1)
|
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 {
|
public static func windscribe(_ p1: String) -> String {
|
||||||
return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.windscribe", p1)
|
return L10n.tr("Localizable", "account.sections.guidance.footer.infrastructure.windscribe", p1)
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,7 @@ Passepartout can connect to a few well-known VPN providers with an existing acco
|
||||||
|
|
||||||
- [Mullvad][app-net-mullvad]
|
- [Mullvad][app-net-mullvad]
|
||||||
- [Private Internet Access][app-net-pia]
|
- [Private Internet Access][app-net-pia]
|
||||||
|
- [ProtonVPN][app-net-protonvpn]
|
||||||
- [TunnelBear][app-net-tunnelbear]
|
- [TunnelBear][app-net-tunnelbear]
|
||||||
- [Windscribe][app-net-windscribe]
|
- [Windscribe][app-net-windscribe]
|
||||||
- ...more soon!
|
- ...more soon!
|
||||||
|
@ -146,6 +147,7 @@ Website: [passepartoutvpn.app][about-website]
|
||||||
[app-api]: https://github.com/passepartoutvpn/passepartout-api
|
[app-api]: https://github.com/passepartoutvpn/passepartout-api
|
||||||
[app-net-mullvad]: https://mullvad.net/en/account/create/
|
[app-net-mullvad]: https://mullvad.net/en/account/create/
|
||||||
[app-net-pia]: https://www.privateinternetaccess.com/pages/buy-vpn/
|
[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-tunnelbear]: https://click.tunnelbear.com/aff_c?offer_id=2&aff_id=7464
|
||||||
[app-net-windscribe]: https://secure.link/kCsD0prd
|
[app-net-windscribe]: https://secure.link/kCsD0prd
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ FEATURES
|
||||||
- Convenient presets for major VPN networks:
|
- Convenient presets for major VPN networks:
|
||||||
- Mullvad
|
- Mullvad
|
||||||
- Private Internet Access
|
- Private Internet Access
|
||||||
|
- ProtonVPN
|
||||||
- TunnelBear
|
- TunnelBear
|
||||||
- Windscribe
|
- Windscribe
|
||||||
- ...more soon!
|
- ...more soon!
|
||||||
|
|
Loading…
Reference in New Issue