diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-11-03 14:43:15 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-11-16 17:19:49 +0100 |
| commit | f9bebec26836aacb0c043a7b86482f2ae9c61495 (patch) | |
| tree | d52b88769908766739954a59d27b2831a5164d57 /gui/src | |
| parent | 765f777dd4399b334fe6641e5d427d379826501a (diff) | |
| download | mullvadvpn-f9bebec26836aacb0c043a7b86482f2ae9c61495.tar.xz mullvadvpn-f9bebec26836aacb0c043a7b86482f2ae9c61495.zip | |
Add custom DNS to frontend RPC and to Redux store
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 4 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 4 | ||||
| -rw-r--r-- | gui/src/renderer/app.tsx | 1 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/actions.ts | 23 | ||||
| -rw-r--r-- | gui/src/renderer/redux/settings/reducers.ts | 14 | ||||
| -rw-r--r-- | gui/src/shared/daemon-rpc-types.ts | 6 |
6 files changed, 50 insertions, 2 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 130651c200..0252c22e13 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -1029,6 +1029,10 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec generic: { enableIpv6: tunnelOptions.generic!.enableIpv6, }, + dns: { + custom: tunnelOptions.dnsOptions?.custom ?? false, + addresses: tunnelOptions.dnsOptions?.addressesList ?? [], + }, }; } diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index 514fa4b4e8..9e7e9e931c 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -137,6 +137,10 @@ class ApplicationMain { wireguard: { mtu: undefined, }, + dns: { + custom: false, + addresses: [], + }, }, }; private guiSettings = new GuiSettings(); diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index d7d5b8bf29..c24874b9a6 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -611,6 +611,7 @@ export default class AppRenderer { reduxSettings.updateOpenVpnMssfix(newSettings.tunnelOptions.openvpn.mssfix); reduxSettings.updateWireguardMtu(newSettings.tunnelOptions.wireguard.mtu); reduxSettings.updateBridgeState(newSettings.bridgeState); + reduxSettings.updateDnsOptions(newSettings.tunnelOptions.dns); this.setRelaySettings(newSettings.relaySettings); this.setBridgeSettings(newSettings.bridgeSettings); diff --git a/gui/src/renderer/redux/settings/actions.ts b/gui/src/renderer/redux/settings/actions.ts index d1f564bccd..6428badde8 100644 --- a/gui/src/renderer/redux/settings/actions.ts +++ b/gui/src/renderer/redux/settings/actions.ts @@ -1,4 +1,9 @@ -import { BridgeState, IWireguardPublicKey, KeygenEvent } from '../../../shared/daemon-rpc-types'; +import { + BridgeState, + IDnsOptions, + IWireguardPublicKey, + KeygenEvent, +} from '../../../shared/daemon-rpc-types'; import { IGuiSettingsState } from '../../../shared/gui-settings-state'; import { BridgeSettingsRedux, IRelayLocationRedux, IWgKey, RelaySettingsRedux } from './reducers'; @@ -97,6 +102,11 @@ export interface IWireguardKeyVerifiedAction { verified?: boolean; } +export interface IUpdateDnsOptionsAction { + type: 'UPDATE_DNS_OPTIONS'; + dns: IDnsOptions; +} + export type SettingsAction = | IUpdateGuiSettingsAction | IUpdateRelayAction @@ -116,7 +126,8 @@ export type SettingsAction = | IWireguardGenerateKey | IWireguardReplaceKey | IWireguardKeygenEvent - | IWireguardKeyVerifiedAction; + | IWireguardKeyVerifiedAction + | IUpdateDnsOptionsAction; function updateGuiSettings(guiSettings: IGuiSettingsState): IUpdateGuiSettingsAction { return { @@ -261,6 +272,13 @@ function completeWireguardKeyVerification(verified?: boolean): IWireguardKeyVeri }; } +function updateDnsOptions(dns: IDnsOptions): IUpdateDnsOptionsAction { + return { + type: 'UPDATE_DNS_OPTIONS', + dns, + }; +} + export default { updateGuiSettings, updateRelay, @@ -281,4 +299,5 @@ export default { replaceWireguardKey, verifyWireguardKey, completeWireguardKeyVerification, + updateDnsOptions, }; diff --git a/gui/src/renderer/redux/settings/reducers.ts b/gui/src/renderer/redux/settings/reducers.ts index 6f24e871b6..980eea6cd5 100644 --- a/gui/src/renderer/redux/settings/reducers.ts +++ b/gui/src/renderer/redux/settings/reducers.ts @@ -133,6 +133,10 @@ export interface ISettingsReduxState { wireguard: { mtu?: number; }; + dns: { + custom: boolean; + addresses: string[]; + }; wireguardKeyState: WgKeyState; } @@ -173,6 +177,10 @@ const initialState: ISettingsReduxState = { wireguardKeyState: { type: 'key-not-set', }, + dns: { + custom: false, + addresses: [], + }, }; export default function ( @@ -300,6 +308,12 @@ export default function ( }, }; + case 'UPDATE_DNS_OPTIONS': + return { + ...state, + dns: action.dns, + }; + default: return state; } diff --git a/gui/src/shared/daemon-rpc-types.ts b/gui/src/shared/daemon-rpc-types.ts index ecc04eddb6..bac978f7d6 100644 --- a/gui/src/shared/daemon-rpc-types.ts +++ b/gui/src/shared/daemon-rpc-types.ts @@ -262,6 +262,12 @@ export interface ITunnelOptions { generic: { enableIpv6: boolean; }; + dns: IDnsOptions; +} + +export interface IDnsOptions { + custom: boolean; + addresses: string[]; } export type ProxySettings = ILocalProxySettings | IRemoteProxySettings | IShadowsocksProxySettings; |
