summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-11-03 14:43:15 +0100
committerOskar Nyberg <oskar@mullvad.net>2020-11-16 17:19:49 +0100
commitf9bebec26836aacb0c043a7b86482f2ae9c61495 (patch)
treed52b88769908766739954a59d27b2831a5164d57 /gui/src
parent765f777dd4399b334fe6641e5d427d379826501a (diff)
downloadmullvadvpn-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.ts4
-rw-r--r--gui/src/main/index.ts4
-rw-r--r--gui/src/renderer/app.tsx1
-rw-r--r--gui/src/renderer/redux/settings/actions.ts23
-rw-r--r--gui/src/renderer/redux/settings/reducers.ts14
-rw-r--r--gui/src/shared/daemon-rpc-types.ts6
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;