summaryrefslogtreecommitdiffhomepage
path: root/gui/src/main
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-05-28 19:22:12 +0100
committerEmīls Piņķis <emils@mullvad.net>2019-05-29 12:26:09 +0100
commit13711ec4ddf31cb7669fce8fc4d86c31d2f291e6 (patch)
tree5dbdb1e3dc0b79730558ba777c2aab05d6864e05 /gui/src/main
parent3cbde64293924e3ea19b70653e0805478cd17c35 (diff)
downloadmullvadvpn-13711ec4ddf31cb7669fce8fc4d86c31d2f291e6.tar.xz
mullvadvpn-13711ec4ddf31cb7669fce8fc4d86c31d2f291e6.zip
Adjust RPC dataypes for bridge settings
Diffstat (limited to 'gui/src/main')
-rw-r--r--gui/src/main/daemon-rpc.ts78
-rw-r--r--gui/src/main/index.ts20
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) {