From f8e24d47e34cc234b4e37e369f0b84f2efee5217 Mon Sep 17 00:00:00 2001 From: caryoscelus Date: Thu, 20 Jul 2023 18:38:20 +0000 Subject: [PATCH] remove ZeronameLocal plugin we no longer need it as all domains have been freezed refs #23 --- .../SiteManagerPlugin.py | 180 ------------------ .../disabled-ZeronameLocal/UiRequestPlugin.py | 39 ---- plugins/disabled-ZeronameLocal/__init__.py | 2 - 3 files changed, 221 deletions(-) delete mode 100644 plugins/disabled-ZeronameLocal/SiteManagerPlugin.py delete mode 100644 plugins/disabled-ZeronameLocal/UiRequestPlugin.py delete mode 100644 plugins/disabled-ZeronameLocal/__init__.py diff --git a/plugins/disabled-ZeronameLocal/SiteManagerPlugin.py b/plugins/disabled-ZeronameLocal/SiteManagerPlugin.py deleted file mode 100644 index 579e31c1..00000000 --- a/plugins/disabled-ZeronameLocal/SiteManagerPlugin.py +++ /dev/null @@ -1,180 +0,0 @@ -import logging, json, os, re, sys, time, socket -from Plugin import PluginManager -from Config import config -from Debug import Debug -from http.client import HTTPSConnection, HTTPConnection, HTTPException -from base64 import b64encode - -allow_reload = False # No reload supported - -@PluginManager.registerTo("SiteManager") -class SiteManagerPlugin(object): - def load(self, *args, **kwargs): - super(SiteManagerPlugin, self).load(*args, **kwargs) - self.log = logging.getLogger("ZeronetLocal Plugin") - self.error_message = None - if not config.namecoin_host or not config.namecoin_rpcport or not config.namecoin_rpcuser or not config.namecoin_rpcpassword: - self.error_message = "Missing parameters" - self.log.error("Missing parameters to connect to namecoin node. Please check all the arguments needed with '--help'. Zeronet will continue working without it.") - return - - url = "%(host)s:%(port)s" % {"host": config.namecoin_host, "port": config.namecoin_rpcport} - self.c = HTTPConnection(url, timeout=3) - user_pass = "%(user)s:%(password)s" % {"user": config.namecoin_rpcuser, "password": config.namecoin_rpcpassword} - userAndPass = b64encode(bytes(user_pass, "utf-8")).decode("ascii") - self.headers = {"Authorization" : "Basic %s" % userAndPass, "Content-Type": " application/json " } - - payload = json.dumps({ - "jsonrpc": "2.0", - "id": "zeronet", - "method": "ping", - "params": [] - }) - - try: - self.c.request("POST", "/", payload, headers=self.headers) - response = self.c.getresponse() - data = response.read() - self.c.close() - if response.status == 200: - result = json.loads(data.decode())["result"] - else: - raise Exception(response.reason) - except Exception as err: - self.log.error("The Namecoin node is unreachable. Please check the configuration value are correct. Zeronet will continue working without it.") - self.error_message = err - self.cache = dict() - - # Checks if it's a valid address - def isAddress(self, address): - return self.isBitDomain(address) or super(SiteManagerPlugin, self).isAddress(address) - - # Return: True if the address is domain - def isDomain(self, address): - return self.isBitDomain(address) or super(SiteManagerPlugin, self).isDomain(address) - - # Return: True if the address is .bit domain - def isBitDomain(self, address): - return re.match(r"(.*?)([A-Za-z0-9_-]+\.bit)$", address) - - # Return: Site object or None if not found - def get(self, address): - if self.isBitDomain(address): # Its looks like a domain - address_resolved = self.resolveDomain(address) - if address_resolved: # Domain found - site = self.sites.get(address_resolved) - if site: - site_domain = site.settings.get("domain") - if site_domain != address: - site.settings["domain"] = address - else: # Domain not found - site = self.sites.get(address) - - else: # Access by site address - site = super(SiteManagerPlugin, self).get(address) - return site - - # Return or create site and start download site files - # Return: Site or None if dns resolve failed - def need(self, address, *args, **kwargs): - if self.isBitDomain(address): # Its looks like a domain - address_resolved = self.resolveDomain(address) - if address_resolved: - address = address_resolved - else: - return None - - return super(SiteManagerPlugin, self).need(address, *args, **kwargs) - - # Resolve domain - # Return: The address or None - def resolveDomain(self, domain): - domain = domain.lower() - - #remove .bit on end - if domain[-4:] == ".bit": - domain = domain[0:-4] - - domain_array = domain.split(".") - - if self.error_message: - self.log.error("Not able to connect to Namecoin node : {!s}".format(self.error_message)) - return None - - if len(domain_array) > 2: - self.log.error("Too many subdomains! Can only handle one level (eg. staging.mixtape.bit)") - return None - - subdomain = "" - if len(domain_array) == 1: - domain = domain_array[0] - else: - subdomain = domain_array[0] - domain = domain_array[1] - - if domain in self.cache: - delta = time.time() - self.cache[domain]["time"] - if delta < 3600: - # Must have been less than 1hour - return self.cache[domain]["addresses_resolved"][subdomain] - - payload = json.dumps({ - "jsonrpc": "2.0", - "id": "zeronet", - "method": "name_show", - "params": ["d/"+domain] - }) - - try: - self.c.request("POST", "/", payload, headers=self.headers) - response = self.c.getresponse() - data = response.read() - self.c.close() - domain_object = json.loads(data.decode())["result"] - except Exception as err: - #domain doesn't exist - return None - - if "zeronet" in domain_object["value"]: - zeronet_domains = json.loads(domain_object["value"])["zeronet"] - - if isinstance(zeronet_domains, str): - # { - # "zeronet":"19rXKeKptSdQ9qt7omwN82smehzTuuq6S9" - # } is valid - zeronet_domains = {"": zeronet_domains} - - self.cache[domain] = {"addresses_resolved": zeronet_domains, "time": time.time()} - - elif "map" in domain_object["value"]: - # Namecoin standard use {"map": { "blog": {"zeronet": "1D..."} }} - data_map = json.loads(domain_object["value"])["map"] - - zeronet_domains = dict() - for subdomain in data_map: - if "zeronet" in data_map[subdomain]: - zeronet_domains[subdomain] = data_map[subdomain]["zeronet"] - if "zeronet" in data_map and isinstance(data_map["zeronet"], str): - # {"map":{ - # "zeronet":"19rXKeKptSdQ9qt7omwN82smehzTuuq6S9", - # }} - zeronet_domains[""] = data_map["zeronet"] - - self.cache[domain] = {"addresses_resolved": zeronet_domains, "time": time.time()} - - else: - # No Zeronet address registered - return None - - return self.cache[domain]["addresses_resolved"][subdomain] - -@PluginManager.registerTo("ConfigPlugin") -class ConfigPlugin(object): - def createArguments(self): - group = self.parser.add_argument_group("Zeroname Local plugin") - group.add_argument('--namecoin_host', help="Host to namecoin node (eg. 127.0.0.1)") - group.add_argument('--namecoin_rpcport', help="Port to connect (eg. 8336)") - group.add_argument('--namecoin_rpcuser', help="RPC user to connect to the namecoin node (eg. nofish)") - group.add_argument('--namecoin_rpcpassword', help="RPC password to connect to namecoin node") - - return super(ConfigPlugin, self).createArguments() diff --git a/plugins/disabled-ZeronameLocal/UiRequestPlugin.py b/plugins/disabled-ZeronameLocal/UiRequestPlugin.py deleted file mode 100644 index 0ccfb530..00000000 --- a/plugins/disabled-ZeronameLocal/UiRequestPlugin.py +++ /dev/null @@ -1,39 +0,0 @@ -import re -from Plugin import PluginManager - -@PluginManager.registerTo("UiRequest") -class UiRequestPlugin(object): - def __init__(self, *args, **kwargs): - from Site import SiteManager - self.site_manager = SiteManager.site_manager - super(UiRequestPlugin, self).__init__(*args, **kwargs) - - - # Media request - def actionSiteMedia(self, path): - match = re.match(r"/media/(?P
[A-Za-z0-9-]+\.[A-Za-z0-9\.-]+)(?P/.*|$)", path) - if match: # Its a valid domain, resolve first - domain = match.group("address") - address = self.site_manager.resolveDomain(domain) - if address: - path = "/media/"+address+match.group("inner_path") - return super(UiRequestPlugin, self).actionSiteMedia(path) # Get the wrapper frame output - - - # Is mediarequest allowed from that referer - def isMediaRequestAllowed(self, site_address, referer): - referer_path = re.sub("http[s]{0,1}://.*?/", "/", referer).replace("/media", "") # Remove site address - referer_path = re.sub(r"\?.*", "", referer_path) # Remove http params - - if self.isProxyRequest(): # Match to site domain - referer = re.sub("^http://zero[/]+", "http://", referer) # Allow /zero access - referer_site_address = re.match("http[s]{0,1}://(.*?)(/|$)", referer).group(1) - else: # Match to request path - referer_site_address = re.match(r"/(?P
[A-Za-z0-9\.-]+)(?P/.*|$)", referer_path).group("address") - - if referer_site_address == site_address: # Referer site address as simple address - return True - elif self.site_manager.resolveDomain(referer_site_address) == site_address: # Referer site address as dns - return True - else: # Invalid referer - return False diff --git a/plugins/disabled-ZeronameLocal/__init__.py b/plugins/disabled-ZeronameLocal/__init__.py deleted file mode 100644 index cf724069..00000000 --- a/plugins/disabled-ZeronameLocal/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from . import UiRequestPlugin -from . import SiteManagerPlugin \ No newline at end of file