diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-05-28 19:22:12 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-05-29 12:26:09 +0100 |
| commit | 13711ec4ddf31cb7669fce8fc4d86c31d2f291e6 (patch) | |
| tree | 5dbdb1e3dc0b79730558ba777c2aab05d6864e05 | |
| parent | 3cbde64293924e3ea19b70653e0805478cd17c35 (diff) | |
| download | mullvadvpn-13711ec4ddf31cb7669fce8fc4d86c31d2f291e6.tar.xz mullvadvpn-13711ec4ddf31cb7669fce8fc4d86c31d2f291e6.zip | |
Adjust RPC dataypes for bridge settings
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 78 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 20 |
2 files changed, 66 insertions, 32 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 7897aba7c9..56284fd061 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -52,6 +52,20 @@ const constraint = <T>(constraintValue: SchemaNode<T>) => { ); }; +const locationConstraintSchema = constraint( + oneOf( + object({ + hostname: arrayOf(string), + }), + object({ + city: arrayOf(string), + }), + object({ + country: string, + }), + ), +); + const customTunnelEndpointSchema = oneOf( object({ openvpn: object({ @@ -83,19 +97,7 @@ const customTunnelEndpointSchema = oneOf( const relaySettingsSchema = oneOf( object({ normal: partialObject({ - location: constraint( - oneOf( - object({ - hostname: arrayOf(string), - }), - object({ - city: arrayOf(string), - }), - object({ - country: string, - }), - ), - ), + location: locationConstraintSchema, tunnel: constraint( oneOf( object({ @@ -138,20 +140,34 @@ const relayListSchema = partialObject({ ipv4_addr_in: string, include_in_country: boolean, weight: number, - tunnels: partialObject({ - openvpn: arrayOf( - partialObject({ - port: number, - protocol: string, - }), - ), - wireguard: arrayOf( - partialObject({ - port_ranges: arrayOf(arrayOf(number)), - public_key: string, - }), - ), - }), + bridges: maybe( + partialObject({ + shadowsocks: arrayOf( + object({ + port: number, + cipher: string, + password: string, + protocol: enumeration('tcp', 'udp'), + }), + ), + }), + ), + tunnels: maybe( + partialObject({ + openvpn: arrayOf( + partialObject({ + port: number, + protocol: string, + }), + ), + wireguard: arrayOf( + partialObject({ + port_ranges: arrayOf(arrayOf(number)), + public_key: string, + }), + ), + }), + ), }), ), }), @@ -189,10 +205,14 @@ const openVpnProxySchema = maybe( ), ); +const bridgeSettingsSchema = oneOf( + partialObject({ location: locationConstraintSchema }), + openVpnProxySchema, +); + const tunnelOptionsSchema = partialObject({ openvpn: partialObject({ mssfix: maybe(number), - proxy: openVpnProxySchema, }), wireguard: partialObject({ mtu: maybe(number), @@ -292,6 +312,8 @@ const settingsSchema = partialObject({ allow_lan: boolean, auto_connect: boolean, block_when_disconnected: boolean, + bridge_settings: bridgeSettingsSchema, + bridge_state: enumeration('on', 'auto', 'off'), relay_settings: relaySettingsSchema, tunnel_options: tunnelOptionsSchema, }); diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index 08dc43243b..25cb537878 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -82,13 +82,16 @@ class ApplicationMain { tunnel: 'any', }, }, + bridgeSettings: { + location: 'any', + }, + bridgeState: 'auto', tunnelOptions: { generic: { enableIpv6: false, }, openvpn: { mssfix: undefined, - proxy: undefined, }, wireguard: { mtu: undefined, @@ -550,10 +553,19 @@ class ApplicationMain { // hasToHaveOpenvpn || hasToHaveWg, until then, only filter wireguard // relays if tunnel constraints specify wireguard tunnels. const hasOpenVpnTunnels = (relay: IRelayListHostname): boolean => { - return relay.tunnels.openvpn.length > 0; + if (relay.tunnels) { + return relay.tunnels.openvpn.length > 0; + } else { + return false; + } + }; + const hasWireguardTunnels = (relay: IRelayListHostname): boolean => { + if (relay.tunnels) { + return relay.tunnels.wireguard.length > 0; + } else { + return false; + } }; - const hasWireguardTunnels = (relay: IRelayListHostname): boolean => - relay.tunnels.wireguard.length > 0; let fnHasWantedTunnels = hasOpenVpnTunnels; if ('normal' in relaySettings) { |
