(self, address, peer_ip=None, peer_port=15441, inner_path="content.json")
| 370 | return ws |
| 371 | |
| 372 | def sitePublish(self, address, peer_ip=None, peer_port=15441, inner_path="content.json"): |
| 373 | global file_server |
| 374 | from Site.Site import Site |
| 375 | from Site import SiteManager |
| 376 | from File import FileServer # We need fileserver to handle incoming file requests |
| 377 | from Peer import Peer |
| 378 | file_server = FileServer() |
| 379 | site = SiteManager.site_manager.get(address) |
| 380 | logging.info("Loading site...") |
| 381 | site.settings["serving"] = True # Serving the site even if its disabled |
| 382 | |
| 383 | try: |
| 384 | ws = self.getWebsocket(site) |
| 385 | logging.info("Sending siteReload") |
| 386 | self.siteCmd(address, "siteReload", inner_path) |
| 387 | |
| 388 | logging.info("Sending sitePublish") |
| 389 | self.siteCmd(address, "sitePublish", {"inner_path": inner_path, "sign": False}) |
| 390 | logging.info("Done.") |
| 391 | |
| 392 | except Exception as err: |
| 393 | logging.info("Can't connect to local websocket client: %s" % err) |
| 394 | logging.info("Creating FileServer....") |
| 395 | file_server_thread = gevent.spawn(file_server.start, check_sites=False) # Dont check every site integrity |
| 396 | time.sleep(0.001) |
| 397 | |
| 398 | # Started fileserver |
| 399 | file_server.portCheck() |
| 400 | if peer_ip: # Announce ip specificed |
| 401 | site.addPeer(peer_ip, peer_port) |
| 402 | else: # Just ask the tracker |
| 403 | logging.info("Gathering peers from tracker") |
| 404 | site.announce() # Gather peers |
| 405 | published = site.publish(5, inner_path) # Push to peers |
| 406 | if published > 0: |
| 407 | time.sleep(3) |
| 408 | logging.info("Serving files (max 60s)...") |
| 409 | gevent.joinall([file_server_thread], timeout=60) |
| 410 | logging.info("Done.") |
| 411 | else: |
| 412 | logging.info("No peers found, sitePublish command only works if you already have visitors serving your site") |
| 413 | |
| 414 | # Crypto commands |
| 415 | def cryptPrivatekeyToAddress(self, privatekey=None): |
no test coverage detected