diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.jsx | 8 | ||||
-rw-r--r-- | src/config.ts | 16 | ||||
-rw-r--r-- | src/containers/settings/EditSettingsScreen.tsx | 17 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 1 | ||||
-rw-r--r-- | src/index.ts | 17 |
5 files changed, 56 insertions, 3 deletions
diff --git a/src/components/settings/settings/EditSettingsForm.jsx b/src/components/settings/settings/EditSettingsForm.jsx index e6cba922b..d0da4ed14 100644 --- a/src/components/settings/settings/EditSettingsForm.jsx +++ b/src/components/settings/settings/EditSettingsForm.jsx | |||
@@ -798,6 +798,14 @@ class EditSettingsForm extends Component { | |||
798 | 798 | ||
799 | <Hr /> | 799 | <Hr /> |
800 | 800 | ||
801 | <Select field={form.$('webRTCIPHandlingPolicy')} /> | ||
802 | |||
803 | <p className="settings__help"> | ||
804 | {intl.formatMessage(messages.appRestartRequired)} | ||
805 | </p> | ||
806 | |||
807 | <Hr /> | ||
808 | |||
801 | <Select field={form.$('searchEngine')} /> | 809 | <Select field={form.$('searchEngine')} /> |
802 | 810 | ||
803 | <p className="settings__help"> | 811 | <p className="settings__help"> |
diff --git a/src/config.ts b/src/config.ts index c8cb09d84..1261d900f 100644 --- a/src/config.ts +++ b/src/config.ts | |||
@@ -38,6 +38,21 @@ export const CDN_URL = 'https://cdn.franzinfra.com'; | |||
38 | 38 | ||
39 | export const KEEP_WS_LOADED_USID = '0a0aa000-0a0a-49a0-a000-a0a0a0a0a0a0'; | 39 | export const KEEP_WS_LOADED_USID = '0a0aa000-0a0a-49a0-a000-a0a0a0a0a0a0'; |
40 | 40 | ||
41 | const defaultWebRTCIPHandlingPolicy = 'default'; | ||
42 | const publicWebRTCIPHandlingPolicy = 'default_public_interface_only'; | ||
43 | const publicPrivateWebRTCIPHandlingPolicy = | ||
44 | 'default_public_and_private_interfaces'; | ||
45 | const disableWebRTCIPHandlingPolicy = 'disable_non_proxied_udp'; | ||
46 | |||
47 | export const WEBRTC_IP_HANDLING_POLICY = { | ||
48 | [defaultWebRTCIPHandlingPolicy]: 'Expose user public and local IPs', | ||
49 | [publicWebRTCIPHandlingPolicy]: | ||
50 | 'Expose user public IP, but not expose user local IP', | ||
51 | [publicPrivateWebRTCIPHandlingPolicy]: | ||
52 | 'Expose user public and local IPs (only use default route used by http)', | ||
53 | [disableWebRTCIPHandlingPolicy]: 'Do not expose public or local IPs', | ||
54 | }; | ||
55 | |||
41 | // TODO: Need to convert many of these to i18n | 56 | // TODO: Need to convert many of these to i18n |
42 | export const HIBERNATION_STRATEGIES = { | 57 | export const HIBERNATION_STRATEGIES = { |
43 | 10: 'Extremely Fast Hibernation (10sec)', | 58 | 10: 'Extremely Fast Hibernation (10sec)', |
@@ -397,6 +412,7 @@ export const DEFAULT_APP_SETTINGS = { | |||
397 | sidebarServicesLocation: SIDEBAR_SERVICES_LOCATION_TOPLEFT, | 412 | sidebarServicesLocation: SIDEBAR_SERVICES_LOCATION_TOPLEFT, |
398 | iconSize: iconSizeBias, | 413 | iconSize: iconSizeBias, |
399 | navigationBarBehaviour: 'custom', | 414 | navigationBarBehaviour: 'custom', |
415 | webRTCIPHandlingPolicy: disableWebRTCIPHandlingPolicy, | ||
400 | searchEngine: SEARCH_ENGINE_STARTPAGE, | 416 | searchEngine: SEARCH_ENGINE_STARTPAGE, |
401 | translatorLanguage: 'en', | 417 | translatorLanguage: 'en', |
402 | translatorEngine: TRANSLATOR_ENGINE_LIBRETRANSLATE, | 418 | translatorEngine: TRANSLATOR_ENGINE_LIBRETRANSLATE, |
diff --git a/src/containers/settings/EditSettingsScreen.tsx b/src/containers/settings/EditSettingsScreen.tsx index a4d7ba0eb..162d422ce 100644 --- a/src/containers/settings/EditSettingsScreen.tsx +++ b/src/containers/settings/EditSettingsScreen.tsx | |||
@@ -26,6 +26,7 @@ import { | |||
26 | WAKE_UP_HIBERNATION_STRATEGIES, | 26 | WAKE_UP_HIBERNATION_STRATEGIES, |
27 | SPLIT_COLUMNS_MIN, | 27 | SPLIT_COLUMNS_MIN, |
28 | SPLIT_COLUMNS_MAX, | 28 | SPLIT_COLUMNS_MAX, |
29 | WEBRTC_IP_HANDLING_POLICY, | ||
29 | } from '../../config'; | 30 | } from '../../config'; |
30 | import { isMac } from '../../environment'; | 31 | import { isMac } from '../../environment'; |
31 | 32 | ||
@@ -103,6 +104,10 @@ const messages = defineMessages({ | |||
103 | id: 'settings.app.form.navigationBarBehaviour', | 104 | id: 'settings.app.form.navigationBarBehaviour', |
104 | defaultMessage: 'Navigation bar behaviour', | 105 | defaultMessage: 'Navigation bar behaviour', |
105 | }, | 106 | }, |
107 | webRTCIPHandlingPolicy: { | ||
108 | id: 'settings.app.form.webRTCIPHandlingPolicy', | ||
109 | defaultMessage: 'WebRTC IP Handling Policy', | ||
110 | }, | ||
106 | searchEngine: { | 111 | searchEngine: { |
107 | id: 'settings.app.form.searchEngine', | 112 | id: 'settings.app.form.searchEngine', |
108 | defaultMessage: 'Search engine', | 113 | defaultMessage: 'Search engine', |
@@ -357,6 +362,7 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
357 | clipboardNotifications: Boolean(settingsData.clipboardNotifications), | 362 | clipboardNotifications: Boolean(settingsData.clipboardNotifications), |
358 | notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage), | 363 | notifyTaskBarOnMessage: Boolean(settingsData.notifyTaskBarOnMessage), |
359 | navigationBarBehaviour: settingsData.navigationBarBehaviour, | 364 | navigationBarBehaviour: settingsData.navigationBarBehaviour, |
365 | webRTCIPHandlingPolicy: settingsData.webRTCIPHandlingPolicy, | ||
360 | searchEngine: settingsData.searchEngine, | 366 | searchEngine: settingsData.searchEngine, |
361 | translatorEngine: settingsData.translatorEngine, | 367 | translatorEngine: settingsData.translatorEngine, |
362 | translatorLanguage: settingsData.translatorLanguage, | 368 | translatorLanguage: settingsData.translatorLanguage, |
@@ -465,6 +471,11 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
465 | sort: false, | 471 | sort: false, |
466 | }); | 472 | }); |
467 | 473 | ||
474 | const webRTCIPHandlingPolicies = getSelectOptions({ | ||
475 | locales: WEBRTC_IP_HANDLING_POLICY, | ||
476 | sort: false, | ||
477 | }); | ||
478 | |||
468 | const searchEngines = getSelectOptions({ | 479 | const searchEngines = getSelectOptions({ |
469 | locales: SEARCH_ENGINE_NAMES, | 480 | locales: SEARCH_ENGINE_NAMES, |
470 | sort: false, | 481 | sort: false, |
@@ -597,6 +608,12 @@ class EditSettingsScreen extends Component<EditSettingsScreenProps> { | |||
597 | default: DEFAULT_APP_SETTINGS.navigationBarBehaviour, | 608 | default: DEFAULT_APP_SETTINGS.navigationBarBehaviour, |
598 | options: navigationBarBehaviours, | 609 | options: navigationBarBehaviours, |
599 | }, | 610 | }, |
611 | webRTCIPHandlingPolicy: { | ||
612 | label: intl.formatMessage(messages.webRTCIPHandlingPolicy), | ||
613 | value: settings.all.app.webRTCIPHandlingPolicy, | ||
614 | default: DEFAULT_APP_SETTINGS.webRTCIPHandlingPolicy, | ||
615 | options: webRTCIPHandlingPolicies, | ||
616 | }, | ||
600 | searchEngine: { | 617 | searchEngine: { |
601 | label: intl.formatMessage(messages.searchEngine), | 618 | label: intl.formatMessage(messages.searchEngine), |
602 | value: settings.all.app.searchEngine, | 619 | value: settings.all.app.searchEngine, |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 4dc8bad82..80ad855c3 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -266,6 +266,7 @@ | |||
266 | "settings.app.form.wakeUpHibernationSplay": "Splay hibernate/wake cycles to reduce load", | 266 | "settings.app.form.wakeUpHibernationSplay": "Splay hibernate/wake cycles to reduce load", |
267 | "settings.app.form.wakeUpHibernationStrategy": "Hibernation strategy after automatic wake up", | 267 | "settings.app.form.wakeUpHibernationStrategy": "Hibernation strategy after automatic wake up", |
268 | "settings.app.form.wakeUpStrategy": "Wake up strategy", | 268 | "settings.app.form.wakeUpStrategy": "Wake up strategy", |
269 | "settings.app.form.webRTCIPHandlingPolicy": "WebRTC IP Handling Policy", | ||
269 | "settings.app.headlineAdvanced": "Advanced", | 270 | "settings.app.headlineAdvanced": "Advanced", |
270 | "settings.app.headlineAppearance": "Appearance", | 271 | "settings.app.headlineAppearance": "Appearance", |
271 | "settings.app.headlineGeneral": "General", | 272 | "settings.app.headlineGeneral": "General", |
diff --git a/src/index.ts b/src/index.ts index 7c80ca955..97c77d185 100644 --- a/src/index.ts +++ b/src/index.ts | |||
@@ -90,8 +90,8 @@ if (isWindows) { | |||
90 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); | 90 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); |
91 | const proxySettings = new Settings('proxy'); | 91 | const proxySettings = new Settings('proxy'); |
92 | 92 | ||
93 | const retrieveSettingValue = (key: string, defaultValue: boolean) => | 93 | const retrieveSettingValue = (key: string, defaultValue: boolean | string) => |
94 | ifUndefined<boolean>(settings.get(key), defaultValue); | 94 | ifUndefined<boolean | string>(settings.get(key), defaultValue); |
95 | 95 | ||
96 | const liftSingleInstanceLock = retrieveSettingValue( | 96 | const liftSingleInstanceLock = retrieveSettingValue( |
97 | 'liftSingleInstanceLock', | 97 | 'liftSingleInstanceLock', |
@@ -164,6 +164,15 @@ if (!retrieveSettingValue('enableGPUAcceleration', false)) { | |||
164 | app.disableHardwareAcceleration(); | 164 | app.disableHardwareAcceleration(); |
165 | } | 165 | } |
166 | 166 | ||
167 | const webRTCIPHandlingPolicy = retrieveSettingValue( | ||
168 | 'webRTCIPHandlingPolicy', | ||
169 | DEFAULT_APP_SETTINGS.webRTCIPHandlingPolicy, | ||
170 | ) as | ||
171 | | 'disable_non_proxied_udp' | ||
172 | | 'default' | ||
173 | | 'default_public_interface_only' | ||
174 | | 'default_public_and_private_interfaces'; | ||
175 | |||
167 | const createWindow = () => { | 176 | const createWindow = () => { |
168 | // Remember window size | 177 | // Remember window size |
169 | const mainWindowState = windowStateKeeper({ | 178 | const mainWindowState = windowStateKeeper({ |
@@ -202,7 +211,7 @@ const createWindow = () => { | |||
202 | spellcheck: retrieveSettingValue( | 211 | spellcheck: retrieveSettingValue( |
203 | 'enableSpellchecking', | 212 | 'enableSpellchecking', |
204 | DEFAULT_APP_SETTINGS.enableSpellchecking, | 213 | DEFAULT_APP_SETTINGS.enableSpellchecking, |
205 | ), | 214 | ) as boolean | undefined, |
206 | nodeIntegration: true, | 215 | nodeIntegration: true, |
207 | contextIsolation: false, | 216 | contextIsolation: false, |
208 | webviewTag: true, | 217 | webviewTag: true, |
@@ -210,6 +219,7 @@ const createWindow = () => { | |||
210 | }); | 219 | }); |
211 | 220 | ||
212 | enableWebContents(mainWindow.webContents); | 221 | enableWebContents(mainWindow.webContents); |
222 | mainWindow.webContents.setWebRTCIPHandlingPolicy(webRTCIPHandlingPolicy); | ||
213 | 223 | ||
214 | app.on('browser-window-created', (_, window) => { | 224 | app.on('browser-window-created', (_, window) => { |
215 | enableWebContents(window.webContents); | 225 | enableWebContents(window.webContents); |
@@ -532,6 +542,7 @@ ipcMain.on('open-browser-window', (_e, { url, serviceId }) => { | |||
532 | }, | 542 | }, |
533 | }); | 543 | }); |
534 | enableWebContents(child.webContents); | 544 | enableWebContents(child.webContents); |
545 | child.webContents.setWebRTCIPHandlingPolicy(webRTCIPHandlingPolicy); | ||
535 | child.show(); | 546 | child.show(); |
536 | child.loadURL(url); | 547 | child.loadURL(url); |
537 | debug('Received open-browser-window', url); | 548 | debug('Received open-browser-window', url); |