Cached isDomain / resolveDomain functions
This commit is contained in:
parent
9dd5c88da4
commit
924a61309a
3 changed files with 24 additions and 9 deletions
|
@ -198,8 +198,8 @@ class UiRequestPlugin(object):
|
|||
if self.server.site_manager.get(address): # Site already exists
|
||||
return super(UiRequestPlugin, self).actionWrapper(path, extra_headers)
|
||||
|
||||
if self.server.site_manager.isDomain(address):
|
||||
address = self.server.site_manager.resolveDomain(address)
|
||||
if self.isDomain(address):
|
||||
address = self.resolveDomain(address)
|
||||
|
||||
if address:
|
||||
address_sha256 = "0x" + hashlib.sha256(address.encode("utf8")).hexdigest()
|
||||
|
|
|
@ -12,6 +12,7 @@ from Content import ContentDb
|
|||
from Config import config
|
||||
from util import helper
|
||||
from util import RateLimit
|
||||
from util import Cached
|
||||
|
||||
|
||||
@PluginManager.acceptPlugins
|
||||
|
@ -135,13 +136,21 @@ class SiteManager(object):
|
|||
def isDomain(self, address):
|
||||
return False
|
||||
|
||||
@Cached(timeout=10)
|
||||
def isDomainCached(self, address):
|
||||
return self.isDomain(address)
|
||||
|
||||
def resolveDomain(self, domain):
|
||||
return False
|
||||
|
||||
@Cached(timeout=10)
|
||||
def resolveDomainCached(self, domain):
|
||||
return self.resolveDomain(domain)
|
||||
|
||||
# Return: Site object or None if not found
|
||||
def get(self, address):
|
||||
if self.isDomain(address):
|
||||
address_resolved = self.resolveDomain(address)
|
||||
if self.isDomainCached(address):
|
||||
address_resolved = self.resolveDomainCached(address)
|
||||
if address_resolved:
|
||||
address = address_resolved
|
||||
|
||||
|
@ -175,8 +184,8 @@ class SiteManager(object):
|
|||
|
||||
# Return or create site and start download site files
|
||||
def need(self, address, all_file=True, settings=None):
|
||||
if self.isDomain(address):
|
||||
address_resolved = self.resolveDomain(address)
|
||||
if self.isDomainCached(address):
|
||||
address_resolved = self.resolveDomainCached(address)
|
||||
if address_resolved:
|
||||
address = address_resolved
|
||||
|
||||
|
|
|
@ -69,13 +69,19 @@ class UiRequest(object):
|
|||
return True
|
||||
|
||||
if self.isProxyRequest(): # Support for chrome extension proxy
|
||||
if self.server.site_manager.isDomain(host):
|
||||
if self.isDomain(host):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
def isDomain(self, address):
|
||||
return self.server.site_manager.isDomainCached(address)
|
||||
|
||||
def resolveDomain(self, domain):
|
||||
return self.server.site_manager.resolveDomainCached(domain)
|
||||
|
||||
# Call the request handler function base on path
|
||||
def route(self, path):
|
||||
# Restict Ui access by ip
|
||||
|
@ -96,7 +102,7 @@ class UiRequest(object):
|
|||
return iter([ret_error, ret_link])
|
||||
|
||||
# Prepend .bit host for transparent proxy
|
||||
if self.server.site_manager.isDomain(self.env.get("HTTP_HOST")):
|
||||
if self.isDomain(self.env.get("HTTP_HOST")):
|
||||
path = re.sub("^/", "/" + self.env.get("HTTP_HOST") + "/", path)
|
||||
path = re.sub("^http://zero[/]+", "/", path) # Remove begining http://zero/ for chrome extension
|
||||
path = re.sub("^http://", "/", path) # Remove begining http for chrome extension .bit access
|
||||
|
@ -173,7 +179,7 @@ class UiRequest(object):
|
|||
|
||||
# The request is proxied by chrome extension or a transparent proxy
|
||||
def isProxyRequest(self):
|
||||
return self.env["PATH_INFO"].startswith("http://") or (self.server.allow_trans_proxy and self.server.site_manager.isDomain(self.env.get("HTTP_HOST")))
|
||||
return self.env["PATH_INFO"].startswith("http://") or (self.server.allow_trans_proxy and self.isDomain(self.env.get("HTTP_HOST")))
|
||||
|
||||
def isWebSocketRequest(self):
|
||||
return self.env.get("HTTP_UPGRADE") == "websocket"
|
||||
|
|
Loading…
Reference in a new issue