[Pkg-mozext-commits] [noscript] 01/06: New upstream version 5.0.9
David Prévot
taffit at moszumanska.debian.org
Tue Aug 22 20:58:04 UTC 2017
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository noscript.
commit 962200de84e58ff2001da73d8ff3e52ed30dcfe6
Author: David Prévot <david at tilapin.org>
Date: Tue Aug 22 08:51:22 2017 -1000
New upstream version 5.0.9
---
META-INF/manifest.mf | 47 ++++++++++----
META-INF/mozilla.rsa | Bin 4196 -> 4196 bytes
META-INF/mozilla.sf | 4 +-
chrome/noscript.jar!/content/noscript/ABE.g | 2 +-
chrome/noscript.jar!/content/noscript/ABE.js | 4 +-
.../content/noscript/ClearClickHandler.js | 4 +-
.../content/noscript/ExternalFilters.js | 2 +-
chrome/noscript.jar!/content/noscript/IOUtil.js | 2 +-
.../content/noscript/InjectionChecker.js | 53 ++++++++--------
chrome/noscript.jar!/content/noscript/JSURL.js | 2 +-
chrome/noscript.jar!/content/noscript/Main.js | 54 +++-------------
.../noscript.jar!/content/noscript/MainParent.js | 44 +++++++++++++
chrome/noscript.jar!/content/noscript/Policy.js | 4 +-
.../content/noscript/ScriptSurrogate.js | 4 +-
.../content/noscript/SyntaxChecker.js | 2 +-
.../noscript.jar!/content/noscript/URIValidator.js | 2 +-
chrome/noscript.jar!/content/noscript/WebExt.js | 21 ++++++-
chrome/noscript.jar!/content/noscript/about.xul | 6 +-
.../content/noscript/noscriptOptions.xul | 8 +--
.../content/noscript/noscriptOverlay.js | 4 +-
.../content/noscript/noscriptOverlay.xul | 4 +-
.../locale/bg-BG/noscript/noscript.dtd | 2 +-
.../locale/ca-AD/noscript/noscript.dtd | 2 +-
.../locale/cs-CZ/noscript/noscript.dtd | 2 +-
.../locale/cy-GB/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/da/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/de/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/el/noscript/noscript.dtd | 2 +-
.../locale/en-GB/noscript/noscript.dtd | 2 +-
.../locale/en-US/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/eo/noscript/noscript.dtd | 2 +-
.../locale/es-AR/noscript/noscript.dtd | 2 +-
.../locale/es-CL/noscript/noscript.dtd | 2 +-
.../locale/es-ES/noscript/noscript.dtd | 2 +-
.../locale/et-EE/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/eu/noscript/noscript.dtd | 2 +-
.../locale/fa-IR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/fi/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/fr/noscript/noscript.dtd | 2 +-
.../locale/gl-ES/noscript/noscript.dtd | 2 +-
.../locale/he-IL/noscript/noscript.dtd | 2 +-
.../locale/hr-HR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/hsb/noscript/noscript.dtd | 2 +-
.../locale/hu-HU/noscript/noscript.dtd | 2 +-
.../locale/id-ID/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/it/noscript/noscript.dtd | 2 +-
.../locale/ja-JP/noscript/noscript.dtd | 2 +-
.../locale/kk-KZ/noscript/noscript.dtd | 2 +-
.../locale/km-KH/noscript/noscript.dtd | 2 +-
.../locale/ko-KR/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/lt/noscript/noscript.dtd | 2 +-
.../locale/mk-MK/noscript/noscript.dtd | 2 +-
.../locale/ms-MY/noscript/noscript.dtd | 2 +-
.../locale/nb-NO/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/nl/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/pl/noscript/noscript.dtd | 2 +-
.../locale/pt-BR/noscript/noscript.dtd | 2 +-
.../locale/pt-PT/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/ro/noscript/noscript.dtd | 2 +-
.../locale/sk-SK/noscript/noscript.dtd | 2 +-
.../locale/sl-SI/noscript/noscript.dtd | 2 +-
.../locale/sr-RS/noscript/noscript.dtd | 2 +-
.../locale/sv-SE/noscript/noscript.dtd | 2 +-
.../locale/te-IN/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/th/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/tr/noscript/noscript.dtd | 2 +-
.../noscript.jar!/locale/vi/noscript/noscript.dtd | 2 +-
.../locale/zh-CN/noscript/noscript.dtd | 2 +-
.../locale/zh-TW/noscript/noscript.dtd | 2 +-
.../noscript.jar!/webextension/lib/noscript/tld.js | 31 +++++++++
defaults/preferences/noscript.js | 2 +-
install.rdf | 2 +-
webextension/Policy.js | 19 ++++++
webextension/WebRequest.js | 59 +++++++++++++++++
webextension/background.html | 11 ++++
webextension/background.js | 70 ---------------------
webextension/legacy.js | 28 +++++++++
webextension/lib/tld.js | 31 +++++++++
webextension/manifest.json | 18 +++++-
webextension/noscript.js | 44 +++++++++++++
80 files changed, 449 insertions(+), 235 deletions(-)
diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index 23a7483..78cbdf4 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Name: install.rdf
Digest-Algorithms: MD5 SHA1
-MD5-Digest: lVvLO2aI7uSHlqRyKu1r/Q==
-SHA1-Digest: wZdNfcW09flTIAKTuy/HAAFeZ4E=
+MD5-Digest: AzfTtJdDvo7SzNFyYTjWXA==
+SHA1-Digest: ywOWrVRk0VhPWojrWnqI5dl8z3E=
Name: chrome.manifest
Digest-Algorithms: MD5 SHA1
@@ -27,8 +27,8 @@ SHA1-Digest: 624YpFdNjCFbDE7kLhN+vbF9hgM=
Name: chrome/noscript.jar
Digest-Algorithms: MD5 SHA1
-MD5-Digest: L7rk1WghDL50vZDdMJQbxA==
-SHA1-Digest: IoFGE5nm/ZKJCx1nszPCOWkIzBI=
+MD5-Digest: z8f4KtYWTzJmFZ4AJ6yHMg==
+SHA1-Digest: m3Mn6yxdcaOl4zSsQnMoaQeZQJk=
Name: components/noscriptService.js
Digest-Algorithms: MD5 SHA1
@@ -37,16 +37,41 @@ SHA1-Digest: CST2HsndXBM/v2zddWR+BmatjQc=
Name: defaults/preferences/noscript.js
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3yV/nDojJnVmeY9iN7AIuQ==
-SHA1-Digest: fd1EJ8c2cgXcI90q/A/GB8ltqqo=
+MD5-Digest: d7tpN5VR9K4GaZCCciYujA==
+SHA1-Digest: ailLVA8P/iqJdMzJ3IrhX7owZPs=
-Name: webextension/background.js
+Name: webextension/background.html
Digest-Algorithms: MD5 SHA1
-MD5-Digest: jGrIPCJYL7AeKRiDAm4dUg==
-SHA1-Digest: wVxE8Pl4vQarPR3kbtPE53w077E=
+MD5-Digest: rcv4U05os99N6ckCs2opDg==
+SHA1-Digest: JBcekwfoEoqK8XvDXxsQzGUeoGI=
+
+Name: webextension/legacy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /k5vGS0PYEgudQGaAYyGuQ==
+SHA1-Digest: 5hmZhseA3Yl58RK4feBuyYTNvo8=
Name: webextension/manifest.json
Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2h5QeobYFUtfVOGAIlN4SA==
-SHA1-Digest: KIdo2Ytov7HDjqhoUmOJ/Ghg7xs=
+MD5-Digest: eQ22YMnCZIK4V0GWs7wzqQ==
+SHA1-Digest: XRKdwWItWXQwh+KrWk+Qh5HuaWk=
+
+Name: webextension/noscript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Tllgl/Dq4QQimcnNVTw+NA==
+SHA1-Digest: 3uVjMfwtGmAuT7O5yeLcow+gKDs=
+
+Name: webextension/Policy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1R0QYhT2L+afl0qM9mLSuw==
+SHA1-Digest: Aoyq//RKyeHBYQFW+uYZYIDKo08=
+
+Name: webextension/WebRequest.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FAB+DraIG6d+DqhS5AFwFw==
+SHA1-Digest: YC3niw8+JJeK/n6KRNRNO2VYGxE=
+
+Name: webextension/lib/tld.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gblX7qMvkSwb6Mp4RkAHgg==
+SHA1-Digest: lkpBHisY+nSR/micPlmCb4/j/pY=
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
index 39e512c..8653d85 100644
Binary files a/META-INF/mozilla.rsa and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
index ce90b10..8f45645 100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
Signature-Version: 1.0
-MD5-Digest-Manifest: O7S4akQjenJ1qD3va4JVBg==
-SHA1-Digest-Manifest: 3AOlSGmqlieLUT55pSHcRuskbG8=
+MD5-Digest-Manifest: RO+4Ki+b1Umfs6XrPRXAWQ==
+SHA1-Digest-Manifest: qyOnOrO5hs8KRHVbT7Xq33wauKk=
diff --git a/chrome/noscript.jar!/content/noscript/ABE.g b/chrome/noscript.jar!/content/noscript/ABE.g
index bd9e4a3..a6fe7f6 100644
--- a/chrome/noscript.jar!/content/noscript/ABE.g
+++ b/chrome/noscript.jar!/content/noscript/ABE.g
@@ -43,7 +43,7 @@ REGEXP : '^' ~'\n'+ ;
ALL : 'ALL' ;
SUB : 'SUB' ;
INC : 'INC' 'LUSION'? ;
-HTTPVERB : 'GET' | 'POST' | 'PUT' | 'HEAD' | 'PATCH' | 'DELETE' | 'TRACE' | 'OPTIONS';
+HTTPVERB : 'GET' | 'POST' | 'PUT' | 'HEAD' | 'PATCH' | 'DELETE' | 'TRACE' | 'OPTIONS';nsI
INC_TYPE : 'A'..'Z' ('A'..'Z' | 'A'..'Z' '_' 'A'..'Z')+ ;
diff --git a/chrome/noscript.jar!/content/noscript/ABE.js b/chrome/noscript.jar!/content/noscript/ABE.js
index 6697761..994c024 100644
--- a/chrome/noscript.jar!/content/noscript/ABE.js
+++ b/chrome/noscript.jar!/content/noscript/ABE.js
@@ -26,8 +26,8 @@ var ABE = {
init: function(prefParent) {
const ps = this.prefService = Cc["@mozilla.org/preferences-service;1"]
.getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch);
- ABEStorage.init(ps.getBranch(prefParent+ "ABE.").QueryInterface(Ci.nsIPrefBranch2));
- DoNotTrack.init(ps.getBranch(prefParent+ "doNotTrack.").QueryInterface(Ci.nsIPrefBranch2));
+ ABEStorage.init(ps.getBranch(prefParent+ "ABE."));
+ DoNotTrack.init(ps.getBranch(prefParent+ "doNotTrack."));
},
siteMap: Object.create(null),
diff --git a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
index fbb8d5d..51f97ff 100644
--- a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
+++ b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
@@ -167,8 +167,8 @@ ClearClickHandler.prototype = {
this._whitelist = {};
this.whitelistLen = 0;
},
-
- isEmbed: (o) => (o instanceof Ci.nsIDOMHTMLObjectElement || o instanceof Ci.nsIDOMHTMLEmbedElement) &&
+ isEmbed: (o) => (o instanceof Ci.nsIDOMHTMLObjectElement ||
+ (Ci.nsIDOMHTMLEmbedElement && o instanceof Ci.nsIDOMHTMLEmbedElement)) &&
!o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI),
swallowEvent: function(ev) {
diff --git a/chrome/noscript.jar!/content/noscript/ExternalFilters.js b/chrome/noscript.jar!/content/noscript/ExternalFilters.js
index 63aee13..a20c317 100644
--- a/chrome/noscript.jar!/content/noscript/ExternalFilters.js
+++ b/chrome/noscript.jar!/content/noscript/ExternalFilters.js
@@ -156,7 +156,7 @@ var ExternalFilters = {
initFromPrefs: function(prefRoot) {
this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
- .getBranch(prefRoot).QueryInterface(Ci.nsIPrefBranch2);
+ .getBranch(prefRoot).QueryInterface(Ci.nsIPrefBranch);
this._syncPrefs();
},
diff --git a/chrome/noscript.jar!/content/noscript/IOUtil.js b/chrome/noscript.jar!/content/noscript/IOUtil.js
index e95ef19..5e02e9f 100644
--- a/chrome/noscript.jar!/content/noscript/IOUtil.js
+++ b/chrome/noscript.jar!/content/noscript/IOUtil.js
@@ -191,7 +191,7 @@ var IOUtil = {
switch (url.scheme) {
case "view-source":
- return this.unwrapURL(url.path);
+ return this.unwrapURL(url.spec.replace(/^.*?:/, ''));
case "feed":
case "pcast":
let u = url.spec.substring(url.scheme.length + 1);
diff --git a/chrome/noscript.jar!/content/noscript/InjectionChecker.js b/chrome/noscript.jar!/content/noscript/InjectionChecker.js
index b90c2c0..b93becc 100644
--- a/chrome/noscript.jar!/content/noscript/InjectionChecker.js
+++ b/chrome/noscript.jar!/content/noscript/InjectionChecker.js
@@ -1,10 +1,10 @@
const wordCharRx = /\w/g;
function fuzzify(s) {
- return s.replace(wordCharRx, '\\W*(?:/[*/][\\s\\S]*)?$&');
+ return s.replace(wordCharRx, '\\W*(?:/[*/][^]*)?$&');
}
-const IC_COMMENT_PATTERN = '\\s*(?:\\/[\\/\\*][\\s\\S]+)?';
+const IC_COMMENT_PATTERN = '\\s*(?:\\/[\\/\\*][^]+)?';
const IC_WINDOW_OPENER_PATTERN = fuzzify("alert|confirm|prompt|open(?:URL)?|print|show") + "\\w*" + fuzzify("Dialog");
const IC_EVAL_PATTERN = "\\b(?:" +
fuzzify('eval|set(?:Timeout|Interval)|(?:f|F)unction|Script|toString|Worker|document|constructor|generateCRMFRequest|jQuery|fetch|write(?:ln)?|__(?:define(?:S|G)etter|noSuchMethod)__|definePropert(?:y|ies)') +
@@ -13,8 +13,8 @@ const IC_EVENT_PATTERN = "on(?:c(?:o(?:n(?:nect(?:i(?:on(?:statechanged|availabl
// autogenerated from nsHtml5AtomList.h and nsGkAtomList.h
;
const IC_EVENT_DOS_PATTERN =
- "\\b(?:" + IC_EVENT_PATTERN + ")[\\s\\S]*=[\\s\\S]*\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b" +
- "|\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b[\\s\\S]+\\b(?:" + IC_EVENT_PATTERN + ")[\\s\\S]*=";
+ "\\b(?:" + IC_EVENT_PATTERN + ")[^]*=[^]*\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b" +
+ "|\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b[^]+\\b(?:" + IC_EVENT_PATTERN + ")[^]*=";
var InjectionChecker = {
reset: function () {
@@ -86,12 +86,12 @@ var InjectionChecker = {
checkTemplates(script) {
let templateExpressions = script.replace(/[[\]{}]/g, ";");
return templateExpressions !== script &&
- this.maybeMavo(script) ||
+ (this.maybeMavo(script) ||
(this.maybeJS(templateExpressions, true) &&
(this.syntax.check(templateExpressions) ||
/[^><=]=[^=]/.test(templateExpressions) && this.syntax.check(
templateExpressions.replace(/([^><=])=(?=[^=])/g, '$1=='))
- ));
+ )));
},
maybeMavo(s) {
@@ -243,37 +243,36 @@ var InjectionChecker = {
,
_singleAssignmentRx: new RegExp(
- "(?:\\b" + fuzzify('document') + "\\b[\\s\\S]*\\.|\\s" + fuzzify('setter') + "\\b[\\s\\S]*=)|/.*/[\\s\\S]*(?:\\.(?:" +
- "\\b" + fuzzify("onerror") + "\\b[\\s\\S]*=|" +
+ "(?:\\b" + fuzzify('document') + "\\b[^]*\\.|\\s" + fuzzify('setter') + "\\b[^]*=)|/.*/[^]*(?:\\.(?:" +
+ "\\b" + fuzzify("onerror") + "\\b[^]*=|" +
+ fuzzify('source|toString') + ")|\\[)|" + IC_EVENT_DOS_PATTERN
),
_riskyAssignmentRx: new RegExp(
- "\\b(?:" + fuzzify('location|innerHTML|outerHTML') + ")\\b[\\s\\S]*="
+ "\\b(?:" + fuzzify('location|innerHTML|outerHTML') + ")\\b[^]*="
),
_nameRx: new RegExp(
- "=[\\s\\S]*\\b" + fuzzify('name') + "\\b|" +
- fuzzify("hostname") + "[\\s\\S]*=[\\s\\S]*(?:\\b\\d|[\"'{}~^|<*/+-])"
+ "=[^]*\\b" + fuzzify('name') + "\\b|" +
+ fuzzify("hostname") + "[^]*=[^]*(?:\\b\\d|[\"'{}~^|<*/+-])"
),
_evalAliasingRx: new RegExp(
- "=[\\s\\S]+\\[" + IC_EVAL_PATTERN + "\\W*\\]" // TODO: check if it can be coalesced into _maybeJSRx
+ "=[^]+\\[" + IC_EVAL_PATTERN + "\\W*\\]" // TODO: check if it can be coalesced into _maybeJSRx
),
_maybeJSRx: new RegExp(
- // accessor followed by function call or assignment.
- '(?:(?:\\[[\\s\\S]*\\]|\\.\\D)[\\s\\S]*(?:\\([\\s\\S]*\\)|`[\\s\\S]+`|=[\\s\\S]*\\S)' +
+ '(?:(?:\\[[^]+\\]|\\.\\D)(?:[^]*\\([^]*\\)|[^*]`[^]+`|[^=]*=[^=][^]*\\S)' +
// double function call
- '|\\([\\s\\S]*\\([\\s\\S]*\\)' +
+ '|\\([^]*\\([^]*\\)' +
')|(?:^|\\W)(?:' + IC_EVAL_PATTERN +
- ')(?:\\W+[\\s\\S]*|)[(`]|(?:[=(]|\\{[\\s\\S]+:)[\\s\\S]*(?:' + // calling eval-like functions directly or...
+ ')(?:\\W+[^]*|)[(`]|(?:[=(]|\\{[^]+:)[^]*(?:' + // calling eval-like functions directly or...
IC_EVAL_PATTERN + // ... assigning them to another function possibly called by the victim later
- ')[\\s\\S]*[\\n,;:|]|\\b(?:' +
+ ')[^]*[\\n,;:|]|\\b(?:' +
fuzzify('setter|location|innerHTML|outerHTML') + // eval-like assignments
- ')\\b[\\s\\S]*=|' +
+ ')\\b[^]*=|' +
'.' + IC_COMMENT_PATTERN + "src" + IC_COMMENT_PATTERN + '=' +
IC_EVENT_DOS_PATTERN +
- "|\\b" + fuzzify("onerror") + "\\b[\\s\\S]*=" +
+ "|\\b" + fuzzify("onerror") + "\\b[^]*=" +
"|=[s\\\\[ux]?\d{2}" + // escape (unicode/ascii/octal)
- "|\\b(?:toString|valueOf)\\b" + IC_COMMENT_PATTERN + "=[\\s\\S]*(?:" + IC_EVAL_PATTERN + ")" +
+ "|\\b(?:toString|valueOf)\\b" + IC_COMMENT_PATTERN + "=[^]*(?:" + IC_EVAL_PATTERN + ")" +
"|(?:\\)|(?:[^\\w$]|^)[$a-zA-Z_\\u0ff-\\uffff][$\\w\\u0ff-\\uffff]*)" + IC_COMMENT_PATTERN + '=>' + // concise function definition
"|(?:[^\\w$]|^)" + IC_EVENT_PATTERN + IC_COMMENT_PATTERN + "="
)
@@ -281,8 +280,8 @@ var InjectionChecker = {
_riskyParensRx: new RegExp(
"(?:^|\\W)(?:(?:" + IC_EVAL_PATTERN + "|on\\w+)\\s*[(`]|" +
- fuzzify("with") + "\\b[\\s\\S]*\\(|" +
- fuzzify("for") + "\\b[\\s\\S]*\\([\\s\\S]*[\\w$\\u0080-\\uffff]+[\\s\\S]*\\b(?:" +
+ fuzzify("with") + "\\b[^]*\\(|" +
+ fuzzify("for") + "\\b[^]*\\([^]*[\\w$\\u0080-\\uffff]+[^]*\\b(?:" +
fuzzify ("in|of") + ")\\b)"
),
@@ -798,10 +797,10 @@ var InjectionChecker = {
},
AttributesChecker: new RegExp(
- "(?:\\W|^)(?:javascript:(?:[\\s\\S]+[=\\\\\\(`\\[\\.<]|[\\s\\S]*(?:\\bname\\b|\\\\[ux]\\d))|" +
- "data:(?:(?:[a-z]\\w+/\\w[\\w+-]+\\w)?[;,]|[\\s\\S]*;[\\s\\S]*\\b(?:base64|charset=)|[\\s\\S]*,[\\s\\S]*<[\\s\\S]*\\w[\\s\\S]*>))|@" +
- ("import\\W*(?:\\/\\*[\\s\\S]*)?(?:[\"']|url[\\s\\S]*\\()" +
- "|-moz-binding[\\s\\S]*:[\\s\\S]*url[\\s\\S]*\\(|\\{\\{[\\s\\S]+\\}\\}")
+ "(?:\\W|^)(?:javascript:(?:[^]+[=\\\\\\(`\\[\\.<]|[^]*(?:\\bname\\b|\\\\[ux]\\d))|" +
+ "data:(?:(?:[a-z]\\w+/\\w[\\w+-]+\\w)?[;,]|[^]*;[^]*\\b(?:base64|charset=)|[^]*,[^]*<[^]*\\w[^]*>))|@" +
+ ("import\\W*(?:\\/\\*[^]*)?(?:[\"']|url[^]*\\()" +
+ "|-moz-binding[^]*:[^]*url[^]*\\(|\\{\\{[^]+\\}\\}")
.replace(/[a-rt-z\-]/g, "\\W*$&"),
"i"),
checkAttributes: function(s) {
@@ -821,7 +820,7 @@ var InjectionChecker = {
HTMLChecker: new RegExp("<[^\\w<>]*(?:[^<>\"'\\s]*:)?[^\\w<>]*(?:" + // take in account quirks and namespaces
fuzzify("script|form|style|svg|marquee|(?:link|object|embed|applet|param|i?frame|base|body|meta|ima?ge?|video|audio|bindings|set|isindex|animate|template") +
")[^>\\w])|['\"\\s\\0/](?:formaction|style|background|src|lowsrc|ping|innerhtml|data-bind|(?:data-)?mv-(?:\\w+[\\w-]*)|" + IC_EVENT_PATTERN +
- ")[\\s\\0]*=|<%[\\s\\S]+[=(][\\s\\S]+%>", "i"),
+ ")[\\s\\0]*=|<%[^]+[=(][^]+%>", "i"),
checkHTML: function(s) {
let links = s.match(/\b(?:href|src|(?:form)?action|\w+-\w+)[\s\0]*=[\s\0]*(?:(["'])[\s\S]*?\1|[^'"<>][^>\s]*)/ig);
diff --git a/chrome/noscript.jar!/content/noscript/JSURL.js b/chrome/noscript.jar!/content/noscript/JSURL.js
index f841433..2119609 100644
--- a/chrome/noscript.jar!/content/noscript/JSURL.js
+++ b/chrome/noscript.jar!/content/noscript/JSURL.js
@@ -67,7 +67,7 @@ var JSURL = {
sandboxPrototype: w,
wantXrays: false,
});
- var e = (script) => Cu.evalInSandbox("with(window) {" + script + "}", s, JSURL.JS_VERSION);
+ var e = (script) => Cu.evalInSandbox("with(window) {" + script + "}", s);
e(this._patch);
var ret;
try {
diff --git a/chrome/noscript.jar!/content/noscript/Main.js b/chrome/noscript.jar!/content/noscript/Main.js
index 634ec8c..9ad6f49 100644
--- a/chrome/noscript.jar!/content/noscript/Main.js
+++ b/chrome/noscript.jar!/content/noscript/Main.js
@@ -108,7 +108,7 @@ this.__defineGetter__("ABE", function() {
});
const ns = {
- VERSION: "5.0.8.1",
+ VERSION: "5.0.9",
classDescription: CLASS_NAME,
classID: Components.ID(SERVICE_ID),
contractID: SERVICE_CTRID,
@@ -135,7 +135,7 @@ const ns = {
return;
}
- if (subject instanceof Ci.nsIPrefBranch2) {
+ if (subject instanceof Ci.nsIPrefBranch) {
this.syncPrefs(subject, data);
} else {
switch (topic) {
@@ -705,17 +705,16 @@ const ns = {
const prefSrv = this.prefService = Cc["@mozilla.org/preferences-service;1"]
.getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch);
- const PBI = Ci.nsIPrefBranch2;
- this.caps = prefSrv.getBranch("capability.policy.").QueryInterface(PBI);
+ this.caps = prefSrv.getBranch("capability.policy.");
this.defaultCaps = prefSrv.getDefaultBranch(this.caps.root);
- this.policyPB = prefSrv.getBranch("capability.policy." + this.POLICY_NAME + ".").QueryInterface(PBI);
- this.prefs = prefSrv.getBranch("noscript.").QueryInterface(PBI);
+ this.policyPB = prefSrv.getBranch("capability.policy." + this.POLICY_NAME + ".");
+ this.prefs = prefSrv.getBranch("noscript.");
this.policyPB.addObserver("sites", this, true);
this.prefs.addObserver("", this, true);
- this.mozJSPref = prefSrv.getBranch("javascript.").QueryInterface(PBI);
+ this.mozJSPref = prefSrv.getBranch("javascript.");
this.mozJSPref.addObserver("enabled", this, true);
this.mandatorySites.sitesString = this.getPref("mandatory", "chrome: about: resource: [System Principal]");
@@ -2359,7 +2358,7 @@ const ns = {
if (this.getExpando(embed, "processed")) continue;
this.setExpando(embed, "processed", true);
- if (embed instanceof OBJECT || embed instanceof EMBED) {
+ if (embed instanceof OBJECT || EMBED && embed instanceof EMBED) {
let node = embed;
while ((node = node.parentNode) && !node.__noscriptBlocked)
// if (node instanceof OBJECT) o.embed = embed = node
@@ -2791,7 +2790,7 @@ const ns = {
if (isLegacyFrame || (mime == doc.contentType && doc.body &&
(a === doc.body.firstChild &&
a === doc.body.lastChild ||
- (ctx.object instanceof Ci.nsIDOMHTMLEmbedElement) && ctx.object.src != url))
+ (Ci.nsIDOMHTMLEmbedElement && ctx.object instanceof Ci.nsIDOMHTMLEmbedElement) && ctx.object.src != url))
) { // stand-alone plugin or frame
doc.body.removeChild(a); // TODO: add a throbber
if (isLegacyFrame) {
@@ -4480,43 +4479,6 @@ const ns = {
if(this.consoleLog && !noConsole) this.log(msg);
},
- ensureUIVisibility: function() {
- const window = DOM.mostRecentBrowserWindow;
- try {
- const document = window.document;
- const addonBar = document.getElementById("addon-bar");
- if (!addonBar) return false;
-
- const tbbId = "noscript-tbb";
- let tbb = document.getElementById(tbbId);
- if (tbb) return false;
-
- let navBar = document.getElementById("nav-bar");
-
- let [bar, refId] =
- addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true)
- ? [navBar, "urlbar-container"]
- : [addonBar, "status-bar"];
-
- set = bar.currentSet.split(/\s*,\s*/);
- if (set.indexOf(tbbId) > -1) return false;
-
- set.splice(set.indexOf(refId), 0, tbbId);
-
- bar.setAttribute("currentset", bar.currentSet = set.join(","));
- document.persist(bar.id, "currentset");
- try {
- window.BrowserToolboxCustomizeDone(true);
- } catch (e) {}
- try {
- window.noscriptOverlay.initPopups();
- } catch(e) {}
- return true;
- } catch(e) {
- this.dump(e);
- return false;
- }
- },
}
diff --git a/chrome/noscript.jar!/content/noscript/MainParent.js b/chrome/noscript.jar!/content/noscript/MainParent.js
index ef39d09..377cb6a 100644
--- a/chrome/noscript.jar!/content/noscript/MainParent.js
+++ b/chrome/noscript.jar!/content/noscript/MainParent.js
@@ -153,6 +153,50 @@ var MainParent = {
}
},
+ ensureUIVisibility: function() {
+
+ try {
+ let window = DOM.mostRecentBrowserWindow;
+ let document = window.document;
+ const tbbId = "noscript-tbb";
+ let tbb = document.getElementById(tbbId);
+ if (tbb) return false;
+
+ try {
+ let cui = window.CustomizableUI;
+ if (cui) cui.addWidgetToArea(tbbId, cui.AREA_NAVBAR);
+ } catch (e) { // super-legacy
+ let addonBar = document.getElementById("addon-bar");
+ if (!addonBar) return false;
+
+ let navBar = document.getElementById("nav-bar");
+
+ let [bar, refId] =
+ addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true)
+ ? [navBar, "urlbar-container"]
+ : [addonBar, "status-bar"];
+
+ let set = bar.currentSet.split(/\s*,\s*/);
+ if (set.indexOf(tbbId) > -1) return false;
+
+ set.splice(set.indexOf(refId), 0, tbbId);
+
+ bar.setAttribute("currentset", bar.currentSet = set.join(","));
+ document.persist(bar.id, "currentset");
+ }
+ try {
+ window.BrowserToolboxCustomizeDone(true);
+ } catch (e) {}
+ try {
+ window.noscriptOverlay.initPopups();
+ } catch(e) {}
+ return true;
+ } catch(e) {
+ this.dump(e);
+ return false;
+ }
+ },
+
checkSubscriptions: function() {
var lastCheck = this.getPref("subscription.last_check");
var checkInterval = this.getPref("subscription.checkInterval", 24) * 60000;
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/noscript.jar!/content/noscript/Policy.js
index 7953928..4d96a62 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/noscript.jar!/content/noscript/Policy.js
@@ -244,7 +244,7 @@ var MainContentPolicy = {
aContentLocation = IOS.newURI(codeBase, cs, aRequestOrigin);
} catch (e) {}
- if (aContext instanceof Ci.nsIDOMHTMLEmbedElement) {
+ if (Ci.nsIDOMHTMLEmbedElement && aContext instanceof Ci.nsIDOMHTMLEmbedElement) {
code = aContext.getAttribute("code");
if (code && /\bjava\b/.test(aMimeTypeGuess)) {
archive = archive ? code + " " + archive : code;
@@ -439,7 +439,7 @@ var MainContentPolicy = {
(locationURL = aContentLocation.spec) == (originURL = aRequestOrigin.spec) &&
aMimeTypeGuess) {
- if ((aContext instanceof Ci.nsIDOMHTMLEmbedElement) &&
+ if (Ci.nsIDOMHTMLEmbedElement && (aContext instanceof Ci.nsIDOMHTMLEmbedElement) &&
this.isAllowedObject(locationURL, aMimeTypeGuess)
) {
if (logIntercept) this.dump("Plugin document " + locationURL);
diff --git a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
index 3ad5d2c..286e03c 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
+++ b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
@@ -19,7 +19,7 @@ var ScriptSurrogate = {
_init: function() {
this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
- .getBranch("noscript.surrogate.").QueryInterface(Ci.nsIPrefBranch2);
+ .getBranch("noscript.surrogate.");
this._syncPrefs();
},
@@ -319,7 +319,7 @@ var ScriptSurrogate = {
}
let code = "with(window){" + scriptBlock + "}delete this.env;";
if ("keys" in Object) code += "Object.keys(this).forEach(function(p) { window[p] = this[p] }, this);";
- Cu.evalInSandbox(code, s, this.JS_VERSION);
+ Cu.evalInSandbox(code, s);
} catch (e) {
if (ns.consoleDump) {
ns.dump(e);
diff --git a/chrome/noscript.jar!/content/noscript/SyntaxChecker.js b/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
index b73d31f..3797d45 100644
--- a/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
+++ b/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
@@ -26,6 +26,6 @@ SyntaxChecker.prototype = {
return null;
},
ev: function(s) {
- return Cu.evalInSandbox(s, this.sandbox, this.version);
+ return Cu.evalInSandbox(s, this.sandbox);
}
};
diff --git a/chrome/noscript.jar!/content/noscript/URIValidator.js b/chrome/noscript.jar!/content/noscript/URIValidator.js
index 2bcea5c..b7cb757 100644
--- a/chrome/noscript.jar!/content/noscript/URIValidator.js
+++ b/chrome/noscript.jar!/content/noscript/URIValidator.js
@@ -30,7 +30,7 @@ var URIValidator = {
_init: function() {
this.validators = {};
this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
- .getBranch("noscript.urivalid.").QueryInterface(Ci.nsIPrefBranch2);
+ .getBranch("noscript.urivalid.");
for (var key of this.prefs.getChildList("", {})) {
this.parseValidator(key);
}
diff --git a/chrome/noscript.jar!/content/noscript/WebExt.js b/chrome/noscript.jar!/content/noscript/WebExt.js
index 6c6ac5c..82f97e4 100644
--- a/chrome/noscript.jar!/content/noscript/WebExt.js
+++ b/chrome/noscript.jar!/content/noscript/WebExt.js
@@ -4,8 +4,17 @@ var WebExt = {
running: false,
port: null,
saveData(json = ns.conf2JSON()) {
+ this.tell("saveData", json);
+ },
+ start(policy = null) {
+ this.tell("start", policy);
+ },
+ stop() {
+ this.tell("stop");
+ },
+ tell(type, data) {
if (this.port) {
- this.port.postMessage({ type: "saveData", data: json });
+ this.port.postMessage({ type, data });
}
}
};
@@ -31,13 +40,21 @@ try {
WebExt.started = true;
ns.dump(`${addonId} - embedded webext started`);
browser.runtime.onMessage.addListener(msg => {
- WebExt.running = true;
+ switch(msg) {
+ case "STARTED":
+ WebExt.running = true;
+ break;
+ case "STOPPED":
+ WebExt.running = false;
+ break;
+ }
ns.dump(`${addonId} - received message from embedded webext ${msg}`);
});
browser.runtime.onConnect.addListener(port => {
ns.dump(`${addonId} - webext connected`);
WebExt.port = port;
WebExt.saveData();
+ WebExt.stop();
});
}).catch(err => {
Components.utils.reportError(
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/noscript.jar!/content/noscript/about.xul
index f0e296e..19da246 100644
--- a/chrome/noscript.jar!/content/noscript/about.xul
+++ b/chrome/noscript.jar!/content/noscript/about.xul
@@ -48,7 +48,7 @@ function about_onload() {
var str = getString("aboutTitle",["NoScript"]);
if(str) document.title = str;
- str = getString("version", ["5.0.8.1"]);
+ str = getString("version", ["5.0.9"]);
if(str) document.getElementById("extensionVersion").setAttribute("value", str);
setString("extensionDescription",null,"extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.description");
@@ -86,7 +86,7 @@ function about_open(url, features) {
<hbox id="headBox" align="end">
<vbox flex="1">
<label value="NoScript" id="extensionName" crop="right"/>
-<label value="Version 5.0.8.1" id="extensionVersion" crop="right"/>
+<label value="Version 5.0.9" id="extensionVersion" crop="right"/>
</vbox>
<vbox flex="1" align="end">
<hbox align="end">
@@ -164,7 +164,7 @@ function about_open(url, features) {
<hbox>
<label id="license" class="text-link" tooltiptext="Read end-user license" onclick="about_open('chrome://noscript/content/NoScript_License.txt')">License</label>
<spacer flex="1"/>
-<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.0.8.1')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.0.9')">Changelog</label>
<spacer flex="1"/>
<label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('https://noscript.net')">https://noscript.net</label>
</hbox>
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
index 3fd08f2..3a53470 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
@@ -22,10 +22,10 @@
persist="screenX screenY"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/x-javascript;version=1.8" src="noscript.js" />
- <script type="application/x-javascript;version=1.8" src="iaUI.js" />
- <script type="application/x-javascript;version=1.8" src="tree-copy.js" />
- <script type="application/x-javascript;version=1.8" src="noscriptOptions.js" />
+ <script type="application/x-javascript" src="noscript.js" />
+ <script type="application/x-javascript" src="iaUI.js" />
+ <script type="application/x-javascript" src="tree-copy.js" />
+ <script type="application/x-javascript" src="noscriptOptions.js" />
<vbox style="width: &noscriptOptionsWidth;">
<tabbox id="nsopt-tabsMain">
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
index a61409d..851f10b 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
+++ b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
@@ -1400,7 +1400,9 @@ return noscriptUtil.service ? {
get statusIcon() {
var statusIcon = $("noscript-statusIcon") || $("noscript-tbb");
- if (!statusIcon) return null; // avoid mess with early calls
+ if (!statusIcon) {
+ return this._fakeIcon || (this._fakeIcon = document.createElement("toolbar-button")); // ugly hack for Firefox 57
+ }
delete this.statusIcon;
return (this.statusIcon = statusIcon);
},
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul b/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
index a39964d..6145cbb 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
@@ -6,8 +6,8 @@
<overlay id="noscriptOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/x-javascript;version=1.8" src="noscript.js" />
- <script type="application/x-javascript;version=1.8" src="noscriptOverlay.js"/>
+ <script type="application/x-javascript" src="noscript.js" />
+ <script type="application/x-javascript" src="noscriptOverlay.js"/>
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="noscript-tbb"
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
index 975f03b..546922d 100644
--- a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Настройки…">
<!ENTITY noscriptOptions.accesskey "Н">
<!ENTITY noscriptOptionsLong "Настройки на NoScript">
-<!ENTITY noscriptAbout "За NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "За NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
<!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
<!ENTITY noscriptAllow "Разреши">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
index 9db5e9c..162bba6 100644
--- a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcions...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcions de NoScript">
-<!ENTITY noscriptAbout "Quant a NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Quant a NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Podeu especificar quins llocs web poden executar seqüències. El tipus d'adreça o el domini (p.ex. "http://www.site.com" o "site.com") del lloc al qual voleu donar permissos i feu clic a Permet.">
<!ENTITY noscriptWebAddress "Adreça del lloc web:">
<!ENTITY noscriptAllow "Permet">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
index c2c7049..b206a32 100644
--- a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Nastavení...">
<!ENTITY noscriptOptions.accesskey "N">
<!ENTITY noscriptOptionsLong "Nastavení NoScript">
-<!ENTITY noscriptAbout "O rozšíření NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O rozšíření NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Můžete si zvolit, které webové stránky mají povoleno spouštět skripty. Zadejte adresu (např. http://www.site.com nebo site.com) na které se nachází stránka, pro kterou chcete skripty povolit a klepněte na Povolit.">
<!ENTITY noscriptWebAddress "Adresa webové stránky:">
<!ENTITY noscriptAllow "Povolit">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
index cc311a2..fbaeda0 100644
--- a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opsiynau">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opsiynau NoScript">
-<!ENTITY noscriptAbout "Yngylch NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Yngylch NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Cewch enwi pa wefannau sy'n cael rhedeg sgriptiau. Teipiwch gyfeiriad neu barth (e.e. "http://www.site.com" neu "site.com") y safle rydych eisiau ei ganiatau ac wedyn cliciwch Caniatau.">
<!ENTITY noscriptWebAddress "Cyfeiriad wefan">
<!ENTITY noscriptAllow "Caniatau">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
index c07db9e..0cb6311 100644
--- a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Indstillinger…">
<!ENTITY noscriptOptions.accesskey "I">
<!ENTITY noscriptOptionsLong "NoScript Indstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Du kan angive hvilke websteder der må udføre scripts. Indtast adresse eller domæne (f.eks. "http://www.site.com" eller "site.com") på det websted du ønsker at tillade og klik på Tillad.">
<!ENTITY noscriptWebAddress "Webstedets adresse:">
<!ENTITY noscriptAllow "Tillad">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
index 7827664..4f35962 100644
--- a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Einstellungen…">
<!ENTITY noscriptOptions.accesskey "E">
<!ENTITY noscriptOptionsLong "NoScript - Einstellungen">
-<!ENTITY noscriptAbout "Über NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Über NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Sie können festlegen, welchen Websites Sie das Ausführen von Skripten erlauben möchten. Geben Sie bitte die exakte Adresse oder die Domain der Website ein (z.B. "http://www.site.com" oder "site.com"), für die Sie dies zulassen möchten, und klicken Sie dann auf "Erlauben".">
<!ENTITY noscriptWebAddress "Adresse der Website:">
<!ENTITY noscriptAllow "Erlauben">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
index 3efc066..c97ad2e 100644
--- a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Επιλογές">
<!ENTITY noscriptOptions.accesskey "Ε">
<!ENTITY noscriptOptionsLong "Επιλογές NoScript">
-<!ENTITY noscriptAbout "Περί NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Περί NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
<!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
<!ENTITY noscriptAllow "Να επιτρέπεται">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
index a86176f..d50efaf 100644
--- a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
index ed01da5..17eafc3 100644
--- a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
index c542cab..eac5321 100644
--- a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcioj…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcioj de NoScript">
-<!ENTITY noscriptAbout "Pri NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Pri NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Vi povas specifi, kiuj ttt-ejoj rajtu plenumigi skriptojn. Entajpu la adreson aŭ la domajnonomon (ekz. “http://www.retejo.org” aŭ “retejo.org”) de la ttt-ejo, kiun vi volas rajtigi, kaj poste alklaku “Rajtigi”.">
<!ENTITY noscriptWebAddress "Adreso de retpaĝaro:">
<!ENTITY noscriptAllow "Rajtigi">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
index 38a4c5c..6395c77 100644
--- a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opciones…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Puede especificar a cuáles sitios web le permitirá ejecutar scripts. Escriba la dirección o el dominio (por ejemplo, "http://www.sitio.com" o "sitio.com") del sitio y luego haga clic en Permitir.">
<!ENTITY noscriptWebAddress "Dirección del sitio web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
index 293b640..9aa5f0f 100644
--- a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
index b97991d..0932ad8 100644
--- a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opciones…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Configuración de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Aquí puede especificar las páginas web a las que va a permitir ejecutar código JavaScript. Escriba la dirección de la web que quiera incluir (ej. "http://www.paginaweb.com" o "paginaweb.com") y después pulse "Permitir".">
<!ENTITY noscriptWebAddress "Dirección de la página web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
index e5ab06a..e99d431 100644
--- a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Sätted…">
<!ENTITY noscriptOptions.accesskey "S">
<!ENTITY noscriptOptionsLong "NoScripti sätted">
-<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Sa saad määrata, millistel veebilehtedel lubatakse skripte käivitada. Kirjuta veebilehe aadress või domeeni, mida soovid lubada (nt "http://www.site.com" või "site.com") ja klõpsa Luba nuppu">
<!ENTITY noscriptWebAddress "Veebilehe aadress:">
<!ENTITY noscriptAllow "Luba">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
index 5cc37b5..6b22bc2 100644
--- a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Aukerak:">
<!ENTITY noscriptOptions.accesskey "A">
<!ENTITY noscriptOptionsLong "NoScript aukerak">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 5.0.9-eri buruz:">
<!ENTITY noscriptPermissionsText "Zein webgunek script-ak exekuta ditzakeen zehaztu dezakezu. Idatzi script-ak erabiltzea onartzea nahi duzun domeinuaren izena (adib. "http://www.gunea.org" or "gunea.org") eta Onartu sakatu.">
<!ENTITY noscriptWebAddress "Webgunearen helbidea:">
<!ENTITY noscriptAllow "Onartu">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
index 01b2eae..40abc80 100644
--- a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "تنظیمات...">
<!ENTITY noscriptOptions.accesskey "ت">
<!ENTITY noscriptOptionsLong "تنظیمات NoScript">
-<!ENTITY noscriptAbout "درباره NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "درباره NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
<!ENTITY noscriptWebAddress "آدرس وب سایت :">
<!ENTITY noscriptAllow "اجازه دادن">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
index afad65c..fece1b6 100644
--- a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Asetukset…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript asetukset">
-<!ENTITY noscriptAbout "Tietoja NoScript 5.0.8.1istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 5.0.9istä…">
<!ENTITY noscriptPermissionsText "Voit määrittää verkkosivut joiden sallitaan suorittaa scriptejä. Kirjoita verkko-osoite tai verkkonimi (esim. "http://www.site.com" tai "site.com") jonka haluat sallia ja paina Salli.">
<!ENTITY noscriptWebAddress "Verkkosivun osoite:">
<!ENTITY noscriptAllow "Salli">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
index 9e42ed5..a067f11 100644
--- a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Options de NoScript">
-<!ENTITY noscriptAbout "À propos de NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "À propos de NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Il est possible de spécifier quels sites Web sont autorisés à exécuter des scripts. Saisissez l'adresse exacte du site que vous désirez autoriser puis cliquez sur Autoriser.">
<!ENTITY noscriptWebAddress "Adresse du site Web :">
<!ENTITY noscriptAllow "Autoriser">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
index dbf1e3e..91ee11e 100644
--- a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcións...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcións de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Podes especificar que páxinas web poden executar scripts. Teclea o enderezo ou o dominio (por exemplo "http://www.paxina.com" ou "paxina.com") do sitio que queres autorizar e despois preme en "Permitir".">
<!ENTITY noscriptWebAddress "Enderezo web:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
index ffb6277..0406793 100644
--- a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "הגדרות...">
<!ENTITY noscriptOptions.accesskey "">
<!ENTITY noscriptOptionsLong "NoScript הגדרות של">
-<!ENTITY noscriptAbout "אודות NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "אודות NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
<!ENTITY noscriptWebAddress "כתובת/תחום:">
<!ENTITY noscriptAllow "התר">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
index 0315bac..684b87b 100644
--- a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcije...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Opcije">
-<!ENTITY noscriptAbout "O NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Možete odrediti koje web stranice imaju dopuštenje za izvođenje skripti. Upišite adresu ili domenu (npr. "http://www.stranica.hr" ili "stranica.hr") stranice kojoj želite dopustiti i kliknite na Dopusti.">
<!ENTITY noscriptWebAddress "Adresa web stranice:">
<!ENTITY noscriptAllow "Dopusti">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
index 340280e..cd13abf 100644
--- a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opcije…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opcije NoScript">
-<!ENTITY noscriptAbout "Wo NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Wo NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Móžeće podać, kotre websydła smědźa skripty wuwjesć. Zapisajće adresu abo domenu (na př. "http://www.site.com" abo "site.com") websydła, kotremuž chceće to dowolić a klikńće potom na "Dowolić".">
<!ENTITY noscriptWebAddress "Adresa websydła:">
<!ENTITY noscriptAllow "Dowolić">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
index d7971f7..ec93859 100644
--- a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Beállítások…">
<!ENTITY noscriptOptions.accesskey "B">
<!ENTITY noscriptOptionsLong "A NoScript beállításai">
-<!ENTITY noscriptAbout "A NoScript 5.0.8.1 névjegye">
+<!ENTITY noscriptAbout "A NoScript 5.0.9 névjegye">
<!ENTITY noscriptPermissionsText "Megadhatja, hogy mely webhelyek számára engedélyezi a parancsfájlok futtatását. Írja be az engedélyezni kívánt webhely címét vagy tartomány nevét (pl. "http://www.webhely.hu" vagy "webhely.hu"), majd kattintson az Engedélyezés gombra.">
<!ENTITY noscriptWebAddress "A webhely címe:">
<!ENTITY noscriptAllow "Engedélyezés">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
index 925d02d..04b8384 100644
--- a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Pilihan...">
<!ENTITY noscriptOptions.accesskey "P">
<!ENTITY noscriptOptionsLong "Pilihan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Tentang NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Anda dapat menentukan situs web mana yang diijinkan menjalankan naskah. Masukkan alamat atau domain (contoh: "http://www.site.com" atau "site.com") yang akan diberi ijin kemudian klik Ijinkan.">
<!ENTITY noscriptWebAddress "Alamat situs web:">
<!ENTITY noscriptAllow "Ijinkan">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
index b247264..c01fc7f 100644
--- a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opzioni…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opzioni NoScript">
-<!ENTITY noscriptAbout "Informazioni su NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Qui si possono indicare i siti per i quali l'esecuzione degli script è consentita. Digitare l'indirizzo o il dominio (es. "http://www.sito.com" oppure "sito.com") e fare clic su Permetti.">
<!ENTITY noscriptWebAddress "Indirizzo del sito:">
<!ENTITY noscriptAllow "Permetti">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
index 5bd4ce8..9a0e951 100644
--- a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "オプション...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript オプション">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1について...">
+<!ENTITY noscriptAbout "NoScript 5.0.9について...">
<!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
<!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
<!ENTITY noscriptAllow "許可する">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
index 6564789..a82275a 100644
--- a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Баптаулары">
<!ENTITY noscriptOptions.accesskey "Б">
<!ENTITY noscriptOptionsLong "NoScript баптаулары">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 туралы...">
+<!ENTITY noscriptAbout "NoScript 5.0.9 туралы...">
<!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
<!ENTITY noscriptWebAddress "Веб-сайт адресі:">
<!ENTITY noscriptAllow "Рұқсат ету">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
index 3d3b992..aea4d15 100644
--- a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "About NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
index ca439e8..430fd4e 100644
--- a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "옵션...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 옵션">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 정보...">
+<!ENTITY noscriptAbout "NoScript 5.0.9 정보...">
<!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
<!ENTITY noscriptWebAddress "웹 사이트 주소">
<!ENTITY noscriptAllow "허용">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
index 456ef8e..9cbec04 100644
--- a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Nuostatos...">
<!ENTITY noscriptOptions.accesskey "N">
<!ENTITY noscriptOptionsLong "NoScript nuostatos">
-<!ENTITY noscriptAbout "Apie NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Apie NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Jūs galite nurodyti, kurioms interneto svetainėms suteikiamas leidimas vykdyti programinius kodus. Įveskite adresą arba domeną (pvz., "http://www.svetaine.lt" arba "svetaine.lt") svetainės, kuriai norite suteikti leidimą ir spauskite Leisti.">
<!ENTITY noscriptWebAddress "Interneto svetainės adresas:">
<!ENTITY noscriptAllow "Leisti">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
index 574bd68..8d5a9fa 100644
--- a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Опции...">
<!ENTITY noscriptOptions.accesskey "О">
<!ENTITY noscriptOptionsLong "NoScript Опции">
-<!ENTITY noscriptAbout "За NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "За NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
<!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
<!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
index c8f11c5..7efeaab 100644
--- a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Tetapan...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Tetapan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Tentang NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Anda boleh menentukan laman web yang anda benarkan skripnya diproses. Taipkan alamat atau domain(contoh:"http://www.tapak.com" atau "tapak.com") laman web yang diingini dan klik Benarkan">
<!ENTITY noscriptWebAddress "Alamat laman web:">
<!ENTITY noscriptAllow "Benarkan">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
index 3e2e6db..4b45306 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Innstillinger">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Innstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Du kan spesifisere hvilke websider som har tillatelse til å kjøre scritper. Skriv inn adresse, eller domene (F.eks: "http://www.side.no", eller "side.no") du ønsker å gi tillatelse til, og klikk Tillat.">
<!ENTITY noscriptWebAddress "Webadresse:">
<!ENTITY noscriptAllow "Tillat">
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
index 4d4e9b6..d1d4750 100644
--- a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opties…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript-opties">
-<!ENTITY noscriptAbout "Over NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Over NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "U kunt opgeven welke websites scripts mogen gebruiken. Typ het adres of domein (bv. ‘http://www.website.com’ of ‘website.com’) van de website die u wilt toestaan, en klik daarna op Toestaan.">
<!ENTITY noscriptWebAddress "Adres van website:">
<!ENTITY noscriptAllow "Toestaan">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
index 8ce6d9f..8d0de6d 100644
--- a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Ustawienia">
<!ENTITY noscriptOptions.accesskey "U">
<!ENTITY noscriptOptionsLong "NoScript – ustawienia">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 – informacje">
+<!ENTITY noscriptAbout "NoScript 5.0.9 – informacje">
<!ENTITY noscriptPermissionsText "Tutaj można określić witryny internetowe, które będą mogły uruchamiać skrypty. Proszę wprowadzić adres lub domenę witryny (np: „http://www.witryna.pl” lub „witryna.pl”) i nacisnąć przycisk Pozwól.">
<!ENTITY noscriptWebAddress "Adres witryny:">
<!ENTITY noscriptAllow "Pozwól">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
index ffdc9d7..f9d8f4a 100644
--- a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opções">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "Você pode especificar os sites que podem executar JavaScripts. Escreva o endereço ou o domínio (ex "http://www.site.com" ou "site.com") do site que deseja permitir e depois clique em Permitir.">
<!ENTITY noscriptWebAddress "Endereço:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
index b483fe8..c7c1b65 100644
--- a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opções">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Pode especificar os sítios que podem executar scripts. Escreva o endereço ou o domínio (ex: "http://www.sitio.com" ou "sitio.com") do sítio que deseja permitir e depois pressione em Permitir.">
<!ENTITY noscriptWebAddress "Endereço:">
<!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
index 803cb5c..efd50b3 100644
--- a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Opțiuni...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "Opțiuni NoScript">
-<!ENTITY noscriptAbout "Despre NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Despre NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Puteți specifica saiturile cărora li se permite să execute scripturi. Scrieți adresa sau domeniul paginii (exemplu: „http://www.sait.ro“ sau „sait.ro“), apoi apăsați pe butonul „Permite“.">
<!ENTITY noscriptWebAddress "Adresă sait:">
<!ENTITY noscriptAllow "Permite">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
index 15bc236..a3bae2e 100644
--- a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Možnosti...">
<!ENTITY noscriptOptions.accesskey "M">
<!ENTITY noscriptOptionsLong "NoScript – Možnosti">
-<!ENTITY noscriptAbout "O rozšírení NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O rozšírení NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Môžete určiť, ktoré webové stránky majú povolené spúšťať JavaScript. Zadajte adresu alebo doménu (napríklad "http://www.site.com" alebo "site.com") stránky, ktorú chcete povoliť, a potom kliknite na tlačidlo Povoliť.">
<!ENTITY noscriptWebAddress "Adresa webovej stránky:">
<!ENTITY noscriptAllow "Povoliť">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
index 6a44a1b..f3ce91d 100644
--- a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Možnosti...">
<!ENTITY noscriptOptions.accesskey "M">
<!ENTITY noscriptOptionsLong "NoScript Možnosti">
-<!ENTITY noscriptAbout "O NoScript 5.0.8.1 programu...">
+<!ENTITY noscriptAbout "O NoScript 5.0.9 programu...">
<!ENTITY noscriptPermissionsText "Določite lahko na katerih straneh bo izvajanje skript dovoljeno. Vnesite naslov ali domeno (pr. "http://www.domena.com" or "domena.com") strani, na kateri želite omogočiti izvajanje skript in kliknite Dovoli.">
<!ENTITY noscriptWebAddress "Naslov strani:">
<!ENTITY noscriptAllow "Dovoli">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
index f581ef5..34bd9e1 100644
--- a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Подешавања...">
<!ENTITY noscriptOptions.accesskey "П">
<!ENTITY noscriptOptionsLong "NoScript подешавања">
-<!ENTITY noscriptAbout "О NoScript 5.0.8.1-у">
+<!ENTITY noscriptAbout "О NoScript 5.0.9-у">
<!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
<!ENTITY noscriptWebAddress "Адреса веб стране:">
<!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
index 82bab6f..58ddd71 100644
--- a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Alternativ...">
<!ENTITY noscriptOptions.accesskey "A">
<!ENTITY noscriptOptionsLong "NoScript-alternativ">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Ange vilka webbplatser som får köra skript. Skriv webbadressen eller domänen (t ex. "http://www.webbplats.se" eller "webbplats.se") för den webbplats där skript ska tillåtas. Klicka sedan på "Tillåt".">
<!ENTITY noscriptWebAddress "Sidans adress:">
<!ENTITY noscriptAllow "Tillåt">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
index 405da24..9d49c78 100644
--- a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Options…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
<!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
<!ENTITY noscriptWebAddress "Address of web site:">
<!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
index f9f5625..dc41f3b 100644
--- a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "ตัวเลือก...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "ตัวเลือก NoScript">
-<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
<!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
<!ENTITY noscriptAllow "อนุญาต">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
index 3b9d9ac..fb505ce 100644
--- a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Seçenekler">
<!ENTITY noscriptOptions.accesskey "S">
<!ENTITY noscriptOptionsLong "NoScript Seçenekleri">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 @VERSION@ Hakkında">
+<!ENTITY noscriptAbout "NoScript 5.0.9 @VERSION@ Hakkında">
<!ENTITY noscriptPermissionsText "Hangi web sayfalarında JavaScript'e izni vereceğinizi kolayca seçebilirsiniz. Lütfen adresi tam olarak girin (örn. "http://www.site.com" veya "site.com") ve 'İzin ver' düğmesine tıklayarak sayfanın JavaScript kullanmasına izin verin.">
<!ENTITY noscriptWebAddress "Site adresi:">
<!ENTITY noscriptAllow "İzin ver">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
index 98807ed..bb3234a 100644
--- a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "Tùy chọn">
<!ENTITY noscriptOptions.accesskey "y">
<!ENTITY noscriptOptionsLong "Tùy chọn cho NoScript">
-<!ENTITY noscriptAbout "Thông tin về NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Thông tin về NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "Bạn có thể chỉ định trang web nào được phép chạy script. Gõ địa chỉ hay tên miền (v.d. "http://www.nhaccodien.com" hay "nhaccodien.com") của trang mà bạn muốn cho phép, rồi nhấn Cho phép.">
<!ENTITY noscriptWebAddress "Địa chỉ của trang web:">
<!ENTITY noscriptAllow "Cho phép">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
index 7333ed8..7f8ecc6 100644
--- a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "选项...">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 选项">
-<!ENTITY noscriptAbout "关于 NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "关于 NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
<!ENTITY noscriptWebAddress "网站地址:">
<!ENTITY noscriptAllow "允许">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
index 8ddbf71..35d9625 100644
--- a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
@@ -1,7 +1,7 @@
<!ENTITY noscriptOptions "選項…">
<!ENTITY noscriptOptions.accesskey "O">
<!ENTITY noscriptOptionsLong "NoScript 選項">
-<!ENTITY noscriptAbout "關於 NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "關於 NoScript 5.0.9">
<!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
<!ENTITY noscriptWebAddress "網址:">
<!ENTITY noscriptAllow "允許">
diff --git a/chrome/noscript.jar!/webextension/lib/noscript/tld.js b/chrome/noscript.jar!/webextension/lib/noscript/tld.js
new file mode 100644
index 0000000..67acd94
--- /dev/null
+++ b/chrome/noscript.jar!/webextension/lib/noscript/tld.js
@@ -0,0 +1,31 @@
+var tld = {
+ normalize(d) { return d; },
+
+ getDomain(domain) {
+ domain = this.normalize(domain);
+ var pos = domain.search(this._tldEx);
+ if(pos < 0) {
+ pos = domain.search(this._tldRx);
+ if(pos >= 0) pos = domain.lastIndexOf(".", pos - 1) + 1;
+ } else if(domain[pos] == ".") {
+ ++pos;
+ }
+ return pos < 0 ? domain : domain.substring(pos);
+ },
+
+ getPublicSuffix(domain) {
+ domain = this.normalize(domain);
+ var pos = domain.search(this._tldEx);
+ if(pos < 0) {
+ pos = domain.search(this._tldRx);
+ if(pos >= 0 && domain[pos] == ".") pos++;
+ } else {
+ pos = domain.indexOf(".", pos + 1) + 1;
+ }
+ return pos < 0 ? "" : domain.substring(pos);
+ },
+
+ _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
+ ,
+ _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
+}
diff --git a/defaults/preferences/noscript.js b/defaults/preferences/noscript.js
index 087c1ed..5fae5ab 100644
--- a/defaults/preferences/noscript.js
+++ b/defaults/preferences/noscript.js
@@ -268,7 +268,7 @@ pref("noscript.surrogate.digg.replacement", "window.location.href=document.query
pref("noscript.surrogate.dimtus.sources", "!@^http://(?:dimtus|imageteam)\\.(?:com|org)/img-");
pref("noscript.surrogate.dimtus.replacement", "document.querySelector('.overlay_ad').style.display='none'");
pref("noscript.surrogate.ga.sources", "*.google-analytics.com");
-pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);window.urchinTracker=window._u||_u;window._gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:funct [...]
+pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);window.urchinTracker=window._u||_u;window._gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:funct [...]
pref("noscript.surrogate.glinks.replacement", "['focus','mouseover','mousedown','click'].forEach(function(et){addEventListener(et,function(e){var a=e.target,href=a.href&&a.getAttribute&&a.getAttribute('href');if(href&&/^(?:http|\\/url)/.test(href)&&!a._href){a._href=a.href=a.href.replace(/.*\\/url.*[?&](?:url|q)=(http[^&]+).*/,function(a,b)decodeURIComponent(b));do{if(/\\brwt\\(/.test(a.getAttribute('onmousedown')))a.removeAttribute('onmousedown')}while((a=a.parentElement))}},true)})");
pref("noscript.surrogate.glinks.sources", "!@^https?://[^/]+google\\..*/search");
pref("noscript.surrogate.googletag.replacement", "if(typeof googletag==='undefined'){googletag={slots:{},cmd:$S({__noSuchMethod__:function(){return $S(this)},push:function(f){return f()}})};}googletag.defineSlot=function(){return $S({__noSuchMethod__:function(){return $S(this)}})};let _gt=googletag;googletag=new Proxy(_gt,{get:function(s,w,e){return w in s?s[w]:function(){return $S({__noSuchMethod__:function(){return googletag;}})};}});let _renderedAds=new Proxy({},{get:function(a,b){ret [...]
diff --git a/install.rdf b/install.rdf
index b1b75e1..0064fbb 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
<em:id>{73a6fe31-595d-460b-a920-fcc0f8843232}</em:id>
<em:name>NoScript</em:name>
- <em:version>5.0.8.1</em:version>
+ <em:version>5.0.9</em:version>
<em:description>Extra protection for your Firefox: NoScript allows JavaScript, Java (and other plugins) only for trusted domains of your choice (e.g. your home-banking web site). This whitelist based pre-emptive blocking approach prevents exploitation of security vulnerabilities (known and even unknown!) with no loss of functionality... Experts will agree: Firefox is really safer with NoScript :-)</em:description>
<em:creator>Giorgio Maone</em:creator>
<em:type>2</em:type>
diff --git a/webextension/Policy.js b/webextension/Policy.js
new file mode 100644
index 0000000..7fbb985
--- /dev/null
+++ b/webextension/Policy.js
@@ -0,0 +1,19 @@
+"use strict";
+
+class Policy {
+ constructor(settings = {}) {
+ this.settings = settings;
+ }
+
+ getPermissionsFor(url) {
+ }
+
+ isAllowed(url, type) {
+ if (!(policy && policy.enforced)) {
+ return true;
+ }
+ let url = new URL(urlString);
+ return url.origin in policy.origins && policy.origins[url.origin].js;
+ }
+}
+
diff --git a/webextension/WebRequest.js b/webextension/WebRequest.js
new file mode 100644
index 0000000..9320d65
--- /dev/null
+++ b/webextension/WebRequest.js
@@ -0,0 +1,59 @@
+{
+ let CSP = {
+ name: "Content-Security-Policy",
+ value: "x-NoScript-start; script-src 'none'; x-NoScript-stop;",
+ };
+
+ var WebRequest = {
+ start() {
+ let wr = browser.webRequest;
+ let listeners = this.listeners;
+ wr.onBeforeRequest.addListener(listeners.onBeforeRequest,
+ {urls: ["<all_urls>"]},
+ ["blocking"]
+ );
+ wr.onHeadersReceived.addListener(listeners.onHeadersReceived,
+ {urls: ["<all_urls>"]},
+ ["blocking", "responseHeaders"]
+ );
+
+ },
+
+ stop() {
+ let wr = browser.webRequest;
+ for (let [name, listener] of Object.entries(this.listeners)) {
+ wr[name].removeListener(listener);
+ }
+ },
+ listeners: {
+ async onBeforeRequest(e) {
+ // suspend every request until we've got a policy
+ let policy = await ns.retrievePolicy();
+ return policy.isAllowed(e.url, e.type);
+ },
+ onHeadersReceived(e) {
+ let header;
+ let responseHeaders = e.responseHeaders;
+ for (let h of responseHeaders) {
+ if (h.name === CSP.name) {
+ while(h.value.includes(CSP.value)) {
+ h.value = h.value.replace(CSP.value, '');
+ if (/^\s*$/.test(h.value)) {
+ header = h;
+ h.value = "";
+ }
+ }
+ }
+ }
+ if (!ns.isJSEnabled(e.url)) {
+ if (header) {
+ header.value = CSP.value;
+ } else {
+ responseHeaders.push(header = CSP);
+ }
+ }
+ return header ? {responseHeaders} : null;
+ },
+ }
+ };
+}
diff --git a/webextension/background.html b/webextension/background.html
new file mode 100644
index 0000000..375c94d
--- /dev/null
+++ b/webextension/background.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>NoScript</title>
+<script src="legacy.js"></script>
+<script src="WebRequest.js"></script>
+<script src="lib/tld.js"></script>
+<script src="noscript.js"></script>
+</head>
+</html>
diff --git a/webextension/background.js b/webextension/background.js
deleted file mode 100644
index 849fac1..0000000
--- a/webextension/background.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var policy;
-var webRequestInitialized = false;
-
-function initWebRequest() {
- if (webRequestInitialized) return;
- webRequestInitialized = true;
- browser.webRequest.onHeadersReceived.addListener(setCSP,
- {urls: ["<all_urls>"]},
- ["blocking", "responseHeaders"]
- );
- console.log(`NoScript WebExt webRequest initialized`);
-}
-var legacyPort = browser.runtime.connect({name: "legacy"});
-legacyPort.onMessage.addListener(msg => {
-
- switch(msg.type) {
- case "configure":
- initWebRequest();
- policy = msg.policy;
- break;
- case "saveData":
- browser.storage.local.set(msg.data);
- break;
-
- case "dumpData":
- browser.storage.local.get(null, items => console.log(items));
- break;
- }
-});
-
-const CSP = {
- name: "Content-Security-Policy",
- value: "x-NoScript-start; script-src 'none'; x-NoScript-stop;"
-};
-
-function isJSEnabled(urlString) {
- if (!(policy && policy.enforced)) {
- return true;
- }
- let url = new URL(urlString);
- return url.origin in policy.origins && policy.origins[url.origin].js;
-}
-
-function setCSP(e) {
- let header;
- for (let h of e.responseHeaders) {
- if (h.name === CSP.name) {
- while(e.value.includes(CSP.value)) {
- h.value = h.value.replace(CSP.value, '');
- if (/^\s*$/.test(h.value)) {
- header = h;
- h.value = "";
- }
- }
- }
- }
- if (!isJSEnabled(e.url)) {
- if (header) {
- header.value = CSP.value;
- } else {
- e.responseHeaders.push(header = CSP);
- }
- }
- return header ? {responseHeaders: e.responseHeaders} : null;
-}
-
-
-browser.runtime.sendMessage("READY");
-console.log("NoScript WebExt Ready");
-
diff --git a/webextension/legacy.js b/webextension/legacy.js
new file mode 100644
index 0000000..337effe
--- /dev/null
+++ b/webextension/legacy.js
@@ -0,0 +1,28 @@
+var legacyPort;
+try {
+ legacyPort = browser.runtime.connect({name: "legacy"});
+ legacyPort.onMessage.addListener(msg => {
+ switch(msg.type) {
+
+ case "start":
+ ns.start(msg.data);
+ break;
+
+ case "stop":
+ ns.stop();
+ break;
+
+ case "saveData":
+ browser.storage.local.set(msg.data);
+ console.log("NoScript preferences backed on the WebExtension side");
+ break;
+
+ case "dumpData":
+ browser.storage.local.get(null, items => console.log(items));
+ break;
+ }
+ });
+} catch(e) {
+ legacyPort = null;
+}
+
diff --git a/webextension/lib/tld.js b/webextension/lib/tld.js
new file mode 100644
index 0000000..714945b
--- /dev/null
+++ b/webextension/lib/tld.js
@@ -0,0 +1,31 @@
+var tld = {
+ normalize(d) { return d; },
+
+ getDomain(domain) {
+ domain = this.normalize(domain);
+ var pos = domain.search(this._tldEx);
+ if(pos < 0) {
+ pos = domain.search(this._tldRx);
+ if(pos >= 0) pos = domain.lastIndexOf(".", pos - 1) + 1;
+ } else if(domain[pos] == ".") {
+ ++pos;
+ }
+ return pos < 0 ? domain : domain.substring(pos);
+ },
+
+ getPublicSuffix(domain) {
+ domain = this.normalize(domain);
+ var pos = domain.search(this._tldEx);
+ if(pos < 0) {
+ pos = domain.search(this._tldRx);
+ if(pos >= 0 && domain[pos] == ".") pos++;
+ } else {
+ pos = domain.indexOf(".", pos + 1) + 1;
+ }
+ return pos < 0 ? "" : domain.substring(pos);
+ },
+
+ _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
+ ,
+ _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
+}
diff --git a/webextension/manifest.json b/webextension/manifest.json
index 7c665df..25fd27a 100644
--- a/webextension/manifest.json
+++ b/webextension/manifest.json
@@ -1,15 +1,27 @@
{
"manifest_version": 2,
"name": "NoScript",
+ "applications": {
+ "gecko": {
+ "id": "{73a6fe31-595d-460b-a920-fcc0f8843232}",
+ "strict_min_version": "52.0"
+ }
+ },
"version": "10.1.0",
"description": "NoScript Security Suite",
"permissions": [
- "storage", "webNavigation",
- "webRequest", "webRequestBlocking", "<all_urls>"
+ "contextMenus",
+ "privacy",
+ "storage",
+ "tabs",
+ "webNavigation",
+ "webRequest",
+ "webRequestBlocking",
+ "<all_urls>"
],
"background": {
- "scripts": ["background.js"]
+ "page": "background.html"
}
}
diff --git a/webextension/noscript.js b/webextension/noscript.js
new file mode 100644
index 0000000..4a5a7dc
--- /dev/null
+++ b/webextension/noscript.js
@@ -0,0 +1,44 @@
+"use strict";
+
+{
+ let policy = null;
+
+ var ns = {
+ running: false,
+
+ start(settings = null) {
+ if (this.running) return;
+ this.running = true;
+ if (settings) policy = new Policy(settings);
+
+ browser.runtime.sendMessage("STARTED");
+ },
+
+ stop() {
+ if (!this.running) return;
+ this.running= false;
+ WebRequest.stop();
+ browser.runtime.sendMessage("STOPPED");
+ },
+
+ async retrievePolicy() {
+ return this.policy || (this.policy = new Policy(await browser.storage.get("policy")));
+ },
+
+ isJSEnabled(urlString) {
+ return this.retrievePolicy().isAllowed(urlString, "script");
+ },
+
+ };
+}
+
+if (legacyPort) {
+ browser.runtime.sendMessage("LEGACY MODE");
+} else {
+ browser.storage.local.get(null, items => console.log(`NoScript imported preferences: ${JSON.stringify(items)}`));
+ ns.start();
+}
+
+browser.runtime.sendMessage("READY");
+console.log("NoScript WebExt Ready");
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/noscript.git
More information about the Pkg-mozext-commits
mailing list