Rev3153, Download missing sites from sites.json

This commit is contained in:
shortcutme 2017-11-30 19:38:56 +01:00
parent 8b9a8997ac
commit 6b92d011d2
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
3 changed files with 26 additions and 18 deletions

View file

@ -53,7 +53,7 @@ class SiteManagerPlugin(object):
# Return or create site and start download site files
# Return: Site or None if dns resolve failed
def need(self, address, all_file=True):
def need(self, address, *args, **kwargs):
if self.isDomain(address): # Its looks like a domain
address_resolved = self.resolveDomain(address)
if address_resolved:
@ -61,7 +61,7 @@ class SiteManagerPlugin(object):
else:
return None
return super(SiteManagerPlugin, self).need(address, all_file)
return super(SiteManagerPlugin, self).need(address, *args, **kwargs)
# Return: Site object or None if not found
def get(self, address):

View file

@ -10,7 +10,7 @@ class Config(object):
def __init__(self, argv):
self.version = "0.6.0"
self.rev = 3151
self.rev = 3153
self.argv = argv
self.action = None
self.config_file = "zeronet.conf"

View file

@ -24,7 +24,7 @@ class SiteManager(object):
atexit.register(lambda: self.save(recalculate_size=True))
# Load all sites from data/sites.json
def load(self, cleanup=True):
def load(self, cleanup=True, startup=False):
self.log.debug("Loading sites...")
self.loaded = False
from Site import Site
@ -34,17 +34,25 @@ class SiteManager(object):
added = 0
# Load new adresses
for address, settings in json.load(open("%s/sites.json" % config.data_dir)).iteritems():
if address not in self.sites and os.path.isfile("%s/%s/content.json" % (config.data_dir, address)):
s = time.time()
try:
site = Site(address, settings=settings)
site.content_manager.contents.get("content.json")
except Exception, err:
self.log.debug("Error loading site %s: %s" % (address, err))
continue
self.sites[address] = site
self.log.debug("Loaded site %s in %.3fs" % (address, time.time() - s))
added += 1
if address not in self.sites:
if os.path.isfile("%s/%s/content.json" % (config.data_dir, address)):
# Root content.json exists, try load site
s = time.time()
try:
site = Site(address, settings=settings)
site.content_manager.contents.get("content.json")
except Exception, err:
self.log.debug("Error loading site %s: %s" % (address, err))
continue
self.sites[address] = site
self.log.debug("Loaded site %s in %.3fs" % (address, time.time() - s))
added += 1
elif startup:
# No site directory, start download
self.log.debug("Found new site in sites.json: %s" % address)
gevent.spawn(self.need, address, settings=settings)
added += 1
address_found.append(address)
# Remove deleted adresses
@ -126,7 +134,7 @@ class SiteManager(object):
return self.sites.get(address)
# Return or create site and start download site files
def need(self, address, all_file=True):
def need(self, address, all_file=True, settings=None):
from Site import Site
site = self.get(address)
if not site: # Site not exist yet
@ -138,7 +146,7 @@ class SiteManager(object):
if not self.isAddress(address):
return False # Not address: %s % address
self.log.debug("Added new site: %s" % address)
site = Site(address)
site = Site(address, settings=settings)
self.sites[address] = site
if not site.settings["serving"]: # Maybe it was deleted before
site.settings["serving"] = True
@ -158,7 +166,7 @@ class SiteManager(object):
def list(self):
if self.sites is None: # Not loaded yet
self.log.debug("Sites not loaded yet...")
self.load()
self.load(startup=True)
return self.sites