Browse Source

Allow block sites based on sha256 hashed address

shortcutme 5 years ago
parent
commit
3923f2baf4

+ 3 - 1
plugins/ContentFilter/ContentFilterPlugin.py

@@ -1,6 +1,7 @@
 import time
 import re
 import cgi
+import hashlib
 
 from Plugin import PluginManager
 from Translate import Translate
@@ -187,7 +188,8 @@ class UiRequestPlugin(object):
         if self.server.site_manager.isDomain(address):
             address = self.server.site_manager.resolveDomain(address)
 
-        if filter_storage.isSiteblocked(address):
+        address_sha256 = "0x" + hashlib.sha256(address).hexdigest()
+        if filter_storage.isSiteblocked(address) or filter_storage.isSiteblocked(address_sha256):
             site = self.server.site_manager.get(config.homepage)
             if not extra_headers:
                 extra_headers = {}

+ 15 - 1
plugins/ContentFilter/media/blocklisted.html

@@ -42,6 +42,15 @@
 <script type="text/javascript" src="js/ZeroFrame.js"></script>
 
 <script>
+function buf2hex(buffer) {
+    return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
+}
+
+async function sha256hex(s) {
+    var buff = new TextEncoder("utf-8").encode(s)
+    return "0x" + buf2hex(await crypto.subtle.digest("SHA-256", buff))
+}
+
 class Page extends ZeroFrame {
     onOpenWebsocket () {
     	this.cmd("wrapperSetTitle", "Visiting a blocked site - ZeroNet")
@@ -53,8 +62,9 @@ class Page extends ZeroFrame {
     }
 
     async updateSiteblockDetails(address) {
+        var address_sha256 = await sha256hex(address)
         var blocks = await this.cmdp("siteblockList")
-        if (blocks[address]) {
+        if (blocks[address] || blocks[address_sha256]) {
             block = blocks[address]
         } else {
             var includes = await this.cmdp("filterIncludeList", {all_sites: true, filters: true})
@@ -63,6 +73,10 @@ class Page extends ZeroFrame {
                     var block = include["siteblocks"][address]
                     block["include"] = include
                 }
+                if (include["siteblocks"][address_sha256]) {
+                    var block = include["siteblocks"][address_sha256]
+                    block["include"] = include
+                }
             }
         }