summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-07-07 14:40:05 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-07-07 14:40:05 +0200
commitac15ef4e14d97b3e9f8ec1ac237d544d4264f550 (patch)
treeb94d2664d37b4bbfe45ea244d7dd5ad2965fa7c2 /gui
parent887349f12a71a2c6a3bce49ba7d86df353be71a6 (diff)
parent7652f299b34003721923f53f47868b14eca3ae53 (diff)
downloadmullvadvpn-ac15ef4e14d97b3e9f8ec1ac237d544d4264f550.tar.xz
mullvadvpn-ac15ef4e14d97b3e9f8ec1ac237d544d4264f550.zip
Merge branch 'relays-validate-ports'
Diffstat (limited to 'gui')
-rw-r--r--gui/src/main/daemon-rpc.ts44
-rw-r--r--gui/src/main/index.ts16
-rw-r--r--gui/src/shared/daemon-rpc-types.ts35
3 files changed, 15 insertions, 80 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts
index e704979a40..a868208ac2 100644
--- a/gui/src/main/daemon-rpc.ts
+++ b/gui/src/main/daemon-rpc.ts
@@ -29,24 +29,22 @@ import {
ILocation,
IObfuscationEndpoint,
IOpenVpnConstraints,
- IOpenVpnTunnelData,
IProxyEndpoint,
IRelayList,
IRelayListCity,
IRelayListCountry,
IRelayListHostname,
ISettings,
- IShadowsocksEndpointData,
ITunnelOptions,
ITunnelStateRelayInfo,
IWireguardConstraints,
- IWireguardTunnelData,
LoggedInDeviceState,
LoggedOutDeviceState,
ObfuscationType,
Ownership,
ProxySettings,
ProxyType,
+ RelayEndpointType,
RelayLocation,
RelayProtocol,
RelaySettings,
@@ -732,34 +730,17 @@ function convertFromRelayListCity(city: grpcTypes.RelayListCity.AsObject): IRela
function convertFromRelayListRelay(relay: grpcTypes.Relay.AsObject): IRelayListHostname {
return {
...relay,
- tunnels: relay.tunnels && {
- ...relay.tunnels,
- openvpn: relay.tunnels.openvpnList.map(convertFromOpenvpnList),
- wireguard: relay.tunnels.wireguardList.map(convertFromWireguardList),
- },
- bridges: relay.bridges && {
- shadowsocks: relay.bridges.shadowsocksList.map(convertFromShadowsocksList),
- },
+ endpointType: convertFromRelayType(relay.endpointType),
};
}
-function convertFromOpenvpnList(
- openvpn: grpcTypes.OpenVpnEndpointData.AsObject,
-): IOpenVpnTunnelData {
- return {
- ...openvpn,
- protocol: convertFromTransportProtocol(openvpn.protocol),
- };
-}
-
-function convertFromWireguardList(
- wireguard: grpcTypes.WireguardEndpointData.AsObject,
-): IWireguardTunnelData {
- return {
- ...wireguard,
- portRanges: wireguard.portRangesList,
- publicKey: convertFromWireguardKey(wireguard.publicKey),
+function convertFromRelayType(relayType: grpcTypes.Relay.RelayType): RelayEndpointType {
+ const protocolMap: Record<grpcTypes.Relay.RelayType, RelayEndpointType> = {
+ [grpcTypes.Relay.RelayType.OPENVPN]: 'openvpn',
+ [grpcTypes.Relay.RelayType.BRIDGE]: 'bridge',
+ [grpcTypes.Relay.RelayType.WIREGUARD]: 'wireguard',
};
+ return protocolMap[relayType];
}
function convertFromWireguardKey(publicKey: Uint8Array | string): string {
@@ -769,15 +750,6 @@ function convertFromWireguardKey(publicKey: Uint8Array | string): string {
return Buffer.from(publicKey).toString('base64');
}
-function convertFromShadowsocksList(
- shadowsocks: grpcTypes.ShadowsocksEndpointData.AsObject,
-): IShadowsocksEndpointData {
- return {
- ...shadowsocks,
- protocol: convertFromTransportProtocol(shadowsocks.protocol),
- };
-}
-
function convertFromTransportProtocol(protocol: grpcTypes.TransportProtocol): RelayProtocol {
const protocolMap: Record<grpcTypes.TransportProtocol, RelayProtocol> = {
[grpcTypes.TransportProtocol.TCP]: 'tcp',
diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts
index 83b76292c4..b8a8a9ca28 100644
--- a/gui/src/main/index.ts
+++ b/gui/src/main/index.ts
@@ -1026,23 +1026,19 @@ class ApplicationMain {
.map((city) => ({
...city,
relays: city.relays.filter((relay) => {
- if (relay.tunnels) {
+ if (relay.endpointType != 'bridge') {
switch (tunnelProtocol) {
case 'openvpn':
- return relay.tunnels.openvpn.length > 0;
+ return relay.endpointType == 'openvpn';
case 'wireguard':
- return relay.tunnels.wireguard.length > 0;
+ return relay.endpointType == 'wireguard';
case 'any': {
const useMultihop =
'normal' in relaySettings &&
relaySettings.normal.wireguardConstraints.useMultihop;
- if (useMultihop) {
- return relay.tunnels.wireguard.length > 0;
- } else {
- return relay.tunnels.openvpn.length > 0 || relay.tunnels.wireguard.length > 0;
- }
+ return !useMultihop || relay.endpointType == 'wireguard';
}
default:
return false;
@@ -1072,9 +1068,7 @@ class ApplicationMain {
cities: country.cities
.map((city) => ({
...city,
- relays: city.relays.filter(
- (relay) => relay.bridges && relay.bridges.shadowsocks.length > 0,
- ),
+ relays: city.relays.filter((relay) => relay.endpointType == 'bridge'),
}))
.filter((city) => city.relays.length > 0),
}))
diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts
index 8bee8003b0..d0507cab98 100644
--- a/gui/src/shared/daemon-rpc-types.ts
+++ b/gui/src/shared/daemon-rpc-types.ts
@@ -250,41 +250,10 @@ export interface IRelayListHostname {
active: boolean;
weight: number;
owned: boolean;
- tunnels?: IRelayTunnels;
- bridges?: IRelayBridges;
+ endpointType: RelayEndpointType;
}
-export interface IRelayTunnels {
- openvpn: IOpenVpnTunnelData[];
- wireguard: IWireguardTunnelData[];
-}
-
-export interface IRelayBridges {
- shadowsocks: IShadowsocksEndpointData[];
-}
-
-export interface IOpenVpnTunnelData {
- port: number;
- protocol: RelayProtocol;
-}
-
-export interface IWireguardTunnelData {
- portRanges: Array<IPortRange>;
- // Public key of the tunnel.
- publicKey: string;
-}
-
-export interface IPortRange {
- first: number;
- last: number;
-}
-
-export interface IShadowsocksEndpointData {
- port: number;
- cipher: string;
- password: string;
- protocol: RelayProtocol;
-}
+export type RelayEndpointType = 'wireguard' | 'openvpn' | 'bridge';
export interface ITunnelOptions {
openvpn: {