Skip to content

Commit f9bebec

Browse files
committed
Add custom DNS to frontend RPC and to Redux store
1 parent 765f777 commit f9bebec

File tree

6 files changed

+50
-2
lines changed

6 files changed

+50
-2
lines changed

gui/src/main/daemon-rpc.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,10 @@ function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObjec
10291029
generic: {
10301030
enableIpv6: tunnelOptions.generic!.enableIpv6,
10311031
},
1032+
dns: {
1033+
custom: tunnelOptions.dnsOptions?.custom ?? false,
1034+
addresses: tunnelOptions.dnsOptions?.addressesList ?? [],
1035+
},
10321036
};
10331037
}
10341038

gui/src/main/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ class ApplicationMain {
137137
wireguard: {
138138
mtu: undefined,
139139
},
140+
dns: {
141+
custom: false,
142+
addresses: [],
143+
},
140144
},
141145
};
142146
private guiSettings = new GuiSettings();

gui/src/renderer/app.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,7 @@ export default class AppRenderer {
611611
reduxSettings.updateOpenVpnMssfix(newSettings.tunnelOptions.openvpn.mssfix);
612612
reduxSettings.updateWireguardMtu(newSettings.tunnelOptions.wireguard.mtu);
613613
reduxSettings.updateBridgeState(newSettings.bridgeState);
614+
reduxSettings.updateDnsOptions(newSettings.tunnelOptions.dns);
614615

615616
this.setRelaySettings(newSettings.relaySettings);
616617
this.setBridgeSettings(newSettings.bridgeSettings);

gui/src/renderer/redux/settings/actions.ts

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { BridgeState, IWireguardPublicKey, KeygenEvent } from '../../../shared/daemon-rpc-types';
1+
import {
2+
BridgeState,
3+
IDnsOptions,
4+
IWireguardPublicKey,
5+
KeygenEvent,
6+
} from '../../../shared/daemon-rpc-types';
27
import { IGuiSettingsState } from '../../../shared/gui-settings-state';
38
import { BridgeSettingsRedux, IRelayLocationRedux, IWgKey, RelaySettingsRedux } from './reducers';
49

@@ -97,6 +102,11 @@ export interface IWireguardKeyVerifiedAction {
97102
verified?: boolean;
98103
}
99104

105+
export interface IUpdateDnsOptionsAction {
106+
type: 'UPDATE_DNS_OPTIONS';
107+
dns: IDnsOptions;
108+
}
109+
100110
export type SettingsAction =
101111
| IUpdateGuiSettingsAction
102112
| IUpdateRelayAction
@@ -116,7 +126,8 @@ export type SettingsAction =
116126
| IWireguardGenerateKey
117127
| IWireguardReplaceKey
118128
| IWireguardKeygenEvent
119-
| IWireguardKeyVerifiedAction;
129+
| IWireguardKeyVerifiedAction
130+
| IUpdateDnsOptionsAction;
120131

121132
function updateGuiSettings(guiSettings: IGuiSettingsState): IUpdateGuiSettingsAction {
122133
return {
@@ -261,6 +272,13 @@ function completeWireguardKeyVerification(verified?: boolean): IWireguardKeyVeri
261272
};
262273
}
263274

275+
function updateDnsOptions(dns: IDnsOptions): IUpdateDnsOptionsAction {
276+
return {
277+
type: 'UPDATE_DNS_OPTIONS',
278+
dns,
279+
};
280+
}
281+
264282
export default {
265283
updateGuiSettings,
266284
updateRelay,
@@ -281,4 +299,5 @@ export default {
281299
replaceWireguardKey,
282300
verifyWireguardKey,
283301
completeWireguardKeyVerification,
302+
updateDnsOptions,
284303
};

gui/src/renderer/redux/settings/reducers.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ export interface ISettingsReduxState {
133133
wireguard: {
134134
mtu?: number;
135135
};
136+
dns: {
137+
custom: boolean;
138+
addresses: string[];
139+
};
136140
wireguardKeyState: WgKeyState;
137141
}
138142

@@ -173,6 +177,10 @@ const initialState: ISettingsReduxState = {
173177
wireguardKeyState: {
174178
type: 'key-not-set',
175179
},
180+
dns: {
181+
custom: false,
182+
addresses: [],
183+
},
176184
};
177185

178186
export default function (
@@ -300,6 +308,12 @@ export default function (
300308
},
301309
};
302310

311+
case 'UPDATE_DNS_OPTIONS':
312+
return {
313+
...state,
314+
dns: action.dns,
315+
};
316+
303317
default:
304318
return state;
305319
}

gui/src/shared/daemon-rpc-types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,12 @@ export interface ITunnelOptions {
262262
generic: {
263263
enableIpv6: boolean;
264264
};
265+
dns: IDnsOptions;
266+
}
267+
268+
export interface IDnsOptions {
269+
custom: boolean;
270+
addresses: string[];
265271
}
266272

267273
export type ProxySettings = ILocalProxySettings | IRemoteProxySettings | IShadowsocksProxySettings;

0 commit comments

Comments
 (0)