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:
HelloZeroNet 2015-01-16 11:52:42 +01:00
parent aae1022c79
commit 185424b815
9 changed files with 18 additions and 9 deletions

View File

@ -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')

View File

@ -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

View File

@ -149,7 +149,7 @@ class FileServer:
return
if check_sites: # Open port, Update sites, Check files integrity
gevent.spawn(self.checkSites)
gevent.spawn(self.announceSites)
while True:

View File

@ -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())

View File

@ -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

View File

@ -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)

View File

@ -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"])

View File

@ -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

View File

@ -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])