Rev663, Faster SitePublish from command line if fileserver already running, Better OpenSSL lib close for update via webui, Close pyelliptic OpenSSL lib before update
This commit is contained in:
parent
ee70e2f022
commit
5b316180e6
6 changed files with 55 additions and 27 deletions
|
@ -8,7 +8,7 @@ class Config(object):
|
||||||
|
|
||||||
def __init__(self, argv):
|
def __init__(self, argv):
|
||||||
self.version = "0.3.4"
|
self.version = "0.3.4"
|
||||||
self.rev = 656
|
self.rev = 664
|
||||||
self.argv = argv
|
self.argv = argv
|
||||||
self.action = None
|
self.action = None
|
||||||
self.createParser()
|
self.createParser()
|
||||||
|
|
|
@ -74,6 +74,8 @@ class FileRequest(object):
|
||||||
self.actionSetHashfield(params)
|
self.actionSetHashfield(params)
|
||||||
elif cmd == "siteReload":
|
elif cmd == "siteReload":
|
||||||
self.actionSiteReload(params)
|
self.actionSiteReload(params)
|
||||||
|
elif cmd == "sitePublish":
|
||||||
|
self.actionSitePublish(params)
|
||||||
elif cmd == "ping":
|
elif cmd == "ping":
|
||||||
self.actionPing()
|
self.actionPing()
|
||||||
else:
|
else:
|
||||||
|
@ -331,6 +333,15 @@ class FileRequest(object):
|
||||||
|
|
||||||
self.response({"ok": "Reloaded"})
|
self.response({"ok": "Reloaded"})
|
||||||
|
|
||||||
|
def actionSitePublish(self, params):
|
||||||
|
if self.connection.ip != "127.0.0.1" and self.connection.ip != config.ip_external:
|
||||||
|
self.response({"error": "Only local host allowed"})
|
||||||
|
|
||||||
|
site = self.sites.get(params["site"])
|
||||||
|
num = site.publish(inner_path=params.get("inner_path", "content.json"))
|
||||||
|
|
||||||
|
self.response({"ok": "Successfuly published to %s peers" % num})
|
||||||
|
|
||||||
# Send a simple Pong! answer
|
# Send a simple Pong! answer
|
||||||
def actionPing(self):
|
def actionPing(self):
|
||||||
self.response("Pong!")
|
self.response("Pong!")
|
||||||
|
|
|
@ -396,10 +396,15 @@ def ECDSA_SIG_recover_key_GFp(eckey, r, s, msg, msglen, recid, check):
|
||||||
|
|
||||||
|
|
||||||
def closeLibrary():
|
def closeLibrary():
|
||||||
|
handle = ssl._lib._handle
|
||||||
if "FreeLibrary" in dir(_ctypes):
|
if "FreeLibrary" in dir(_ctypes):
|
||||||
_ctypes.FreeLibrary(ssl._lib._handle)
|
_ctypes.FreeLibrary(handle)
|
||||||
|
_ctypes.FreeLibrary(handle)
|
||||||
|
print "OpenSSL closed, handle:", handle
|
||||||
else:
|
else:
|
||||||
_ctypes.dlclose(ssl._lib._handle)
|
_ctypes.dlclose(handle)
|
||||||
|
_ctypes.dlclose(handle)
|
||||||
|
print "OpenSSL dlclosed, handle:", handle
|
||||||
|
|
||||||
|
|
||||||
def getMessagePubkey(message, sig):
|
def getMessagePubkey(message, sig):
|
||||||
|
|
|
@ -440,6 +440,7 @@ def openLibrary():
|
||||||
|
|
||||||
|
|
||||||
def closeLibrary():
|
def closeLibrary():
|
||||||
|
import _ctypes
|
||||||
if "FreeLibrary" in dir(_ctypes):
|
if "FreeLibrary" in dir(_ctypes):
|
||||||
_ctypes.FreeLibrary(OpenSSL._lib._handle)
|
_ctypes.FreeLibrary(OpenSSL._lib._handle)
|
||||||
else:
|
else:
|
||||||
|
|
28
src/main.py
28
src/main.py
|
@ -231,26 +231,23 @@ class Actions(object):
|
||||||
from File import FileServer # We need fileserver to handle incoming file requests
|
from File import FileServer # We need fileserver to handle incoming file requests
|
||||||
from Peer import Peer
|
from Peer import Peer
|
||||||
|
|
||||||
logging.info("Creating FileServer....")
|
logging.info("Loading site...")
|
||||||
file_server = FileServer()
|
|
||||||
file_server_thread = gevent.spawn(file_server.start, check_sites=False) # Dont check every site integrity
|
|
||||||
file_server.openport()
|
|
||||||
|
|
||||||
site = SiteManager.site_manager.list()[address]
|
site = SiteManager.site_manager.list()[address]
|
||||||
site.settings["serving"] = True # Serving the site even if its disabled
|
site.settings["serving"] = True # Serving the site even if its disabled
|
||||||
|
|
||||||
# Notify local client on new content
|
logging.info("Creating FileServer....")
|
||||||
if config.ip_external:
|
file_server = FileServer()
|
||||||
logging.info("Sending siteReload")
|
file_server_thread = gevent.spawn(file_server.start, check_sites=False) # Dont check every site integrity
|
||||||
my_peer = Peer(config.ip_external, config.fileserver_port)
|
time.sleep(0)
|
||||||
logging.info(my_peer.request("siteReload", {"site": site.address, "inner_path": inner_path}))
|
|
||||||
|
|
||||||
|
if not file_server_thread.ready():
|
||||||
|
# Started fileserver
|
||||||
|
file_server.openport()
|
||||||
if peer_ip: # Announce ip specificed
|
if peer_ip: # Announce ip specificed
|
||||||
site.addPeer(peer_ip, peer_port)
|
site.addPeer(peer_ip, peer_port)
|
||||||
else: # Just ask the tracker
|
else: # Just ask the tracker
|
||||||
logging.info("Gathering peers from tracker")
|
logging.info("Gathering peers from tracker")
|
||||||
site.announce() # Gather peers
|
site.announce() # Gather peers
|
||||||
|
|
||||||
published = site.publish(20, inner_path) # Push to 20 peers
|
published = site.publish(20, inner_path) # Push to 20 peers
|
||||||
if published > 0:
|
if published > 0:
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
|
@ -259,6 +256,15 @@ class Actions(object):
|
||||||
logging.info("Done.")
|
logging.info("Done.")
|
||||||
else:
|
else:
|
||||||
logging.info("No peers found, sitePublish command only works if you already have visitors serving your site")
|
logging.info("No peers found, sitePublish command only works if you already have visitors serving your site")
|
||||||
|
else:
|
||||||
|
# Notify local client on new content
|
||||||
|
logging.info("Sending siteReload")
|
||||||
|
my_peer = Peer("127.0.0.1", config.fileserver_port)
|
||||||
|
logging.info(my_peer.request("siteReload", {"site": site.address, "inner_path": inner_path}))
|
||||||
|
logging.info("Sending sitePublish")
|
||||||
|
logging.info(my_peer.request("sitePublish", {"site": site.address, "inner_path": inner_path}))
|
||||||
|
logging.info("Done.")
|
||||||
|
|
||||||
|
|
||||||
# Crypto commands
|
# Crypto commands
|
||||||
def cryptPrivatekeyToAddress(self, privatekey=None):
|
def cryptPrivatekeyToAddress(self, privatekey=None):
|
||||||
|
|
|
@ -21,7 +21,12 @@ def main():
|
||||||
if "lib.opensslVerify" in sys.modules:
|
if "lib.opensslVerify" in sys.modules:
|
||||||
sys.modules["lib.opensslVerify"].opensslVerify.closeLibrary()
|
sys.modules["lib.opensslVerify"].opensslVerify.closeLibrary()
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
print "Error closing openssl", err
|
print "Error closing opensslVerify lib", err
|
||||||
|
try:
|
||||||
|
if "lib.pyelliptic" in sys.modules:
|
||||||
|
sys.modules["lib.pyelliptic"].openssl.closeLibrary()
|
||||||
|
except Exception, err:
|
||||||
|
print "Error closing pyelliptic lib", err
|
||||||
|
|
||||||
# Update
|
# Update
|
||||||
update.update()
|
update.update()
|
||||||
|
|
Loading…
Reference in a new issue