From 76fd7f798ada63f5505c783646a9b21ad0e7da21 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 6 Apr 2022 13:08:54 +1000 Subject: Making license_definition.js single source of truth for licenses - Removed licenses.json - cleaned up license_definition.js a bit --- license_definitions.js | 7 +- licenses.json | 219 ------------------------------------------------- main_background.js | 25 +++--- 3 files changed, 19 insertions(+), 232 deletions(-) delete mode 100644 licenses.json diff --git a/license_definitions.js b/license_definitions.js index 74d35e8..14c05ce 100644 --- a/license_definitions.js +++ b/license_definitions.js @@ -233,6 +233,8 @@ exports.licenses = { 'GNU-All-Permissive': { licenseName: 'GNU All-Permissive License', + identifier: 'GNU-All-Permissive', + canonicalUrl: [], licenseFragments: [{ text: "Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.", type: type.SHORT }] }, @@ -272,6 +274,8 @@ exports.licenses = { 'jQueryTools': { licenseName: "jQuery Tools", + identifier: 'jQueryTools', + canonicalUrl: [], licenseFragments: [{ text: 'NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.', type: type.SHORT @@ -309,7 +313,8 @@ exports.licenses = { }, 'PublicDomain': { - licenseName: "Public Domain", + licenseName: 'Public Domain', + identifier: 'PublicDomain', canonicalUrl: [ 'magnet:?xt=urn:btih:e95b018ef3580986a04669f1b5879592219e2a7a&dn=public-domain.txt' ], diff --git a/licenses.json b/licenses.json deleted file mode 100644 index 875e676..0000000 --- a/licenses.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "licenses": { - "Apache-2.0":{ - "Name": "Apache 2.0", - "URL": "http://www.apache.org/licenses/LICENSE-2.0", - "Magnet link": "magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt" - }, - "Artistic-2.0":{ - "Name": "Artistic 2.0", - "URL": "http://www.perlfoundation.org/artistic_license_2_0", - "Magnet link": "magnet:?xt=urn:btih:54fd2283f9dbdf29466d2df1a98bf8f65cafe314&dn=artistic-2.0.txt" - }, - "Boost":{ - "Name": "Boost", - "URL": "http://www.boost.org/LICENSE_1_0.txt", - "Magnet link": "magnet:?xt=urn:btih:89a97c535628232f2f3888c2b7b8ffd4c078cec0&dn=Boost-1.0.txt" - }, - "CPAL-1.0":{ - "Name": "CPAL 1.0", - "URL": "http://opensource.org/licenses/cpal_1.0", - "Magnet link": "magnet:?xt=urn:btih:84143bc45939fc8fa42921d619a95462c2031c5c&dn=cpal-1.0.txt" - }, - "CC0-1.0":{ - "Name": "CC0 1.0", - "URL": "http://creativecommons.org/publicdomain/zero/1.0/legalcode", - "Magnet link": "magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt" - }, - "CC-BY-SA-1.0":{ - "Name": "CC-BY-SA 1.0", - "URL": "https://creativecommons.org/licenses/by-sa/1.0/", - "Magnet link": "" - }, - "CC-BY-SA-2.0":{ - "Name": "CC-BY-SA 2.0", - "URL": "https://creativecommons.org/licenses/by-sa/2.0/", - "Magnet link": "" - }, - "CC-BY-SA-2.5":{ - "Name": "CC-BY-SA 2.5", - "URL": "https://creativecommons.org/licenses/by-sa/2.5/", - "Magnet link": "" - }, - "CC-BY-SA-3.0":{ - "Name": "CC-BY-SA 3.0", - "URL": "https://creativecommons.org/licenses/by-sa/3.0/", - "Magnet link": "" - }, - "CC-BY-SA-4.0":{ - "Name": "CC-BY-SA 4.0", - "URL": "https://creativecommons.org/licenses/by-sa/4.0/", - "Magnet link": "" - }, - "CC-BY-1.0":{ - "Name": "CC-BY 1.0", - "URL": "https://creativecommons.org/licenses/by/1.0/", - "Magnet link": "" - }, - "CC-BY-2.0":{ - "Name": "CC-BY 2.0", - "URL": "https://creativecommons.org/licenses/by/2.0/", - "Magnet link": "" - }, - "CC-BY-2.5":{ - "Name": "CC-BY 2.5", - "URL": "https://creativecommons.org/licenses/by/2.5/", - "Magnet link": "" - }, - "CC-BY-3.0":{ - "Name": "CC-BY 3.0", - "URL": "https://creativecommons.org/licenses/by/3.0/", - "Magnet link": "" - }, - "CC-BY-4.0":{ - "Name": "CC-BY 4.0", - "URL": "https://creativecommons.org/licenses/by/4.0/", - "Magnet link": "" - }, - "EPL-1.0":{ - "Name": "EPL 1.0", - "URL": "http://www.eclipse.org/legal/epl-v10.html", - "Magnet link": "magnet:?xt=urn:btih:4c6a2ad0018cd461e9b0fc44e1b340d2c1828b22&dn=epl-1.0.txt" - }, - "Expat":{ - "Name": "Expat", - "URL": "http://www.jclark.com/xml/copying.txt", - "Magnet link": "magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt" - }, - "MIT":{ - "Name": "Expat", - "URL": "http://www.jclark.com/xml/copying.txt", - "Magnet link": "magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt" - }, - "X11":{ - "Name": "X11", - "URL": "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3", - "Magnet link": "magnet:?xt=urn:btih:5305d91886084f776adcf57509a648432709a7c7&dn=x11.txt" - }, - "GPL-2.0":{ - "Name": "GPL 2.0", - "URL": "http://www.gnu.org/licenses/gpl-2.0.html", - "Magnet link": "magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt" - }, - "GPL-3.0":{ - "Name": "GPL 3.0", - "URL": "http://www.gnu.org/licenses/gpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt" - }, - "LGPL-2.1":{ - "Name": "LGPL 2.1", - "URL": "http://www.gnu.org/licenses/lgpl-2.1.html", - "Magnet link": "magnet:?xt=urn:btih:5de60da917303dbfad4f93fb1b985ced5a89eac2&dn=lgpl-2.1.txt" - }, - "LGPL-3.0":{ - "Name": "LGPL 3.0", - "URL": "http://www.gnu.org/licenses/lgpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:0ef1b8170b3b615170ff270def6427c317705f85&dn=lgpl-3.0.txt" - }, - "AGPL-3.0":{ - "Name": "AGPL 3.0", - "URL": "http://www.gnu.org/licenses/agpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt" - }, - "GPL-2.0-only":{ - "Name": "GPL 2.0", - "URL": "http://www.gnu.org/licenses/gpl-2.0.html", - "Magnet link": "" - }, - "GPL-3.0-only":{ - "Name": "GPL 3.0", - "URL": "http://www.gnu.org/licenses/gpl-3.0.html", - "Magnet link": "" - }, - "LGPL-2.1-only":{ - "Name": "LGPL 2.1", - "URL": "http://www.gnu.org/licenses/lgpl-2.1.html", - "Magnet link": "" - }, - "LGPL-3.0-only":{ - "Name": "LGPL 3.0", - "URL": "http://www.gnu.org/licenses/lgpl-3.0.html", - "Magnet link": "" - }, - "AGPL-3.0-only":{ - "Name": "AGPL 3.0", - "URL": "http://www.gnu.org/licenses/agpl-3.0.html", - "Magnet link": "" - }, - "GPL-2.0-or-later":{ - "Name": "GPL 2.0 or later", - "URL": "http://www.gnu.org/licenses/gpl-2.0.html", - "Magnet link": "magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt" - }, - "GPL-3.0-or-later":{ - "Name": "GPL 3.0 or later", - "URL": "http://www.gnu.org/licenses/gpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt" - }, - "LGPL-2.1-or-later":{ - "Name": "LGPL 2.1 or later", - "URL": "http://www.gnu.org/licenses/lgpl-2.1.html", - "Magnet link": "magnet:?xt=urn:btih:5de60da917303dbfad4f93fb1b985ced5a89eac2&dn=lgpl-2.1.txt" - }, - "LGPL-3.0-or-later":{ - "Name": "LGPL 3.0 or later", - "URL": "http://www.gnu.org/licenses/lgpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:0ef1b8170b3b615170ff270def6427c317705f85&dn=lgpl-3.0.txt" - }, - "AGPL-3.0-or-later":{ - "Name": "AGPL 3.0 or later", - "URL": "http://www.gnu.org/licenses/agpl-3.0.html", - "Magnet link": "magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt" - }, - "ISC":{ - "Name": "ISC", - "URL": "https://www.isc.org/downloads/software-support-policy/isc-license/", - "Magnet link": "magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt" - }, - "MPL-2.0":{ - "Name": "MPL 2.0", - "URL": "http://www.mozilla.org/MPL/2.0", - "Magnet link": "magnet:?xt=urn:btih:3877d6d54b3accd4bc32f8a48bf32ebc0901502a&dn=mpl-2.0.txt" - }, - "UPL-1.0": { - "Name": "UPL 1.0", - "URL": "https://oss.oracle.com/licenses/upl/", - "Magnet link": "magnet:?xt=urn:btih:478974f4d41c3fa84c4befba25f283527fad107d&dn=upl-1.0.txt" - }, - "WTFPL": { - "Name": "WTFPL", - "URL": "http://www.wtfpl.net/txt/copying/", - "Magnet link": "magnet:?xt=urn:btih:723febf9f6185544f57f0660a41489c7d6b4931b&dn=wtfpl.txt" - }, - "Unlicense":{ - "Name": "Unlicense", - "URL": "http://unlicense.org/UNLICENSE", - "Magnet link": "magnet:?xt=urn:btih:5ac446d35272cc2e4e85e4325b146d0b7ca8f50c&dn=unlicense.txt" - }, - "FreeBSD":{ - "Name": "FreeBSD", - "URL": "http://www.freebsd.org/copyright/freebsd-license.html", - "Magnet link": "magnet:?xt=urn:btih:87f119ba0b429ba17a44b4bffcab33165ebdacc0&dn=freebsd.txt" - }, - "BSD-2-Clause":{ - "Name": "FreeBSD (BSD-2-Clause)", - "URL": "http://www.freebsd.org/copyright/freebsd-license.html", - "Magnet link": "" - }, - "BSD-3-Clause":{ - "Name": "Modified BSD (BSD-3-Clause)", - "URL": "http://opensource.org/licenses/BSD-3-Clause", - "Magnet link": "magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt" - }, - "XFree86-1.1":{ - "Name": "XFree86 1.1", - "URL": "http://www.xfree86.org/current/LICENSE4.html", - "Magnet link": "magnet:?xt=urn:btih:12f2ec9e8de2a3b0002a33d518d6010cc8ab2ae9&dn=xfree86.txt" - } - } -} diff --git a/main_background.js b/main_background.js index 7b47c7b..0bfb33c 100644 --- a/main_background.js +++ b/main_background.js @@ -64,7 +64,7 @@ function dbg_print(a, b) { - "// @license [magnet link] [identifier]" then "// @license-end" (may also use /* comments) - Automatic whitelist: (http://bzr.savannah.gnu.org/lh/librejs/dev/annotate/head:/data/script_libraries/script-libraries.json_ */ -var licenses = require("./licenses.json").licenses; +const { licenses } = require("./license_definitions"); // These are objects that it will search for in an initial regex pass over non-free scripts. var reserved_objects = [ @@ -615,14 +615,14 @@ function validateLicense(matches) { return [false, "Malformed or unrecognized license tag."]; } - const [all, first] = [matches[0], matches[2]]; + const [all, first] = [matches[0], matches[2].replace("&", "&")]; - for (let key in licenses) { + for (const key in licenses) { // Match by link on first parameter (legacy) - if (licenses[key]["Magnet link"] === first.replace("&", "&") || - licenses[key]["URL"] === first.replace("&", "&") || - licenses[key]["URL"].replace("http://", "https://") === first.replace("&", "&")) { - return [true, `Recognized license: "${licenses[key]['Name']}".`]; + for (const url of licenses[key].canonicalUrl) { + if (first === url || first === url.replace("^http://", "https://")) { + return [true, `Recognized license: "${licenses[key].licenseName}".`]; + } } } return [false, `Unrecognized license tag: "${all}"`]; @@ -1026,12 +1026,13 @@ function read_metadata(meta_element) { parts[0] = parts[0].replace(/&/g, '&'); try { - if (licenses[parts[1]]["Magnet link"] == parts[0]) { - return true; - } else { - console.log("invalid (doesn't match licenses)"); - return false; + for (const url of licenses[part[1]].canonicalUrl) { + if (url.startsWith("magnet:") && url == parts[0]) { + return true; + } } + console.log("invalid (doesn't match licenses)"); + return false; } catch (error) { console.log("invalid (threw error, key didn't exist)"); return false; -- cgit v1.2.3