diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-02-11 15:08:52 +0000 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-02-14 11:15:36 +0000 |
| commit | e440133e2aa43b866ee502e4ce76a108a7a66cc8 (patch) | |
| tree | cbaa27041b531d304340f5e3ca573669bf21e328 /gui/packages | |
| parent | db1ed129ac561cdd9c5b3fff924a3b86dc191262 (diff) | |
| download | mullvadvpn-e440133e2aa43b866ee502e4ce76a108a7a66cc8.tar.xz mullvadvpn-e440133e2aa43b866ee502e4ce76a108a7a66cc8.zip | |
Adjust relay constraint types in gui
Diffstat (limited to 'gui/packages')
| -rw-r--r-- | gui/packages/desktop/src/main/daemon-rpc.ts | 17 | ||||
| -rw-r--r-- | gui/packages/desktop/src/renderer/app.tsx | 15 | ||||
| -rw-r--r-- | gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts | 2 | ||||
| -rw-r--r-- | gui/packages/desktop/src/shared/daemon-rpc-types.ts | 13 |
4 files changed, 34 insertions, 13 deletions
diff --git a/gui/packages/desktop/src/main/daemon-rpc.ts b/gui/packages/desktop/src/main/daemon-rpc.ts index eac4918ed2..390e301756 100644 --- a/gui/packages/desktop/src/main/daemon-rpc.ts +++ b/gui/packages/desktop/src/main/daemon-rpc.ts @@ -94,12 +94,19 @@ const relaySettingsSchema = oneOf( ), ), tunnel: constraint( - partialObject({ - openvpn: partialObject({ - port: constraint(number), - protocol: constraint(enumeration('udp', 'tcp')), + oneOf( + object({ + openvpn: partialObject({ + port: constraint(number), + protocol: constraint(enumeration('udp', 'tcp')), + }), }), - }), + object({ + wireguard: partialObject({ + port: constraint(number), + }), + }), + ), ), }), }), diff --git a/gui/packages/desktop/src/renderer/app.tsx b/gui/packages/desktop/src/renderer/app.tsx index 9ba305c7d0..688aaf2eb0 100644 --- a/gui/packages/desktop/src/renderer/app.tsx +++ b/gui/packages/desktop/src/renderer/app.tsx @@ -319,9 +319,18 @@ export default class AppRenderer { payload.port = 'any'; payload.protocol = 'any'; } else { - const { port, protocol } = tunnel.only.openvpn; - payload.port = port === 'any' ? port : port.only; - payload.protocol = protocol === 'any' ? protocol : protocol.only; + const constraints = tunnel.only; + if ('openvpn' in constraints) { + const { port, protocol } = constraints.openvpn; + payload.port = port === 'any' ? port : port.only; + payload.protocol = protocol === 'any' ? protocol : protocol.only; + } + + if ('wireguard' in constraints) { + const { port } = constraints.wireguard; + payload.port = port === 'any' ? port : port.only; + payload.protocol = 'udp'; + } } actions.settings.updateRelay({ diff --git a/gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts b/gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts index 90cec5d3c6..72dc95e759 100644 --- a/gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts +++ b/gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts @@ -88,7 +88,7 @@ class NormalRelaySettingsBuilder { }, }; } else if (typeof tunnel === 'object') { - const prev = (tunnel.only && tunnel.only.openvpn) || {}; + const prev = tunnel.only && 'openvpn' in tunnel.only ? tunnel.only.openvpn : {}; this.payload.tunnel = { only: { openvpn: { ...prev, ...next }, diff --git a/gui/packages/desktop/src/shared/daemon-rpc-types.ts b/gui/packages/desktop/src/shared/daemon-rpc-types.ts index 894978cbca..bc6d6e048c 100644 --- a/gui/packages/desktop/src/shared/daemon-rpc-types.ts +++ b/gui/packages/desktop/src/shared/daemon-rpc-types.ts @@ -57,10 +57,12 @@ export interface IOpenVpnConstraints { protocol: 'any' | { only: RelayProtocol }; } -interface ITunnelConstraints<TOpenVpnConstraints> { - openvpn: TOpenVpnConstraints; +export interface IWireguardConstraints { + port: 'any' | { only: number }; } +type TunnelConstraints<OpenVpn, Wireguard> = { wireguard: Wireguard } | { openvpn: OpenVpn }; + interface IRelaySettingsNormal<TTunnelConstraints> { location: | 'any' @@ -107,7 +109,7 @@ export interface IRelaySettingsCustom { } export type RelaySettings = | { - normal: IRelaySettingsNormal<ITunnelConstraints<IOpenVpnConstraints>>; + normal: IRelaySettingsNormal<TunnelConstraints<IOpenVpnConstraints, IWireguardConstraints>>; } | { customTunnelEndpoint: IRelaySettingsCustom; @@ -115,8 +117,11 @@ export type RelaySettings = // types describing the partial update of RelaySettings export type RelaySettingsNormalUpdate = Partial< - IRelaySettingsNormal<ITunnelConstraints<Partial<IOpenVpnConstraints>>> + IRelaySettingsNormal< + TunnelConstraints<Partial<IOpenVpnConstraints>, Partial<IWireguardConstraints>> + > >; + export type RelaySettingsUpdate = | { normal: RelaySettingsNormalUpdate; |
