Skip to content

Commit

Permalink
Remove now obsolete webrtc-related setting
Browse files Browse the repository at this point in the history
Related issue:
- uBlockOrigin/uBlock-issues#1723

The leaking of local IP addresses is no longer an issue
in modern browsers.
  • Loading branch information
gorhill committed Sep 14, 2021
1 parent 8263351 commit af41aad
Show file tree
Hide file tree
Showing 6 changed files with 0 additions and 90 deletions.
81 changes: 0 additions & 81 deletions platform/common/vapi-background.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,83 +122,6 @@ vAPI.browserSettings = (( ) => {
if ( bp instanceof Object === false ) { return; }

return {
// Whether the WebRTC-related privacy API is crashy is an open question
// only for Chromium proper (because it can be compiled without the
// WebRTC feature): hence avoid overhead of the evaluation (which uses
// an iframe) for platforms where it's a non-issue.
// https://github.com/uBlockOrigin/uBlock-issues/issues/9
// Some Chromium builds are made to look like a Chrome build.
webRTCSupported: vAPI.webextFlavor.soup.has('chromium') === false || undefined,

// Calling with `true` means IP address leak is not prevented.
// https://github.com/gorhill/uBlock/issues/533
// We must first check wether this Chromium-based browser was compiled
// with WebRTC support. To do this, we use an iframe, this way the
// empty RTCPeerConnection object we create to test for support will
// be properly garbage collected. This prevents issues such as
// a computer unable to enter into sleep mode, as reported in the
// Chrome store:
// https://github.com/gorhill/uBlock/issues/533#issuecomment-167931681
setWebrtcIPAddress: function(setting) {
// We don't know yet whether this browser supports WebRTC: find out.
if ( this.webRTCSupported === undefined ) {
// If asked to leave WebRTC setting alone at this point in the
// code, this means we never grabbed the setting in the first
// place.
if ( setting ) { return; }
this.webRTCSupported = { setting: setting };
let iframe = document.createElement('iframe');
const messageHandler = ev => {
if ( ev.origin !== self.location.origin ) { return; }
window.removeEventListener('message', messageHandler);
const setting = this.webRTCSupported.setting;
this.webRTCSupported = ev.data === 'webRTCSupported';
this.setWebrtcIPAddress(setting);
iframe.parentNode.removeChild(iframe);
iframe = null;
};
window.addEventListener('message', messageHandler);
iframe.src = 'is-webrtc-supported.html';
document.body.appendChild(iframe);
return;
}

// We are waiting for a response from our iframe. This makes the code
// safe to re-entrancy.
if ( typeof this.webRTCSupported === 'object' ) {
this.webRTCSupported.setting = setting;
return;
}

// https://github.com/gorhill/uBlock/issues/533
// WebRTC not supported: `webRTCMultipleRoutesEnabled` can NOT be
// safely accessed. Accessing the property will cause full browser
// crash.
if ( this.webRTCSupported !== true ) { return; }

const bpn = bp.network;

if ( setting ) {
bpn.webRTCIPHandlingPolicy.clear({
scope: 'regular',
});
} else {
// https://github.com/uBlockOrigin/uAssets/issues/333#issuecomment-289426678
// Leverage virtuous side-effect of strictest setting.
// https://github.com/gorhill/uBlock/issues/3009
// Firefox currently works differently, use
// `default_public_interface_only` for now.
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy/network#Browser_compatibility
// Firefox 70+ supports `disable_non_proxied_udp`
const value =
vAPI.webextFlavor.soup.has('firefox') === false ||
vAPI.webextFlavor.major < 70
? 'default_public_interface_only'
: 'disable_non_proxied_udp';
bpn.webRTCIPHandlingPolicy.set({ value, scope: 'regular' });
}
},

set: function(details) {
for ( const setting in details ) {
if ( details.hasOwnProperty(setting) === false ) { continue; }
Expand Down Expand Up @@ -233,10 +156,6 @@ vAPI.browserSettings = (( ) => {
}
break;

case 'webrtcIPAddress':
this.setWebrtcIPAddress(!!details[setting]);
break;

default:
break;
}
Expand Down
1 change: 0 additions & 1 deletion src/js/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@ const userSettingsDefault = {
requestLogMaxEntries: 1000,
showIconBadge: true,
tooltipsDisabled: false,
webrtcIPAddressHidden: false,
};

const µBlock = { // jshint ignore:line
Expand Down
1 change: 0 additions & 1 deletion src/js/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@ const onLocalDataReceived = function(details) {
if ( details.privacySettingsSupported === false ) {
uDom('[data-setting-name="prefetchingDisabled"]').attr('disabled', '');
uDom('[data-setting-name="hyperlinkAuditingDisabled"]').attr('disabled', '');
uDom('[data-setting-name="webrtcIPAddressHidden"]').attr('disabled', '');
}
};

Expand Down
1 change: 0 additions & 1 deletion src/js/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@ const onUserSettingsReady = function(fetched) {
vAPI.browserSettings.set({
'hyperlinkAuditing': !µb.userSettings.hyperlinkAuditingDisabled,
'prefetching': !µb.userSettings.prefetchingDisabled,
'webrtcIPAddress': !µb.userSettings.webrtcIPAddressHidden
});
}

Expand Down
5 changes: 0 additions & 5 deletions src/js/ublock.js
Original file line number Diff line number Diff line change
Expand Up @@ -394,11 +394,6 @@ const matchBucket = function(url, hostname, bucket, start) {
vAPI.browserSettings.set({ 'prefetching': !value });
}
break;
case 'webrtcIPAddressHidden':
if ( this.privacySettingsSupported ) {
vAPI.browserSettings.set({ 'webrtcIPAddress': !value });
}
break;
default:
break;
}
Expand Down
1 change: 0 additions & 1 deletion src/settings.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
<div class="fieldset-header" data-i18n="3pGroupPrivacy"></div>
<div class="li"><label><span class="input checkbox"><input type="checkbox" data-setting-name="prefetchingDisabled" data-setting-type="bool"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span><span data-i18n="settingsPrefetchingDisabledPrompt"></span>&nbsp;<a class="fa-icon info" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#disable-pre-fetching" target="_blank">info-circle</a></span></label></div>
<div class="li"><label><span class="input checkbox"><input type="checkbox" data-setting-name="hyperlinkAuditingDisabled" data-setting-type="bool"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span><span data-i18n="settingsHyperlinkAuditingDisabledPrompt"></span>&nbsp;<a class="fa-icon info important" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#disable-hyperlink-auditing" target="_blank">info-circle</a></span></label></div>
<div class="li"><label><span class="input checkbox"><input type="checkbox" data-setting-name="webrtcIPAddressHidden" data-setting-type="bool"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span><span data-i18n="settingsWebRTCIPAddressHiddenPrompt"></span>&nbsp;<a class="fa-icon info important" href="https://github.com/gorhill/uBlock/wiki/Prevent-WebRTC-from-leaking-local-IP-address" target="_blank">info-circle</a></span></label></div>
<div class="li"><label><span class="input checkbox"><input type="checkbox" data-setting-name="noCSPReports" data-setting-type="bool"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span><span data-i18n="settingsNoCSPReportsPrompt"></span>&nbsp;<a class="fa-icon info" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#block-csp-reports" target="_blank">info-circle</a></span></label></div>
<div class="li"><label><span class="input checkbox"><input type="checkbox" data-setting-name="cnameUncloakEnabled" data-setting-type="bool"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span><span data-i18n="settingsUncloakCnamePrompt"></span>&nbsp;<a class="fa-icon info" href="https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#uncloak-canonical-names" target="_blank">info-circle</a></span></label></div>
</div>
Expand Down

0 comments on commit af41aad

Please sign in to comment.