Disable all site serving using a global offline argument
This commit is contained in:
parent
f6e3a74567
commit
998ec3eb4f
9 changed files with 26 additions and 19 deletions
|
@ -69,7 +69,7 @@ class SiteAnnouncerPlugin(object):
|
|||
return None
|
||||
time_full_announced[tracker_address] = time.time()
|
||||
from Site import SiteManager
|
||||
sites = [site for site in SiteManager.site_manager.sites.values() if site.settings["serving"]]
|
||||
sites = [site for site in SiteManager.site_manager.sites.values() if site.isServing()]
|
||||
|
||||
# Create request
|
||||
add_types = self.getOpenedServiceTypes()
|
||||
|
|
|
@ -628,7 +628,7 @@ class FileRequestPlugin(object):
|
|||
|
||||
def actionGetPiecefields(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
return False
|
||||
|
||||
|
@ -642,7 +642,7 @@ class FileRequestPlugin(object):
|
|||
|
||||
def actionSetPiecefields(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
|
|
@ -224,7 +224,7 @@ class ContentDbPlugin(object):
|
|||
for site in list(self.sites.values()):
|
||||
if not site.content_manager.has_optional_files:
|
||||
continue
|
||||
if not site.settings["serving"]:
|
||||
if not site.isServing():
|
||||
continue
|
||||
has_updated_hashfield = next((
|
||||
peer
|
||||
|
|
|
@ -91,7 +91,7 @@ class UiWebsocketPlugin(object):
|
|||
peers_total = len(site.peers)
|
||||
|
||||
# Add myself
|
||||
if site.settings["serving"]:
|
||||
if site.isServing():
|
||||
peers_total += 1
|
||||
if any(site.connection_server.port_opened.values()):
|
||||
connectable += 1
|
||||
|
|
|
@ -241,6 +241,7 @@ class Config(object):
|
|||
self.parser.add_argument('--fileserver_ip_type', help='FileServer ip type', default="dual", choices=["ipv4", "ipv6", "dual"])
|
||||
self.parser.add_argument('--ip_local', help='My local ips', default=ip_local, type=int, metavar='ip', nargs='*')
|
||||
self.parser.add_argument('--ip_external', help='Set reported external ip (tested on start if None)', metavar='ip', nargs='*')
|
||||
self.parser.add_argument('--offline', help='Disable network communication', action='store_true')
|
||||
|
||||
self.parser.add_argument('--disable_udp', help='Disable UDP connections', action='store_true')
|
||||
self.parser.add_argument('--proxy', help='Socks proxy address', metavar='ip:port')
|
||||
|
|
|
@ -103,7 +103,7 @@ class FileRequest(object):
|
|||
# Update a site file request
|
||||
def actionUpdate(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(1)
|
||||
self.connection.badAction(5)
|
||||
|
@ -192,7 +192,7 @@ class FileRequest(object):
|
|||
# Send file content request
|
||||
def handleGetFile(self, params, streaming=False):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
@ -270,7 +270,7 @@ class FileRequest(object):
|
|||
# Peer exchange request
|
||||
def actionPex(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
@ -321,7 +321,7 @@ class FileRequest(object):
|
|||
# Get modified content.json files since
|
||||
def actionListModified(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
@ -336,7 +336,7 @@ class FileRequest(object):
|
|||
|
||||
def actionGetHashfield(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
@ -364,7 +364,7 @@ class FileRequest(object):
|
|||
def actionFindHashIds(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
s = time.time()
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
@ -392,7 +392,7 @@ class FileRequest(object):
|
|||
|
||||
def actionSetHashfield(self, params):
|
||||
site = self.sites.get(params["site"])
|
||||
if not site or not site.settings["serving"]: # Site unknown or not serving
|
||||
if not site or not site.isServing(): # Site unknown or not serving
|
||||
self.response({"error": "Unknown site"})
|
||||
self.connection.badAction(5)
|
||||
return False
|
||||
|
|
|
@ -216,7 +216,7 @@ class FileServer(ConnectionServer):
|
|||
|
||||
# Check site file integrity
|
||||
def checkSite(self, site, check_files=False):
|
||||
if site.settings["serving"]:
|
||||
if site.isServing():
|
||||
site.announce(mode="startup") # Announce site to tracker
|
||||
site.update(check_files=check_files) # Update site's content.json and download changed files
|
||||
site.sendMyHashfield()
|
||||
|
@ -243,7 +243,7 @@ class FileServer(ConnectionServer):
|
|||
check_pool = gevent.pool.Pool(5)
|
||||
# Check sites integrity
|
||||
for site in sorted(list(self.sites.values()), key=lambda site: site.settings.get("modified", 0), reverse=True):
|
||||
if not site.settings["serving"]:
|
||||
if not site.isServing():
|
||||
continue
|
||||
check_thread = check_pool.spawn(self.checkSite, site, check_files) # Check in new thread
|
||||
time.sleep(2)
|
||||
|
@ -264,7 +264,7 @@ class FileServer(ConnectionServer):
|
|||
)
|
||||
|
||||
for address, site in list(self.sites.items()):
|
||||
if not site.settings["serving"]:
|
||||
if not site.isServing():
|
||||
continue
|
||||
|
||||
if not startup:
|
||||
|
@ -274,7 +274,7 @@ class FileServer(ConnectionServer):
|
|||
|
||||
peers_protected = set([])
|
||||
for address, site in list(self.sites.items()):
|
||||
if not site.settings["serving"]:
|
||||
if not site.isServing():
|
||||
continue
|
||||
|
||||
if site.peers:
|
||||
|
@ -314,7 +314,7 @@ class FileServer(ConnectionServer):
|
|||
config.loadTrackersFile()
|
||||
s = time.time()
|
||||
for address, site in list(self.sites.items()):
|
||||
if not site.settings["serving"]:
|
||||
if not site.isServing():
|
||||
continue
|
||||
gevent.spawn(self.announceSite, site).join(timeout=10)
|
||||
time.sleep(1)
|
||||
|
|
|
@ -127,6 +127,12 @@ class Site(object):
|
|||
SiteManager.site_manager.load(False)
|
||||
SiteManager.site_manager.save()
|
||||
|
||||
def isServing(self):
|
||||
if config.offline:
|
||||
return False
|
||||
else:
|
||||
return self.settings["serving"]
|
||||
|
||||
def getSettingsCache(self):
|
||||
back = {}
|
||||
back["bad_files"] = self.bad_files
|
||||
|
@ -736,7 +742,7 @@ class Site(object):
|
|||
def needFile(self, inner_path, update=False, blocking=True, peer=None, priority=0):
|
||||
if self.storage.isFile(inner_path) and not update: # File exist, no need to do anything
|
||||
return True
|
||||
elif self.settings["serving"] is False: # Site not serving
|
||||
elif not self.isServing(): # Site not serving
|
||||
return False
|
||||
else: # Wait until file downloaded
|
||||
self.bad_files[inner_path] = self.bad_files.get(inner_path, 0) + 1 # Mark as bad file
|
||||
|
|
|
@ -358,7 +358,7 @@ class UiRequest(object):
|
|||
self.sendHeader(extra_headers=extra_headers, script_nonce=script_nonce)
|
||||
|
||||
min_last_announce = (time.time() - site.announcer.time_last_announce) / 60
|
||||
if min_last_announce > 60 and site.settings["serving"] and not just_added:
|
||||
if min_last_announce > 60 and site.isServing() and not just_added:
|
||||
site.log.debug("Site requested, but not announced recently (last %.0fmin ago). Updating..." % min_last_announce)
|
||||
gevent.spawn(site.update, announce=True)
|
||||
|
||||
|
|
Loading…
Reference in a new issue