def siteDownload(self, address): from Site import Site from Site import SiteManager SiteManager.site_manager.load() address = getPublicKey(address) logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server_thread = gevent.spawn(file_server.start, check_sites=False) site = Site(address) on_completed = gevent.event.AsyncResult() def onComplete(evt): evt.set(True) site.onComplete.once(lambda: onComplete(on_completed)) print "Announcing..." site.announce() s = time.time() print "Downloading..." site.downloadContent("content.json", check_modifications=True) print "Downloaded in %.3fs" % (time.time() - s)
def dbRebuild(self, address): from Site import Site from Site import SiteManager SiteManager.site_manager.load() address = getPublicKey(address) logging.info("Rebuilding site sql cache: %s..." % address) site = SiteManager.site_manager.get(address) s = time.time() site.storage.rebuildDb() logging.info("Done in %.3fs" % (time.time() - s))
def dbQuery(self, address, query): from Site import Site from Site import SiteManager SiteManager.site_manager.load() address = getPublicKey(address) import json site = Site(address) result = [] for row in site.storage.query(query): result.append(dict(row)) print json.dumps(result, indent=4)
def siteCmd(self, address, cmd, parameters): import json from Site import SiteManager address = getPublicKey(address) site = SiteManager.site_manager.get(address) ws = self.getWebsocket(site) ws.send(json.dumps({"cmd": cmd, "params": parameters, "id": 1})) res = json.loads(ws.recv()) if "result" in res: return res["result"] else: return res
def siteAnnounce(self, address): from Site.Site import Site from Site import SiteManager SiteManager.site_manager.load() address = getPublicKey(address) logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server.start() logging.info("Announcing site %s to tracker..." % address) site = Site(address) s = time.time() site.announce() print "Response time: %.3fs" % (time.time() - s) print site.peers
def siteSign(self, address, privatekey=None, passphrase=False, inner_path="content.json", publish=False, remove_missing_optional=False): from Site import Site from Site import SiteManager from Debug import Debug SiteManager.site_manager.load() address = getPublicKey(address) logging.info("Signing site: %s..." % address) site = Site(address, allow_create=False) if passphrase: import getpass passphrase = getpass.getpass( "Type your passphrase (input hidden): ") privatekey = hashlib.sha256( passphrase if isinstance(passphrase, bytes) else passphrase. encode("utf-8")).hexdigest() elif not privatekey: # If no privatekey defined from User import UserManager user = UserManager.user_manager.get() if user: site_data = user.getSiteData(address) privatekey = site_data.get("privatekey") else: privatekey = None if not privatekey: # Not found in users.json, ask from console import getpass privatekey = getpass.getpass("Private key (input hidden):") try: succ = site.content_manager.sign( inner_path=inner_path, privatekey=privatekey, update_changed_files=True, remove_missing_optional=remove_missing_optional) except Exception, err: logging.error("Sign error: %s" % Debug.formatException(err)) succ = False
def siteNeedFile(self, address, inner_path): from Site import Site from Site import SiteManager SiteManager.site_manager.load() address = getPublicKey(address) def checker(): while 1: s = time.time() time.sleep(1) print "Switch time:", time.time() - s gevent.spawn(checker) logging.info("Opening a simple connection server") global file_server from File import FileServer file_server = FileServer("127.0.0.1", 1234) file_server_thread = gevent.spawn(file_server.start, check_sites=False) site = Site(address) site.announce() print site.needFile(inner_path, update=True)