summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gui/packages/desktop/src/main/daemon-rpc.ts17
-rw-r--r--gui/packages/desktop/src/renderer/app.tsx15
-rw-r--r--gui/packages/desktop/src/renderer/lib/relay-settings-builder.ts2
-rw-r--r--gui/packages/desktop/src/shared/daemon-rpc-types.ts13
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;