summaryrefslogtreecommitdiff
path: root/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2018-09-13 20:39:48 -0400
committerRuben Rodriguez <ruben@gnu.org>2018-09-13 21:02:13 -0400
commitd26b319fd6f98517cc3421f10bf18698b953e4d2 (patch)
treebc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels
parentc3b304c51a3386ea09527a479a883253ea35243a (diff)
Updated extensions list for v60
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels')
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/find_js_labels.js133
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/js_web_labels.js299
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/script_hash_worker.js78
3 files changed, 0 insertions, 510 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/find_js_labels.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/find_js_labels.js
deleted file mode 100644
index e392024..0000000
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/find_js_labels.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
- * *
- * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros
- * Copyright (C) 2014, 2015 Nik Nyby
- *
- * This file is part of GNU LibreJS.
- *
- * GNU LibreJS 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.
- *
- * GNU LibreJS 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 GNU LibreJS. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * This file works in conjunction with lib/html_script_finder/js_web_labels.js
- * to find mentions of external JavaScript files and their license information.
- * This allows the dom_handler to allow them by default.
- */
-
-/**
- * @param {Array} licenses - An array of html nodes.
- *
- * @return {Array} - An array of simple license objects.
- */
-function getLicensesArrayFromElements(licenses) {
- var a = [];
- // Convert the html node into a simpler object
- for (var i = 0; i < licenses.length; i++) {
- a.push({
- licenseName: licenses[i].textContent,
- licenseUrl: licenses[i].href
- });
- }
- return a;
-}
-
-/**
- * @param {Array} sources - An array of html nodes.
- *
- * @return {Array} - An array of simple source objects.
- */
-function getSourcesArrayFromElements(sources) {
- var a = [];
- for (var i = 0; i < sources.length; i++) {
- a.push({
- sourceName: sources[i].textContent,
- sourceUrl: sources[i].href
- });
- }
- return a;
-}
-
-// find table.
-exports.getLicenseList = function(document) {
- var tbl = document.getElementById('jslicense-labels1');
- var jsList = [];
- var i = 0;
- var le;
- var rows;
- var link;
- var fileCell;
- var licenseCell;
- var sourceCell;
- var row;
-
- if (tbl) {
- try {
- rows = tbl.getElementsByTagName('tr');
- le = rows.length;
- var mockElem = {textContent: 'Unknown', href: 'Unknown'};
- // loop through rows, and add each valid element to
- // the array.
- for (; i < le; i++) {
- row = rows[i].getElementsByTagName('td');
-
- // Find script url
- if (row[0] && row[0].getElementsByTagName('a')[0]) {
- fileCell = row[0].getElementsByTagName('a')[0];
- } else {
- fileCell = mockElem;
- }
-
- // 'licenses' and 'sources' will, for normal cases, just
- // contain one element. If the fileCell is pointing to a
- // combined JS file with multiple licenses, though, these
- // arrays will contain multiple elements.
-
- // Find license info
- var licenses = [mockElem];
- if (row[1] && row[1].getElementsByTagName('a').length > 0) {
- licenses = getLicensesArrayFromElements(
- row[1].getElementsByTagName('a'));
- }
-
- // Find original source info
- var sources = [mockElem];
- if (row[2] && row[2].getElementsByTagName('a').length > 0) {
- sources = getSourcesArrayFromElements(
- row[2].getElementsByTagName('a'));
- }
-
- if (fileCell.href !== 'Unknown') {
- jsList.push({
- 'fileName': fileCell.textContent,
- 'fileUrl': fileCell.href,
-
- // we'll fill this with value when needed to compare
- // script.
- 'fileHash': null,
-
- 'licenses': licenses,
- 'sources': sources
- });
- }
- }
- } catch (e) {
- console.debug(
- 'Error fetching JS Web Label licenses',
- e, e.lineNumber, e.fileName, 'index is', i);
- }
- }
-
- return jsList;
-};
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/js_web_labels.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/js_web_labels.js
deleted file mode 100644
index 0cb64bf..0000000
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/js_web_labels.js
+++ /dev/null
@@ -1,299 +0,0 @@
-/**
- * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
- * *
- * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros
- * Copyright (C) 2014, 2015 Nik Nyby
- *
- * This file is part of GNU LibreJS.
- *
- * GNU LibreJS 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.
- *
- * GNU LibreJS 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 GNU LibreJS. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// node.js url module. Makes it easier to resolve
-// urls in that datauri loaded dom
-var urlHandler = require("../../url_handler/url_handler");
-var {Cc, Ci, Cu, Cm, Cr} = require("chrome");
-var data = require("sdk/self").data;
-
-// license definitions, we are using canonical urls and license
-// identifiers.
-var licenses = require('../../js_checker/license_definitions').licenses;
-
-var getLicenseList = require('./find_js_labels').getLicenseList;
-const types = require("../../js_checker/constant_types");
-
-const addToCache = require("./script_hash_worker")
- .addToCache;
-
-// keep web labels in memory so that they can be checked even when they
-// are embedded dynamically.
-var jsWebLabelEntries = {};
-
-// store the url to js web labels already visited during this session
-var jsLabelsPagesVisited = {};
-
-var WebLabelFinder = function () {
- this.dom = null;
- this.pageURL = null;
- this.jslicenseURL = null;
- this.pageContent = null;
- this.licenseList = null;
- this.callback = null;
-};
-
-WebLabelFinder.prototype.init = function(dom, pageURL, callback) {
- var that = this;
- this.pageURL = pageURL;
- this.dom = dom;
- this.callback = function (a) {
- if (typeof a === 'undefined') {
- a = null;
- }
-
- // rewrite callback as soon as it is triggered once.
- that.callback = function () {
- console.debug("Callback already called");
- };
-
- callback(a);
- };
- this.findJavaScriptLicenses();
- this.pageContent = '';
- this.jslicenseURL = '';
-};
-
-WebLabelFinder.prototype.findJavaScriptLicenses = function () {
- this.searchForJsLink();
-
- if (this.jslicenseURL && !(jsLabelsPagesVisited[this.jslicenseURL])) {
- // get content from license page.
- console.debug('called fetch license page for', this.jslicenseURL);
- this.pageContent = this.fetchLicensePage();
- } else {
- console.debug(this.jslicenseURL, "already visited");
- this.callback();
- }
-};
-
-WebLabelFinder.prototype.searchForJsLink = function() {
- console.debug('triggered searchForJsLink');
- if (this.dom) {
- var linkTags = this.dom.getElementsByTagName('a'),
- i = 0,
- len = linkTags.length,
- path;
-
- // loop through all a tags.
- for (; i < len; i++) {
- if (
- (linkTags[i].hasAttribute('rel') &&
- linkTags[i].getAttribute('rel') === 'jslicense') ||
- (linkTags[i].hasAttribute('data-jslicense') &&
- linkTags[i].getAttribute('data-jslicense') === '1')
- ) {
- // This page has a web labels link
- return this.formatURL(linkTags[i]);
- }
- }
- }
-
- // no js web labels were found. call back.
- this.callback();
- return false;
-};
-
-WebLabelFinder.prototype.formatURL = function(link) {
- this.jslicenseURL = urlHandler.resolve(this.pageURL, link.href);
- this.jslicenseURL = urlHandler.addFragment(this.jslicenseURL, 'librejs=true');
- console.debug('license URL found', this.jslicenseURL);
- return this.jslicenseURL;
-};
-
-WebLabelFinder.prototype.fetchLicensePage = function() {
- var that = this;
- try {
- var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
- .createInstance();
-
- req.onload = function() {
- console.debug("Fetching License!");
- console.debug("URL is ", this._url);
-
- that.licenseList = getLicenseList(this.responseXML);
- console.debug("the license list", that.licenseList);
- that.matchListWithDefs(this._url);
-
- // add these entries to the global
- // object for dynamically embedded scripts.
- jsWebLabelEntries[that.pageURL] = that.licenseList;
- jsLabelsPagesVisited[req._url] = 1;
- };
- console.debug(this.jslicenseURL);
- req.open('GET', this.jslicenseURL, true);
- req._url = this.jslicenseURL;
- req.responseType = "document";
- req.send();
- } catch (e) {
- console.debug(e, e.lineNumber, e.fileName, this.jslicenseURL);
- this.callback({});
- }
-};
-
-/**
- * @method isLicenseFree
- * Returns true if the given web labels row refers to a script that
- * can be executed by LibreJS.
- *
- * This method has some side effects :-/
- *
- * @param {Object} lic - A license node from a JS web labels page. It's
- * expected to contain one or more licenses.
- * @return {Boolean}
- */
-WebLabelFinder.prototype.isLicenseFree = function(
- lic, jslicenseURL, callback
-) {
- // For each license that this license row contains.
- var isFree = false;
- // licenseStatuses is later used to determine isFree.
- var licenseStatuses = [];
-
- for (var i = 0; i < lic.licenses.length; i++) {
- var license;
- var found = false;
-
- // Check if we can look up this license by its identifier.
- var identifier = lic.licenses[i].licenseName;
- if (typeof identifier !== 'undefined' &&
- typeof licenses[identifier] !== 'undefined'
- ) {
- console.debug('recognized by index', identifier);
- // This license was recognized, and it was free. Add it
- // to the array of license status, which we'll look at
- // when we're done with this web label row.
- licenseStatuses.push(true);
-
- console.debug("about TO ADD TO XHR: ", lic.fileUrl);
- this.listCheck[lic.fileUrl] = 0;
- addToCache(lic, 0, jslicenseURL, callback);
-
- // Break out of the loop cause we found a matching license.
- found = true;
- continue;
- }
-
- // For each license from the internal license definitions
- for (license in licenses) {
- if (found === true) {
- break;
- }
- var licDef = licenses[license];
- var licArray = [];
- if (!licDef.canonicalUrl) {
- continue;
- }
- if (typeof licDef.canonicalUrl === 'string') {
- licArray = [licDef.canonicalUrl];
- } else {
- licArray = licDef.canonicalUrl;
- }
-
- // For each of the canonical URLs recognized by this license
- // definition
- for (var j = 0; j < licArray.length; j++) {
- if (urlHandler.removeFragment(licArray[j]) ===
- urlHandler.removeFragment(lic.licenses[i].licenseUrl)
- ) {
- if (!require("sdk/url").isValidURI(lic.fileUrl)) {
- console.debug(lic.fileUrl, " is not a valid URL");
- callback();
- }
-
- // This license was recognized, and it was free. Add it
- // to the array of license status, which we'll look at
- // when we're done with this web label row.
- licenseStatuses.push(true);
-
- console.debug("about TO ADD TO XHR: ", lic.fileUrl);
- this.listCheck[lic.fileUrl] = 0;
- addToCache(lic, 0, jslicenseURL, callback);
-
- // Break out of the nearest two loops cause we found
- // a matching license
- found = true;
- break;
- }
- }
- }
- }
-
- // Tally up the licenses we were able to match.
- if (licenseStatuses.length > 0 &&
- // If the number of licenses we matched is at least one, and
- // it's the same number as the number of licenses in this Web
- // Label column, only then can we recognize this script as free.
- // licenseStatus.length should never be larger than
- // lic.licenses.length.
- licenseStatuses.length >= lic.licenses.length
- ) {
- isFree = true;
- }
-
- return isFree;
-};
-
-WebLabelFinder.prototype.matchListWithDefs = function(jslicenseURL) {
- var that = this;
- var licDef,
- license, script;
- var cacheCalls = 0;
- this.listCheck = {};
-
- // nested loop.
- cacheCalls = 0;
- var callback = function (url) {
- cacheCalls++;
- that.listCheck[url] = 1;
- if (cacheCalls === Object.keys(that.listCheck).length) {
- console.debug("triggering callback duh");
- // return array to requester object
- callback = false;
- that.callback(that.licenseList);
- }
- };
- require("sdk/timers").setTimeout(function () {
- // callback after 60 seconds if it's still not returned.
- // using this as a safeguard.
- // return array to requester object
- if (callback !== false) {
- that.callback(that.licenseList);
- console.debug(that.listCheck);
- }
- }, 15000);
-
- for (var i = 0; i < this.licenseList.length; i++) {
- // this.licenseList[i] is the web labels license column
- var lic = this.licenseList[i];
- if (this.isLicenseFree(lic, jslicenseURL, callback)) {
- lic.free = true;
- }
- }
-};
-
-exports.WebLabelFinder = WebLabelFinder;
-
-// Store the web labels harvested across webpages (only in this session).
-exports.jsWebLabelEntries = jsWebLabelEntries;
-
-exports.jsLabelsPagesVisited = jsLabelsPagesVisited;
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/script_hash_worker.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/script_hash_worker.js
deleted file mode 100644
index 4ed9d21..0000000
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/lib/html_script_finder/web_labels/script_hash_worker.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * GNU LibreJS - A browser add-on to block nonfree nontrivial JavaScript.
- * *
- * Copyright (C) 2011, 2012, 2013, 2014 Loic J. Duros
- * Copyright (C) 2014, 2015 Nik Nyby
- *
- * This file is part of GNU LibreJS.
- *
- * GNU LibreJS 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.
- *
- * GNU LibreJS 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 GNU LibreJS. If not, see <http://www.gnu.org/licenses/>.
- */
-
-const types = require("../../js_checker/constant_types");
-const scriptsCached = require("../../script_entries/scripts_cache")
- .scriptsCached;
-const xhr = require('../dom_handler/dom_checker').xhr;
-const timers = require("sdk/timers");
-
-exports.addToCache = function (lic, delay, jsWebLabelsURL, callback) {
- console.debug("jslicenseURL is", jsWebLabelsURL);
- if (typeof delay === 'undefined') {
- delay = 0;
- }
-
- // get file hash and store as cached.
- console.debug('performing xhr for', lic.fileUrl);
- timers.setTimeout(function() {
- var cb = function (script, contents) {
- try {
- // add a cache entry.
- var hash = scriptsCached.addEntryIfNotCached(
- contents,
- types.freeWithComment(
- 'This script is free according to a JS Web Labels ' +
- 'page visited recently (at ' +
- jsWebLabelsURL.replace("librejs=true", "") + ' )'
- ),
- {},
- true,
- lic.fileUrl
- );
- console.debug('returning xhr from', lic.fileUrl);
- if (typeof callback === 'function') {
- callback(lic.fileUrl);
- } else {
- console.debug('callback is not a function:', callback);
- }
- } catch (e) {
- if (typeof callback === 'function') {
- callback(lic.fileUrl);
- } else {
- console.debug('callback is not a function:', callback);
- }
- }
- };
- // just callback after 5 seconds if we don't get the answer yet.
- timers.setTimeout(function() {
- cb = function() {};
- if (typeof callback === 'function') {
- callback(lic.fileUrl);
- } else {
- console.debug('callback is not a function:', callback);
- }
- }, 20000);
-
- xhr({'url': lic.fileUrl}, cb);
- }, delay);
-};