diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-07-07 14:40:05 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-07-07 14:40:05 +0200 |
| commit | ac15ef4e14d97b3e9f8ec1ac237d544d4264f550 (patch) | |
| tree | b94d2664d37b4bbfe45ea244d7dd5ad2965fa7c2 /gui | |
| parent | 887349f12a71a2c6a3bce49ba7d86df353be71a6 (diff) | |
| parent | 7652f299b34003721923f53f47868b14eca3ae53 (diff) | |
| download | mullvadvpn-ac15ef4e14d97b3e9f8ec1ac237d544d4264f550.tar.xz mullvadvpn-ac15ef4e14d97b3e9f8ec1ac237d544d4264f550.zip | |
Merge branch 'relays-validate-ports'
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 44 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 16 | ||||
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 35 |
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: { |
