version bump, allow to publihs to specified peer, log sendCmd, add zeronet version to content.js, version to websocket api, force start worker specificed for specificed peer
This commit is contained in:
parent
aae1022c79
commit
185424b815
9 changed files with 18 additions and 9 deletions
|
@ -3,7 +3,7 @@ import ConfigParser
|
|||
|
||||
class Config(object):
|
||||
def __init__(self):
|
||||
self.version = "0.1"
|
||||
self.version = "0.1.1"
|
||||
self.parser = self.createArguments()
|
||||
argv = sys.argv[:] # Copy command line arguments
|
||||
argv = self.parseConfig(argv) # Add arguments from config file
|
||||
|
@ -43,6 +43,8 @@ class Config(object):
|
|||
# SitePublish
|
||||
action = subparsers.add_parser("sitePublish", help='Publish site to other peers: address')
|
||||
action.add_argument('address', help='Site to publish')
|
||||
action.add_argument('peer_ip', help='Peer ip to publish (default: random peers ip from tracker)', default=None, nargs='?')
|
||||
action.add_argument('peer_port', help='Peer port to publish (default: random peer port from tracker)', default=15441, nargs='?')
|
||||
|
||||
# SiteVerify
|
||||
action = subparsers.add_parser("siteVerify", help='Verify site files using md5: address')
|
||||
|
|
|
@ -61,7 +61,7 @@ class FileRequest:
|
|||
|
||||
elif valid == None: # Not changed
|
||||
peer = site.addPeer(*params["peer"], return_peer = True) # Add or get peer
|
||||
self.log.debug("New peer for locked files: %s, tasks: %s" % (peer.key, len(site.worker_manager.tasks)) )
|
||||
self.log.debug("Same version, adding new peer for locked files: %s, tasks: %s" % (peer.key, len(site.worker_manager.tasks)) )
|
||||
for task in site.worker_manager.tasks: # New peer add to every ongoing task
|
||||
if task["peers"]: site.needFile(task["inner_path"], peer=peer, update=True, blocking=False) # Download file from this peer too if its peer locked
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ class Peer:
|
|||
# Send a command to peer
|
||||
def sendCmd(self, cmd, params = {}):
|
||||
if not self.socket: self.connect()
|
||||
self.log.debug("sendCmd: %s" % cmd)
|
||||
try:
|
||||
self.socket.send(msgpack.packb({"cmd": cmd, "params": params}, use_bin_type=True))
|
||||
response = msgpack.unpackb(self.socket.recv())
|
||||
|
|
|
@ -384,7 +384,7 @@ class Site:
|
|||
def signContent(self, privatekey=None):
|
||||
if not self.content: # New site
|
||||
self.log.info("Site not exits yet, loading default content.json values...")
|
||||
self.content = {"files": {}, "title": "%s - ZeroNet_" % self.address, "sign": "", "modified": 0.0, "description": "", "address": self.address, "ignore": ""} # Default content.json
|
||||
self.content = {"files": {}, "title": "%s - ZeroNet_" % self.address, "sign": "", "modified": 0.0, "description": "", "address": self.address, "ignore": "", "zeronet_version": config.version} # Default content.json
|
||||
|
||||
self.log.info("Opening site data directory: %s..." % self.directory)
|
||||
|
||||
|
@ -409,7 +409,8 @@ class Site:
|
|||
content["address"] = self.address # Add files sha1 hash
|
||||
content["files"] = hashed_files # Add files sha1 hash
|
||||
content["modified"] = time.time() # Add timestamp
|
||||
del(content["sign"]) # Delete old site
|
||||
content["zeronet_version"] = config.version # Signer's zeronet version
|
||||
del(content["sign"]) # Delete old sign
|
||||
|
||||
# Signing content
|
||||
from Crypt import CryptBitcoin
|
||||
|
|
|
@ -158,6 +158,7 @@ class UiWebsocket:
|
|||
"fileserver_port": config.fileserver_port,
|
||||
"ui_ip": config.ui_ip,
|
||||
"ui_port": config.ui_port,
|
||||
"version": config.version,
|
||||
"debug": config.debug
|
||||
}
|
||||
self.response(to, ret)
|
||||
|
|
|
@ -20,6 +20,7 @@ class Worker:
|
|||
if not task: # Die, no more task
|
||||
self.manager.log.debug("%s: No task found, stopping" % self.key)
|
||||
break
|
||||
if not task["time_started"]: task["time_started"] = time.time() # Task started now
|
||||
|
||||
if task["workers_num"] > 0: # Wait a bit if someone already working on it
|
||||
self.manager.log.debug("%s: Someone already working on %s, sleeping 1 sec..." % (self.key, task["inner_path"]))
|
||||
|
@ -27,7 +28,6 @@ class Worker:
|
|||
self.manager.log.debug("%s: %s, task done after sleep: %s" % (self.key, task["inner_path"], task["done"]))
|
||||
|
||||
if task["done"] == False:
|
||||
if not task["time_started"]: task["time_started"] = time.time() # Task started now
|
||||
self.task = task
|
||||
task["workers_num"] += 1
|
||||
buff = self.peer.getFile(task["site"].address, task["inner_path"])
|
||||
|
|
|
@ -77,7 +77,7 @@ class WorkerManager:
|
|||
|
||||
# Start workers to process tasks
|
||||
def startWorkers(self, peers=None):
|
||||
if len(self.workers) >= MAX_WORKERS: return False # Workers number already maxed
|
||||
if len(self.workers) >= MAX_WORKERS and not peers: return False # Workers number already maxed
|
||||
if not self.tasks: return False # No task for workers
|
||||
for key, peer in self.site.peers.iteritems(): # One worker for every peer
|
||||
if peers and peer not in peers: continue # If peers definied and peer not valid
|
||||
|
|
|
@ -135,7 +135,7 @@ def siteNeedFile(address, inner_path):
|
|||
print site.needFile(inner_path, update=True)
|
||||
|
||||
|
||||
def sitePublish(address):
|
||||
def sitePublish(address, peer_ip=None, peer_port=15441):
|
||||
from Site import Site
|
||||
from File import FileServer # We need fileserver to handle incoming file requests
|
||||
logging.info("Creating FileServer....")
|
||||
|
@ -147,7 +147,11 @@ def sitePublish(address):
|
|||
return
|
||||
site = file_server.sites[address]
|
||||
site.settings["serving"] = True # Serving the site even if its disabled
|
||||
site.announce() # Gather peers
|
||||
if peer_ip: # Announce ip specificed
|
||||
site.addPeer(peer_ip, peer_port)
|
||||
else: # Just ask the tracker
|
||||
logging.info("Gathering peers from tracker")
|
||||
site.announce() # Gather peers
|
||||
site.publish(20) # Push to 20 peers
|
||||
logging.info("Serving files....")
|
||||
gevent.joinall([file_server_thread])
|
||||
|
|
Loading…
Reference in a new issue