diff options
| author | Oskar <oskar@mullvad.net> | 2024-10-10 13:13:19 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2024-10-14 12:49:41 +0200 |
| commit | 57523ec26b05ea165e00b7bb9a8d1f9c49e433ae (patch) | |
| tree | 71b7bfa50115dabd168f757f1c45993f845a17c0 /gui/src/renderer | |
| parent | 5fb364b270c104fec7ad68a90824a69cea1e98e8 (diff) | |
| download | mullvadvpn-57523ec26b05ea165e00b7bb9a8d1f9c49e433ae.tar.xz mullvadvpn-57523ec26b05ea165e00b7bb9a8d1f9c49e433ae.zip | |
Disable OpenVPN option when a core privacy feature is enabled
Diffstat (limited to 'gui/src/renderer')
| -rw-r--r-- | gui/src/renderer/components/VpnSettings.tsx | 44 |
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" |
