Revive formerly removed <noscript> tag spoofing code
Also: - a new per-scope switch has been added to control <noscript> spoofing on a per site basis - a global setting to be used as the default state of the <noscript> spoofing switch - Privacy pane has been merged into Setting panepull/2/head
parent
b5d94c708d
commit
9d43f929bc
@ -1,142 +0,0 @@
|
||||
/*******************************************************************************
|
||||
|
||||
uMatrix - a Chromium browser extension to black/white list requests.
|
||||
Copyright (C) 2014-2017 Raymond Hill
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see {http://www.gnu.org/licenses/}.
|
||||
|
||||
Home: https://github.com/gorhill/uMatrix
|
||||
*/
|
||||
|
||||
/* global vAPI, uDom */
|
||||
|
||||
'use strict';
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
(function() {
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
var messager = vAPI.messaging.channel('privacy.js');
|
||||
|
||||
var cachedPrivacySettings = {};
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function changeUserSettings(name, value) {
|
||||
messager.send({
|
||||
what: 'userSettings',
|
||||
name: name,
|
||||
value: value
|
||||
});
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function changeMatrixSwitch(name, state) {
|
||||
messager.send({
|
||||
what: 'setMatrixSwitch',
|
||||
switchName: name,
|
||||
state: state
|
||||
});
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function onChangeValueHandler(uelem, setting, min, max) {
|
||||
var oldVal = cachedPrivacySettings.userSettings[setting];
|
||||
var newVal = Math.round(parseFloat(uelem.val()));
|
||||
if ( typeof newVal !== 'number' ) {
|
||||
newVal = oldVal;
|
||||
} else {
|
||||
newVal = Math.max(newVal, min);
|
||||
newVal = Math.min(newVal, max);
|
||||
}
|
||||
uelem.val(newVal);
|
||||
if ( newVal !== oldVal ) {
|
||||
changeUserSettings(setting, newVal);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function prepareToDie() {
|
||||
onChangeValueHandler(uDom('#delete-unused-session-cookies-after'), 'deleteUnusedSessionCookiesAfter', 15, 1440);
|
||||
onChangeValueHandler(uDom('#clear-browser-cache-after'), 'clearBrowserCacheAfter', 15, 1440);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
var installEventHandlers = function() {
|
||||
uDom('[data-setting-bool]').on('change', function(){
|
||||
var settingName = this.getAttribute('data-setting-bool');
|
||||
if ( typeof settingName === 'string' && settingName !== '' ) {
|
||||
changeUserSettings(settingName, this.checked);
|
||||
}
|
||||
});
|
||||
|
||||
uDom('[data-matrix-switch]').on('change', function(){
|
||||
var switchName = this.getAttribute('data-matrix-switch');
|
||||
if ( typeof switchName === 'string' && switchName !== '' ) {
|
||||
changeMatrixSwitch(switchName, this.checked);
|
||||
}
|
||||
});
|
||||
|
||||
uDom('#delete-unused-session-cookies-after').on('change', function(){
|
||||
onChangeValueHandler(uDom(this), 'deleteUnusedSessionCookiesAfter', 15, 1440);
|
||||
});
|
||||
uDom('#clear-browser-cache-after').on('change', function(){
|
||||
onChangeValueHandler(uDom(this), 'clearBrowserCacheAfter', 15, 1440);
|
||||
});
|
||||
|
||||
// https://github.com/gorhill/httpswitchboard/issues/197
|
||||
uDom(window).on('beforeunload', prepareToDie);
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
uDom.onLoad(function() {
|
||||
var onSettingsReceived = function(privacySettings) {
|
||||
// Cache copy
|
||||
cachedPrivacySettings = privacySettings;
|
||||
|
||||
var userSettings = privacySettings.userSettings;
|
||||
var matrixSwitches = privacySettings.matrixSwitches;
|
||||
|
||||
uDom('[data-setting-bool]').forEach(function(elem){
|
||||
var settingName = elem.attr('data-setting-bool');
|
||||
if ( typeof settingName === 'string' && settingName !== '' ) {
|
||||
elem.prop('checked', userSettings[settingName] === true);
|
||||
}
|
||||
});
|
||||
|
||||
uDom('[data-matrix-switch]').forEach(function(elem){
|
||||
var switchName = elem.attr('data-matrix-switch');
|
||||
if ( typeof switchName === 'string' && switchName !== '' ) {
|
||||
elem.prop('checked', matrixSwitches[switchName] === true);
|
||||
}
|
||||
});
|
||||
|
||||
uDom('#delete-unused-session-cookies-after').val(userSettings.deleteUnusedSessionCookiesAfter);
|
||||
uDom('#clear-browser-cache-after').val(userSettings.clearBrowserCacheAfter);
|
||||
|
||||
installEventHandlers();
|
||||
};
|
||||
messager.send({ what: 'getPrivacySettings' }, onSettingsReceived);
|
||||
});
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
})();
|
@ -1,88 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>uMatrix — Privacy</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/common.css">
|
||||
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
|
||||
<style>
|
||||
div > p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
div > p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
ul {
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
ul > li {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
.dim {
|
||||
font-weight: 100;
|
||||
color: #888;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<input id="delete-blacklisted-cookies" type="checkbox" data-setting-bool="deleteCookies"><label data-i18n="privacyDeleteBlockedCookiesPrompt" for="delete-blacklisted-cookies"></label>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyDeleteBlockedCookiesHelp"></div>
|
||||
<li>
|
||||
<input id="delete-unused-session-cookies" type="checkbox" data-setting-bool="deleteUnusedSessionCookies"><label data-i18n="privacyDeleteNonBlockedSessionCookiesPrompt1" for="delete-unused-session-cookies"></label>
|
||||
<input id="delete-unused-session-cookies-after" type="text" value="60" size="3"><span data-i18n="privacyDeleteNonBlockedSessionCookiesPrompt2"></span>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyDeleteNonBlockedSessionCookiesHelp"></div>
|
||||
<!--
|
||||
Delete non-blocked session cookies x minutes after the last time they have been used.
|
||||
|
||||
Allow generically blocked cookies but deleted them x minutes after they have been first created.
|
||||
|
||||
A "generically blocked" cookie is a cookie which inherits its block status in
|
||||
the matrix from the `cookie` cell or the `all` cell in the top row of the
|
||||
matrix.
|
||||
|
||||
When a cookie inherits its block status from a cell in the top row of the
|
||||
matrix (the "header" row), this means it is not specifically distrusted, but
|
||||
rather that the default stance is to distrust cookies in general.
|
||||
|
||||
However some sites do require cookies to minimally work properly. This options
|
||||
allow to "unbreak" these sites by allowing not specifically distrusted cookies
|
||||
to travel back and forth between you and the server, but to limit the lifetime
|
||||
of these cookies so that they cannot be used to track you.
|
||||
-->
|
||||
<li>
|
||||
<input id="delete-blacklisted-localstorage" type="checkbox" data-setting-bool="deleteLocalStorage"><label data-i18n="privacyDeleteBlockedLocalStoragePrompt" for="delete-blacklisted-localstorage"></label>
|
||||
<li>
|
||||
<input id="clear-browser-cache" type="checkbox" data-setting-bool="clearBrowserCache"><label data-i18n="privacyClearCachePrompt1" for="clear-browser-cache"></label>
|
||||
<input id="clear-browser-cache-after" type="text" value="60" size="3"> <label data-i18n="privacyClearCachePrompt2" for="clear-browser-cache-after"></label>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyClearCacheHelp"></div>
|
||||
<li>
|
||||
<input id="process-referer" type="checkbox" data-matrix-switch="referrer-spoof"><label data-i18n="privacyProcessRefererPrompt" for="process-referer"></label>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyProcessRefererHelp"></div>
|
||||
<li>
|
||||
<input id="no-mixed-content" type="checkbox" data-matrix-switch="https-strict"><label data-i18n="privacyNoMixedContentPrompt" for="no-mixed-content"></label>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyNoMixedContentHelp"></div>
|
||||
<li>
|
||||
<input id="process-hyperlink-auditing" type="checkbox" data-setting-bool="processHyperlinkAuditing"><label data-i18n="privacyProcessHyperlinkAuditingPrompt" for="process-hyperlink-auditing"></label>
|
||||
<span class="whatisthis"></span>
|
||||
<div class="whatisthis-expandable para" data-i18n="privacyProcessHyperlinkAuditingHelp"></div>
|
||||
</ul>
|
||||
|
||||
<script src="js/vapi-common.js"></script>
|
||||
<script src="js/vapi-client.js"></script>
|
||||
<script src="js/udom.js"></script>
|
||||
<script src="js/i18n.js"></script>
|
||||
<script src="js/dashboard-common.js"></script>
|
||||
<script src="js/privacy.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue