Move resolveDomain to SiteManager for easier resolver plugins

This commit is contained in:
shortcutme 2019-08-15 03:05:29 +02:00
parent 7801937f74
commit 2bdd073608
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
2 changed files with 23 additions and 39 deletions

View file

@ -21,21 +21,13 @@ class SiteManagerPlugin(object):
if not self.get(config.bit_resolver): if not self.get(config.bit_resolver):
self.need(config.bit_resolver) # Need ZeroName site self.need(config.bit_resolver) # Need ZeroName site
# 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 # Return: True if the address is .bit domain
def isBitDomain(self, address): def isBitDomain(self, address):
return re.match(r"(.*?)([A-Za-z0-9_-]+\.bit)$", address) return re.match(r"(.*?)([A-Za-z0-9_-]+\.bit)$", address)
# Resolve domain # Resolve domain
# Return: The address or None # Return: The address or None
def resolveDomain(self, domain): def resolveBitDomain(self, domain):
domain = domain.lower() domain = domain.lower()
if not self.site_zeroname: if not self.site_zeroname:
self.site_zeroname = self.need(config.bit_resolver) self.site_zeroname = self.need(config.bit_resolver)
@ -52,33 +44,10 @@ class SiteManagerPlugin(object):
self.db_domains_modified = site_zeroname_modified self.db_domains_modified = site_zeroname_modified
return self.db_domains.get(domain) return self.db_domains.get(domain)
# Return or create site and start download site files # Turn domain into address
# Return: Site or None if dns resolve failed def resolveDomain(self, domain):
def need(self, address, *args, **kwargs): return self.resolveBitDomain(domain) or super(SiteManagerPlugin, self).resolveDomain(domain)
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) # Return: True if the address is domain
def isDomain(self, address):
# Return: Site object or None if not found return self.isBitDomain(address) or super(SiteManagerPlugin, self).isDomain(address)
def get(self, address):
if not self.loaded: # Not loaded yet
self.load()
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

View file

@ -135,15 +135,30 @@ class SiteManager(object):
def isDomain(self, address): def isDomain(self, address):
return False return False
def resolveDomain(self, domain):
return False
# Return: Site object or None if not found # Return: Site object or None if not found
def get(self, address): def get(self, address):
if self.isDomain(address):
address_resolved = self.resolveDomain(address)
if address_resolved:
address = address_resolved
if not self.loaded: # Not loaded yet if not self.loaded: # Not loaded yet
self.log.debug("Loading site: %s)..." % address) self.log.debug("Loading site: %s)..." % address)
self.load() self.load()
return self.sites.get(address) site = self.sites.get(address)
return site
# Return or create site and start download site files # Return or create site and start download site files
def need(self, address, all_file=True, settings=None): def need(self, address, all_file=True, settings=None):
if self.isDomain(address):
address_resolved = self.resolveDomain(address)
if address_resolved:
address = address_resolved
from .Site import Site from .Site import Site
site = self.get(address) site = self.get(address)
if not site: # Site not exist yet if not site: # Site not exist yet