diff --git a/src/Config.py b/src/Config.py index a8a6ef73..8d7de4f8 100644 --- a/src/Config.py +++ b/src/Config.py @@ -8,7 +8,7 @@ class Config(object): def __init__(self, argv): self.version = "0.3.2" - self.rev = 546 + self.rev = 562 self.argv = argv self.action = None self.createParser() diff --git a/src/Peer/PeerHashfield.py b/src/Peer/PeerHashfield.py index 0137ff90..d7eeddc8 100644 --- a/src/Peer/PeerHashfield.py +++ b/src/Peer/PeerHashfield.py @@ -2,7 +2,7 @@ import array import time -class PeerHashfield(): +class PeerHashfield: def __init__(self): self.storage = self.createStoreage() self.time_changed = time.time() diff --git a/src/Site/Site.py b/src/Site/Site.py index 2e1dd8dd..8938268d 100644 --- a/src/Site/Site.py +++ b/src/Site/Site.py @@ -258,8 +258,10 @@ class Site: self.log.debug("Fallback to old-style update") self.redownloadContents() - if not self.settings["own"]: - self.storage.checkFiles(quick_check=True) # Quick check files based on file size + if self.settings["own"]: + self.storage.verifyFiles(quick_check=True) # Check files (need for optional files) + else: + self.storage.checkFiles(quick_check=True) # Quick check and mark bad files based on file size changed, deleted = self.content_manager.loadContent("content.json") diff --git a/src/Worker/WorkerManager.py b/src/Worker/WorkerManager.py index 36efb3e6..ac7ce935 100644 --- a/src/Worker/WorkerManager.py +++ b/src/Worker/WorkerManager.py @@ -139,6 +139,9 @@ class WorkerManager: return False # Workers number already maxed and no starting peers definied if not peers: peers = self.site.peers.values() # No peers definied, use any from site + if type(peers) is set: + peers = list(peers) + random.shuffle(peers) for peer in peers: # One worker for every peer if peers and peer not in peers: diff --git a/src/main.py b/src/main.py index 48e097dd..045cb676 100644 --- a/src/main.py +++ b/src/main.py @@ -7,6 +7,11 @@ import logging # Third party modules import gevent from gevent import monkey +import ssl +# Fix PROTOCOL_SSLv3 not defined +if "PROTOCOL_SSLv3" not in dir(ssl): + ssl.PROTOCOL_SSLv3 = ssl.PROTOCOL_SSLv23 + if "patch_subprocess" in dir(monkey): monkey.patch_all(thread=False, subprocess=False) else: @@ -145,9 +150,15 @@ class Actions(object): logging.info("Signing site: %s..." % address) site = Site(address, allow_create=False) - if not privatekey: # If no privatekey in args then ask it now - import getpass - privatekey = getpass.getpass("Private key (input hidden):") + if not privatekey: # If no privatekey definied + from User import UserManager + user = UserManager.user_manager.get() + site_data = user.getSiteData(address) + privatekey = site_data.get("privatekey") + if not privatekey: + # Not found in users.json, ask from console + import getpass + privatekey = getpass.getpass("Private key (input hidden):") succ = site.content_manager.sign(inner_path=inner_path, privatekey=privatekey, update_changed_files=True) if succ and publish: self.sitePublish(address, inner_path=inner_path) diff --git a/src/util/SslPatch.py b/src/util/SslPatch.py index 408f4c76..41dcfbf8 100644 --- a/src/util/SslPatch.py +++ b/src/util/SslPatch.py @@ -94,5 +94,9 @@ try: except Exception, err: pass +# Fix PROTOCOL_SSLv3 not defined +if "PROTOCOL_SSLv3" not in dir(__ssl__): + __ssl__.PROTOCOL_SSLv3 = __ssl__.PROTOCOL_SSLv23 + logging.debug("Redirected PROTOCOL_SSLv3 to PROTOCOL_SSLv23.") logging.debug("Python SSL version: %s" % __ssl__.OPENSSL_VERSION)