summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2024-10-10 13:13:19 +0200
committerOskar <oskar@mullvad.net>2024-10-14 12:49:41 +0200
commit57523ec26b05ea165e00b7bb9a8d1f9c49e433ae (patch)
tree71b7bfa50115dabd168f757f1c45993f845a17c0
parent5fb364b270c104fec7ad68a90824a69cea1e98e8 (diff)
downloadmullvadvpn-57523ec26b05ea165e00b7bb9a8d1f9c49e433ae.tar.xz
mullvadvpn-57523ec26b05ea165e00b7bb9a8d1f9c49e433ae.zip
Disable OpenVPN option when a core privacy feature is enabled
-rw-r--r--gui/src/renderer/components/VpnSettings.tsx44
1 files changed, 43 insertions, 1 deletions
diff --git a/gui/src/renderer/components/VpnSettings.tsx b/gui/src/renderer/components/VpnSettings.tsx
index 951b17a567..0a07bca288 100644
--- a/gui/src/renderer/components/VpnSettings.tsx
+++ b/gui/src/renderer/components/VpnSettings.tsx
@@ -684,6 +684,25 @@ function TunnelProtocolSetting() {
);
const relaySettingsUpdater = useRelaySettingsUpdater();
+ const relaySettings = useSelector((state) => state.settings.relaySettings);
+ const multihop = 'normal' in relaySettings ? relaySettings.normal.wireguard.useMultihop : false;
+ const daita = useSelector((state) => state.settings.wireguard.daita?.enabled ?? false);
+ const quantumResistant = useSelector((state) => state.settings.wireguard.quantumResistant);
+ const openVpnDisabled = daita || multihop || quantumResistant;
+
+ const featuresToDisableForOpenVpn = [];
+ if (daita) {
+ featuresToDisableForOpenVpn.push(strings.daita);
+ }
+ if (multihop) {
+ featuresToDisableForOpenVpn.push(messages.pgettext('wireguard-settings-view', 'Multihop'));
+ }
+ if (quantumResistant) {
+ featuresToDisableForOpenVpn.push(
+ messages.pgettext('wireguard-settings-view', 'Quantum-resistant tunnel'),
+ );
+ }
+
const setTunnelProtocol = useCallback(
async (tunnelProtocol: TunnelProtocol | null) => {
try {
@@ -708,6 +727,7 @@ function TunnelProtocolSetting() {
{
label: strings.openvpn,
value: 'openvpn',
+ disabled: openVpnDisabled,
},
],
[],
@@ -724,6 +744,21 @@ function TunnelProtocolSetting() {
automaticValue={null}
/>
</StyledSelectorContainer>
+ {openVpnDisabled ? (
+ <Cell.CellFooter>
+ <AriaDescription>
+ <Cell.CellFooterText>
+ {sprintf(
+ messages.pgettext(
+ 'vpn-settings-view',
+ 'To select %(openvpn)s, please disable these settings: %(featureList)s.',
+ ),
+ { openvpn: strings.openvpn, featureList: featuresToDisableForOpenVpn.join(', ') },
+ )}
+ </Cell.CellFooterText>
+ </AriaDescription>
+ </Cell.CellFooter>
+ ) : null}
</AriaInputGroup>
);
}
@@ -767,11 +802,18 @@ function OpenVpnSettingsButton() {
const tunnelProtocol = useSelector((state) =>
mapRelaySettingsToProtocol(state.settings.relaySettings),
);
+ const relaySettings = useSelector((state) => state.settings.relaySettings);
+ const multihop = 'normal' in relaySettings ? relaySettings.normal.wireguard.useMultihop : false;
+ const daita = useSelector((state) => state.settings.wireguard.daita?.enabled ?? false);
+ const quantumResistant = useSelector((state) => state.settings.wireguard.quantumResistant);
+ const openVpnDisabled = daita || multihop || quantumResistant;
const navigate = useCallback(() => history.push(RoutePath.openVpnSettings), [history]);
return (
- <Cell.CellNavigationButton onClick={navigate} disabled={tunnelProtocol === 'wireguard'}>
+ <Cell.CellNavigationButton
+ onClick={navigate}
+ disabled={tunnelProtocol === 'wireguard' || openVpnDisabled}>
<Cell.Label>
{sprintf(
// TRANSLATORS: %(openvpn)s will be replaced with the string "OpenVPN"