diff options
Diffstat (limited to 'gui/src/main')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 64 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 10 |
2 files changed, 73 insertions, 1 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 310a9a5c83..646a09a9c7 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -17,6 +17,7 @@ import { DaemonEvent, DeviceEvent, DeviceState, + EndpointObfuscationType, ErrorStateCause, FirewallPolicyError, IAccountData, @@ -40,6 +41,7 @@ import { IWireguardConstraints, LoggedInDeviceState, LoggedOutDeviceState, + ObfuscationSettings, ObfuscationType, Ownership, ProxySettings, @@ -378,6 +380,42 @@ export class DaemonRpc { ); } + public async setObfuscationSettings(obfuscationSettings: ObfuscationSettings): Promise<void> { + const grpcObfuscationSettings = new grpcTypes.ObfuscationSettings(); + switch (obfuscationSettings.selectedObfuscation) { + case ObfuscationType.auto: + grpcObfuscationSettings.setSelectedObfuscation( + grpcTypes.ObfuscationSettings.SelectedObfuscation.AUTO, + ); + break; + case ObfuscationType.off: + grpcObfuscationSettings.setSelectedObfuscation( + grpcTypes.ObfuscationSettings.SelectedObfuscation.OFF, + ); + break; + case ObfuscationType.udp2tcp: + grpcObfuscationSettings.setSelectedObfuscation( + grpcTypes.ObfuscationSettings.SelectedObfuscation.UDP2TCP, + ); + break; + } + + if (obfuscationSettings.udp2tcpSettings) { + const grpcUdp2tcpSettings = new grpcTypes.Udp2TcpObfuscationSettings(); + grpcUdp2tcpSettings.setPort( + obfuscationSettings.udp2tcpSettings.port === 'any' + ? 0 + : obfuscationSettings.udp2tcpSettings.port.only, + ); + grpcObfuscationSettings.setUdp2tcp(grpcUdp2tcpSettings); + } + + await this.call<grpcTypes.ObfuscationSettings, Empty>( + this.client.setObfuscationSettings, + grpcObfuscationSettings, + ); + } + public async setOpenVpnMssfix(mssfix?: number): Promise<void> { await this.callNumber(this.client.setOpenvpnMssfix, mssfix); } @@ -922,7 +960,7 @@ function convertFromProxyEndpoint(proxyEndpoint: grpcTypes.ProxyEndpoint.AsObjec function convertFromObfuscationEndpoint( obfuscationEndpoint: grpcTypes.ObfuscationEndpoint.AsObject, ): IObfuscationEndpoint { - const obfuscationTypes: Record<grpcTypes.ObfuscationType, ObfuscationType> = { + const obfuscationTypes: Record<grpcTypes.ObfuscationType, EndpointObfuscationType> = { [grpcTypes.ObfuscationType.UDP2TCP]: 'udp2tcp', }; @@ -947,6 +985,7 @@ function convertFromSettings(settings: grpcTypes.Settings): ISettings | undefine const bridgeSettings = convertFromBridgeSettings(settingsObject.bridgeSettings!); const tunnelOptions = convertFromTunnelOptions(settingsObject.tunnelOptions!); const splitTunnel = settingsObject.splitTunnel ?? { enableExclusions: false, appsList: [] }; + const obfuscationSettings = convertFromObfuscationSettings(settingsObject.obfuscationSettings); return { ...settings.toObject(), bridgeState, @@ -954,6 +993,7 @@ function convertFromSettings(settings: grpcTypes.Settings): ISettings | undefine bridgeSettings, tunnelOptions, splitTunnel, + obfuscationSettings, }; } @@ -1150,6 +1190,28 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec }; } +function convertFromObfuscationSettings( + obfuscationSettings?: grpcTypes.ObfuscationSettings.AsObject, +): ObfuscationSettings { + let selectedObfuscationType = ObfuscationType.auto; + switch (obfuscationSettings?.selectedObfuscation) { + case grpcTypes.ObfuscationSettings.SelectedObfuscation.OFF: + selectedObfuscationType = ObfuscationType.off; + break; + case grpcTypes.ObfuscationSettings.SelectedObfuscation.UDP2TCP: + selectedObfuscationType = ObfuscationType.udp2tcp; + break; + } + + return { + selectedObfuscation: selectedObfuscationType, + udp2tcpSettings: + obfuscationSettings?.udp2tcp && obfuscationSettings.udp2tcp.port !== 0 + ? { port: { only: obfuscationSettings.udp2tcp.port } } + : { port: 'any' }, + }; +} + function convertFromDaemonEvent(data: grpcTypes.DaemonEvent): DaemonEvent { const tunnelState = data.getTunnelState(); if (tunnelState !== undefined) { diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index 461cac3214..669f406c19 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -36,6 +36,7 @@ import { IRelayList, ISettings, liftConstraint, + ObfuscationType, Ownership, RelaySettings, RelaySettingsUpdate, @@ -212,6 +213,12 @@ class ApplicationMain { }, }, }, + obfuscationSettings: { + selectedObfuscation: ObfuscationType.auto, + udp2tcpSettings: { + port: 'any', + }, + }, }; private deviceState?: DeviceState; private guiSettings = new GuiSettings(); @@ -1340,6 +1347,9 @@ class ApplicationMain { IpcMainEventChannel.autoStart.handleSet((autoStart: boolean) => { return this.setAutoStart(autoStart); }); + IpcMainEventChannel.settings.handleSetObfuscationSettings((obfuscationSettings) => { + return this.daemonRpc.setObfuscationSettings(obfuscationSettings); + }); IpcMainEventChannel.location.handleGet(() => this.daemonRpc.getLocation()); |
