diff --git a/plugins/disabled-Zeroname-local/SiteManagerPlugin.py b/plugins/disabled-Zeroname-local/SiteManagerPlugin.py
new file mode 100644
index 00000000..0d001fc3
--- /dev/null
+++ b/plugins/disabled-Zeroname-local/SiteManagerPlugin.py
@@ -0,0 +1,68 @@
+import logging, json, os, re, sys, time
+import gevent
+from Plugin import PluginManager
+from Config import config
+from Debug import Debug
+from domainLookup import lookupDomain
+
+allow_reload = False # No reload supported
+
+log = logging.getLogger("Zeroname-localPlugin")
+
+
+@PluginManager.registerTo("SiteManager")
+class SiteManagerPlugin(object):
+ def load(self):
+ super(SiteManagerPlugin, self).load()
+
+ # Checks if its a valid address
+ def isAddress(self, address):
+ if self.isDomain(address):
+ return True
+ else:
+ return super(SiteManagerPlugin, self).isAddress(address)
+
+
+ # Return: True if the address is domain
+ def isDomain(self, address):
+ return re.match("(.*?)([A-Za-z0-9_-]+\.[A-Za-z0-9]+)$", address)
+
+
+ # Resolve domain
+ # Return: The address or None
+ def resolveDomain(self, domain):
+ return lookupDomain(domain)
+
+
+ # Return or create site and start download site files
+ # Return: Site or None if dns resolve failed
+ def need(self, address, all_file=True):
+ if self.isDomain(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, all_file)
+
+
+ # Return: Site object or None if not found
+ def get(self, address):
+ if self.sites == None: # Not loaded yet
+ self.load()
+ if self.isDomain(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 = self.sites.get(address)
+ return site
+
diff --git a/plugins/disabled-Zeroname-local/UiRequestPlugin.py b/plugins/disabled-Zeroname-local/UiRequestPlugin.py
new file mode 100644
index 00000000..3e54c765
--- /dev/null
+++ b/plugins/disabled-Zeroname-local/UiRequestPlugin.py
@@ -0,0 +1,40 @@
+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("/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("\?.*", "", 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("/(?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-Zeroname-local/__init__.py b/plugins/disabled-Zeroname-local/__init__.py
new file mode 100644
index 00000000..889802db
--- /dev/null
+++ b/plugins/disabled-Zeroname-local/__init__.py
@@ -0,0 +1,2 @@
+import UiRequestPlugin
+import SiteManagerPlugin
\ No newline at end of file
diff --git a/plugins/disabled-Zeroname-local/domainLookup.py b/plugins/disabled-Zeroname-local/domainLookup.py
new file mode 100644
index 00000000..ae0c56bc
--- /dev/null
+++ b/plugins/disabled-Zeroname-local/domainLookup.py
@@ -0,0 +1,81 @@
+from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
+import time, json, os, sys, re, socket, json
+
+# Either returns domain's address or none if it doesn't exist
+# Supports subdomains and .bit on the end
+def lookupDomain(domain):
+ domain = domain.lower()
+
+ #remove .bit on end
+ if domain[-4:] == ".bit":
+ domain = domain[0:-4]
+
+ #check for subdomain
+ if domain.find(".") != -1:
+ subdomain = domain[0:domain.find(".")]
+ domain = domain[domain.find(".")+1:]
+ else:
+ subdomain = ""
+
+ try:
+ domain_object = rpc.name_show("d/"+domain)
+ except:
+ #domain doesn't exist
+ return None
+
+ domain_json = json.loads(domain_object['value'])
+
+ try:
+ domain_address = domain_json["zeronet"][subdomain]
+ except:
+ #domain exists but doesn't have any zeronet value
+ return None
+
+ return domain_address
+
+# Loading config...
+
+# Check whether platform is on windows or linux
+# On linux namecoin is installed under ~/.namecoin, while on on windows it is in %appdata%/Namecoin
+
+if sys.platform == "win32":
+ namecoin_location = os.getenv('APPDATA') + "/Namecoin/"
+else:
+ namecoin_location = os.path.expanduser("~/.namecoin/")
+
+# Getting rpc connect details
+namecoin_conf = open(namecoin_location + "namecoin.conf").read()
+
+# Connecting to RPC
+rpc_user = re.search("rpcuser=(.*)$", namecoin_conf, re.M).group(1)
+rpc_pass = re.search("rpcpassword=(.*)$", namecoin_conf, re.M).group(1)
+rpc_url = "http://%s:%s@127.0.0.1:8336" % (rpc_user, rpc_pass)
+
+rpc = AuthServiceProxy(rpc_url, timeout=60*5)
+
+"""
+while 1:
+ print "Waiting for new block",
+ sys.stdout.flush()
+ while 1:
+ try:
+ rpc = AuthServiceProxy(rpc_url, timeout=60*5)
+ if (int(rpc.getinfo()["blocks"]) > last_block): break
+ time.sleep(1)
+ rpc.waitforblock()
+ print "Found"
+ break # Block found
+ except socket.timeout: # Timeout
+ print ".",
+ sys.stdout.flush()
+ except Exception, err:
+ print "Exception", err.__class__, err
+ time.sleep(5)
+
+ last_block = int(rpc.getinfo()["blocks"])
+ for block_id in range(config["lastprocessed"]+1, last_block+1):
+ processBlock(block_id)
+
+ config["lastprocessed"] = last_block
+ open(config_path, "w").write(json.dumps(config, indent=2))
+"""
\ No newline at end of file