Disable all site serving using a global offline argument

This commit is contained in:
shortcutme 2019-04-15 15:06:25 +02:00
parent f6e3a74567
commit 998ec3eb4f
No known key found for this signature in database
GPG Key ID: 5B63BAE6CB9613AE
9 changed files with 26 additions and 19 deletions

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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')

View File

@ -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

View File

@ -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)

View File

@ -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

View 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)