summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/renderer')
-rw-r--r--gui/src/renderer/lib/constraint-updater.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/gui/src/renderer/lib/constraint-updater.ts b/gui/src/renderer/lib/constraint-updater.ts
new file mode 100644
index 0000000000..ce9f49f376
--- /dev/null
+++ b/gui/src/renderer/lib/constraint-updater.ts
@@ -0,0 +1,36 @@
+import { RelaySettingsRedux } from '../redux/settings/reducers';
+import RelaySettingsBuilder from '../../shared/relay-settings-builder';
+
+export function createWireguardRelayUpdater(
+ relaySettings: RelaySettingsRedux,
+): ReturnType<typeof RelaySettingsBuilder['normal']> {
+ if ('normal' in relaySettings) {
+ const constraints = relaySettings.normal.wireguard;
+
+ const relayUpdate = RelaySettingsBuilder.normal().tunnel.wireguard((wireguard) => {
+ if (constraints.port === 'any') {
+ wireguard.port.any();
+ } else {
+ wireguard.port.exact(constraints.port);
+ }
+
+ if (constraints.ipVersion === 'any') {
+ wireguard.ipVersion.any();
+ } else {
+ wireguard.ipVersion.exact(constraints.ipVersion);
+ }
+
+ wireguard.useMultihop(constraints.useMultihop);
+
+ if (constraints.entryLocation === 'any') {
+ wireguard.entryLocation.any();
+ } else if (constraints.entryLocation !== undefined) {
+ wireguard.entryLocation.exact(constraints.entryLocation);
+ }
+ });
+
+ return relayUpdate;
+ } else {
+ return RelaySettingsBuilder.normal();
+ }
+}