diff options
author | Alessio Vanni <vannilla@firemail.cc> | 2019-02-19 21:06:09 +0100 |
---|---|---|
committer | Alessio Vanni <vannilla@firemail.cc> | 2019-02-19 21:06:09 +0100 |
commit | fe2f8acc8210c2ddead4621797b47106a9b38f5b (patch) | |
tree | 5fb103d45d7e4345f56fc068ce8173b82fa7051f /js/background.js | |
download | ematrix-fe2f8acc8210c2ddead4621797b47106a9b38f5b.tar.lz ematrix-fe2f8acc8210c2ddead4621797b47106a9b38f5b.tar.xz ematrix-fe2f8acc8210c2ddead4621797b47106a9b38f5b.zip |
Fork uMatrix
Pretty much just changing the name and the copyright.
Diffstat (limited to 'js/background.js')
-rw-r--r-- | js/background.js | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/js/background.js b/js/background.js new file mode 100644 index 0000000..1a46616 --- /dev/null +++ b/js/background.js @@ -0,0 +1,246 @@ +/******************************************************************************* + + ηMatrix - a browser extension to black/white list requests. + Copyright (C) 2014-2019 Raymond Hill + Copyright (C) 2019 Alessio Vanni + + 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/}. + + uMatrix Home: https://github.com/gorhill/uMatrix +*/ + +'use strict'; + +/******************************************************************************/ + +var µMatrix = (function() { // jshint ignore:line + +/******************************************************************************/ + +var oneSecond = 1000; +var oneMinute = 60 * oneSecond; +var oneHour = 60 * oneMinute; +var oneDay = 24 * oneHour; + +/******************************************************************************/ +/******************************************************************************/ + +var _RequestStats = function() { + this.reset(); +}; + +_RequestStats.prototype.reset = function() { + this.all = + this.doc = + this.frame = + this.script = + this.css = + this.image = + this.media = + this.xhr = + this.other = + this.cookie = 0; +}; + +/******************************************************************************/ + +var RequestStats = function() { + this.allowed = new _RequestStats(); + this.blocked = new _RequestStats(); +}; + +RequestStats.prototype.reset = function() { + this.blocked.reset(); + this.allowed.reset(); +}; + +RequestStats.prototype.record = function(type, blocked) { + // Remember: always test against **false** + if ( blocked !== false ) { + this.blocked[type] += 1; + this.blocked.all += 1; + } else { + this.allowed[type] += 1; + this.allowed.all += 1; + } +}; + +var requestStatsFactory = function() { + return new RequestStats(); +}; + +/******************************************************************************* + + SVG-based icons below were extracted from + fontawesome-webfont.svg v4.7. Excerpt of copyright notice at + the top of the file: + + > Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + > By ,,, + > Copyright Dave Gandy 2016. All rights reserved. + + Excerpt of the license information in the fontawesome CSS + file bundled with the package: + + > Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + > License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + + Font icons: + - glyph-name: "external_link" + +*/ + +var rawSettingsDefault = { + disableCSPReportInjection: false, + placeholderBackground: + [ + 'url("data:image/png;base64,', + 'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAK', + 'CAAAAACoWZBhAAAABGdBTUEAALGPC/xh', + 'BQAAAAJiS0dEAP+Hj8y/AAAAB3RJTUUH', + '3wwIAAgyL/YaPAAAACJJREFUCFtjfMbO', + 'AAQ/gZiFnQPEBAEmGIMIJgtIL8QEgtoA', + 'In4D/96X1KAAAAAldEVYdGRhdGU6Y3Jl', + 'YXRlADIwMTUtMTItMDhUMDA6MDg6NTAr', + 'MDM6MDAasuuJAAAAJXRFWHRkYXRlOm1v', + 'ZGlmeQAyMDE1LTEyLTA4VDAwOjA4OjUw', + 'KzAzOjAwa+9TNQAAAABJRU5ErkJggg==', + '") ', + 'repeat scroll #fff' + ].join(''), + placeholderBorder: '1px solid rgba(0, 0, 0, 0.1)', + imagePlaceholder: true, + imagePlaceholderBackground: 'default', + imagePlaceholderBorder: 'default', + framePlaceholder: true, + framePlaceholderDocument: + [ + '<html><head>', + '<meta charset="utf-8">', + '<style>', + 'body { ', + 'background: {{bg}};', + 'color: gray;', + 'font: 12px sans-serif;', + 'margin: 0;', + 'overflow: hidden;', + 'padding: 2px;', + 'white-space: nowrap;', + '}', + 'a { ', + 'color: inherit;', + 'padding: 0 3px;', + 'text-decoration: none;', + '}', + 'svg {', + 'display: inline-block;', + 'fill: gray;', + 'height: 12px;', + 'vertical-align: bottom;', + 'width: 12px;', + '}', + '</style></head><body>', + '<span><a href="{{url}}" title="{{url}}" target="_blank">', + '<svg viewBox="0 0 1792 1792"><path transform="scale(1,-1) translate(0,-1536)" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /></svg>', + '</a>{{url}}</span>', + '</body></html>' + ].join(''), + framePlaceholderBackground: 'default', +}; + +/******************************************************************************/ + +return { + onBeforeStartQueue: [], + + userSettings: { + alwaysDetachLogger: false, + autoUpdate: false, + clearBrowserCache: true, + clearBrowserCacheAfter: 60, + cloudStorageEnabled: false, + collapseBlacklisted: true, + collapseBlocked: false, + colorBlindFriendly: false, + deleteCookies: false, + deleteUnusedSessionCookies: false, + deleteUnusedSessionCookiesAfter: 60, + deleteLocalStorage: false, + displayTextSize: '14px', + externalHostsFiles: '', + iconBadgeEnabled: false, + maxLoggedRequests: 1000, + popupCollapseAllDomains: false, + popupCollapseBlacklistedDomains: false, + popupScopeLevel: 'domain', + processHyperlinkAuditing: true, + processReferer: false + }, + + rawSettingsDefault: rawSettingsDefault, + rawSettings: Object.assign({}, rawSettingsDefault), + rawSettingsWriteTime: 0, + + clearBrowserCacheCycle: 0, + cspNoInlineScript: "script-src 'unsafe-eval' blob: *", + cspNoInlineStyle: "style-src blob: *", + cspNoWorker: undefined, + updateAssetsEvery: 11 * oneDay + 1 * oneHour + 1 * oneMinute + 1 * oneSecond, + firstUpdateAfter: 11 * oneMinute, + nextUpdateAfter: 11 * oneHour, + assetsBootstrapLocation: 'assets/assets.json', + pslAssetKey: 'public_suffix_list.dat', + + // list of live hosts files + liveHostsFiles: { + }, + + // urls stats are kept on the back burner while waiting to be reactivated + // in a tab or another. + pageStores: {}, + pageStoresToken: 0, + pageStoreCemetery: {}, + + // page url => permission scope + tMatrix: null, + pMatrix: null, + + ubiquitousBlacklist: null, + + // various stats + requestStatsFactory: requestStatsFactory, + requestStats: requestStatsFactory(), + cookieRemovedCounter: 0, + localStorageRemovedCounter: 0, + cookieHeaderFoiledCounter: 0, + refererHeaderFoiledCounter: 0, + hyperlinkAuditingFoiledCounter: 0, + browserCacheClearedCounter: 0, + storageUsed: 0, + + // record what the browser is doing behind the scene + behindTheSceneScope: 'behind-the-scene', + + noopFunc: function(){}, + + // so that I don't have to care for last comma + dummy: 0 +}; + +/******************************************************************************/ + +})(); + +/******************************************************************************/ + |