2015-07-12 20:36:46 +02:00
|
|
|
import logging
|
|
|
|
import re
|
2016-11-19 10:56:19 +01:00
|
|
|
import time
|
2015-07-12 20:36:46 +02:00
|
|
|
|
2016-03-22 17:12:22 +01:00
|
|
|
from Config import config
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
from Plugin import PluginManager
|
|
|
|
|
2015-07-12 20:36:46 +02:00
|
|
|
allow_reload = False # No reload supported
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
|
|
|
log = logging.getLogger("ZeronamePlugin")
|
|
|
|
|
|
|
|
|
|
|
|
@PluginManager.registerTo("SiteManager")
|
|
|
|
class SiteManagerPlugin(object):
|
2015-07-12 20:36:46 +02:00
|
|
|
site_zeroname = None
|
2019-10-06 03:08:09 +02:00
|
|
|
db_domains = {}
|
2016-11-19 10:56:19 +01:00
|
|
|
db_domains_modified = None
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
2016-09-06 14:52:55 +02:00
|
|
|
def load(self, *args, **kwargs):
|
|
|
|
super(SiteManagerPlugin, self).load(*args, **kwargs)
|
2016-03-22 17:12:22 +01:00
|
|
|
if not self.get(config.bit_resolver):
|
|
|
|
self.need(config.bit_resolver) # Need ZeroName site
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
2018-10-06 07:35:14 +02:00
|
|
|
# Return: True if the address is .bit domain
|
|
|
|
def isBitDomain(self, address):
|
2019-01-06 15:15:47 +01:00
|
|
|
return re.match(r"(.*?)([A-Za-z0-9_-]+\.bit)$", address)
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
2015-07-12 20:36:46 +02:00
|
|
|
# Resolve domain
|
|
|
|
# Return: The address or None
|
2019-08-15 03:05:29 +02:00
|
|
|
def resolveBitDomain(self, domain):
|
2015-07-12 20:36:46 +02:00
|
|
|
domain = domain.lower()
|
|
|
|
if not self.site_zeroname:
|
2016-03-22 17:12:22 +01:00
|
|
|
self.site_zeroname = self.need(config.bit_resolver)
|
2016-11-19 10:56:19 +01:00
|
|
|
|
|
|
|
site_zeroname_modified = self.site_zeroname.content_manager.contents.get("content.json", {}).get("modified", 0)
|
|
|
|
if not self.db_domains or self.db_domains_modified != site_zeroname_modified:
|
|
|
|
self.site_zeroname.needFile("data/names.json", priority=10)
|
|
|
|
s = time.time()
|
2019-10-06 03:08:09 +02:00
|
|
|
try:
|
|
|
|
self.db_domains = self.site_zeroname.storage.loadJson("data/names.json")
|
|
|
|
except Exception as err:
|
|
|
|
log.error("Error loading names.json: %s" % err)
|
|
|
|
|
2016-11-19 10:56:19 +01:00
|
|
|
log.debug(
|
|
|
|
"Domain db with %s entries loaded in %.3fs (modification: %s -> %s)" %
|
|
|
|
(len(self.db_domains), time.time() - s, self.db_domains_modified, site_zeroname_modified)
|
|
|
|
)
|
|
|
|
self.db_domains_modified = site_zeroname_modified
|
|
|
|
return self.db_domains.get(domain)
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
2019-08-15 03:05:29 +02:00
|
|
|
# Turn domain into address
|
|
|
|
def resolveDomain(self, domain):
|
|
|
|
return self.resolveBitDomain(domain) or super(SiteManagerPlugin, self).resolveDomain(domain)
|
version 0.2.8, Namecoin domains using internal resolver site, --disable_zeromq option to skip backward compatiblity layer and save some memory, connectionserver firstchar error fixes, missing unpacker crash fix, sitemanager class to allow extensions, add loaded plugin list to websocket api, faster content publishing, mark updating file as bad, remove coppersurfer tracker add eddie4, internal server error with error displaying, allow site domains in UiRequest, better progress bar, wait for siteinfo before before using localstorage, csslater hide only if opacity is 0
2015-03-30 23:44:29 +02:00
|
|
|
|
2019-08-15 03:05:29 +02:00
|
|
|
# Return: True if the address is domain
|
|
|
|
def isDomain(self, address):
|
|
|
|
return self.isBitDomain(address) or super(SiteManagerPlugin, self).isDomain(address)
|
2019-10-16 15:42:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
@PluginManager.registerTo("ConfigPlugin")
|
|
|
|
class ConfigPlugin(object):
|
|
|
|
def createArguments(self):
|
|
|
|
group = self.parser.add_argument_group("Zeroname plugin")
|
|
|
|
group.add_argument(
|
|
|
|
"--bit_resolver", help="ZeroNet site to resolve .bit domains",
|
|
|
|
default="1Name2NXVi1RDPDgf5617UoW7xA6YrhM9F", metavar="address"
|
|
|
|
)
|
|
|
|
|
|
|
|
return super(ConfigPlugin, self).createArguments()
|