diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-05-29 12:26:43 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-05-29 12:26:43 +0100 |
| commit | c90aaf9c3f5cc830080ddaf94a71120e4c5eaf3d (patch) | |
| tree | 6a325e3055545b8b04c489dcb458cbf75cefef1e /gui/src | |
| parent | 3cbde64293924e3ea19b70653e0805478cd17c35 (diff) | |
| parent | 13c22e621244f64267c985dd06e521c5931acb05 (diff) | |
| download | mullvadvpn-c90aaf9c3f5cc830080ddaf94a71120e4c5eaf3d.tar.xz mullvadvpn-c90aaf9c3f5cc830080ddaf94a71120e4c5eaf3d.zip | |
Merge branch 'shadowsocks-gui-datatypes'
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 78 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 20 | ||||
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 29 |
3 files changed, 93 insertions, 34 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) { diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts index 6b29ddd764..ff1720be06 100644 --- a/gui/src/shared/daemon-rpc-types.ts +++ b/gui/src/shared/daemon-rpc-types.ts @@ -160,7 +160,8 @@ export interface IRelayListHostname { ipv4AddrIn: string; includeInCountry: boolean; weight: number; - tunnels: IRelayTunnels; + tunnels?: IRelayTunnels; + bridges?: IRelayBridges; } export interface IRelayTunnels { @@ -168,6 +169,10 @@ export interface IRelayTunnels { wireguard: IWireguardTunnelData[]; } +export interface IRelayBridges { + shadowsocks: IShadowsocksEndpointData[]; +} + export interface IOpenVpnTunnelData { port: number; protocol: RelayProtocol; @@ -182,10 +187,16 @@ export interface IWireguardTunnelData { publicKey: string; } +export interface IShadowsocksEndpointData { + port: number; + cipher: string; + password: string; + protocol: RelayProtocol; +} + export interface ITunnelOptions { openvpn: { mssfix?: number; - proxy?: ProxySettings; }; wireguard: { mtu?: number; @@ -233,8 +244,22 @@ export interface ISettings { blockWhenDisconnected: boolean; relaySettings: RelaySettings; tunnelOptions: ITunnelOptions; + bridgeSettings: BridgeSettings; + bridgeState: BridgeState; } +export type BridgeState = 'auto' | 'on' | 'off'; + +export interface IBridgeConstraints { + location: + | 'any' + | { + only: RelayLocation; + }; +} + +export type BridgeSettings = ProxySettings | IBridgeConstraints; + export interface ISocketAddress { host: string; port: number; |
