more...
This commit is contained in:
parent
2ee2bc178a
commit
10d2f35b7b
20 changed files with 1334 additions and 629 deletions
25
oml/nodes.py
25
oml/nodes.py
|
|
@ -19,6 +19,7 @@ from changelog import Changelog
|
|||
|
||||
import directory
|
||||
from websocket import trigger_event
|
||||
from localnodes import LocalNodes
|
||||
|
||||
ENCODING='base64'
|
||||
|
||||
|
|
@ -26,8 +27,9 @@ class Node(object):
|
|||
online = False
|
||||
download_speed = 0
|
||||
|
||||
def __init__(self, app, user):
|
||||
self._app = app
|
||||
def __init__(self, nodes, user):
|
||||
self._nodes = nodes
|
||||
self._app = nodes._app
|
||||
self.user_id = user.id
|
||||
key = str(user.id)
|
||||
self.vk = ed25519.VerifyingKey(key, encoding=ENCODING)
|
||||
|
|
@ -35,10 +37,15 @@ class Node(object):
|
|||
|
||||
@property
|
||||
def url(self):
|
||||
if ':' in self.host:
|
||||
url = 'http://[%s]:%s' % (self.host, self.port)
|
||||
local = self.get_local()
|
||||
if local:
|
||||
url = 'http://[%s]:%s' % (local['host'], local['port'])
|
||||
print 'using local peer discovery to access node', url
|
||||
else:
|
||||
url = 'http://%s:%s' % (self.host, self.port)
|
||||
if ':' in self.host:
|
||||
url = 'http://[%s]:%s' % (self.host, self.port)
|
||||
else:
|
||||
url = 'http://%s:%s' % (self.host, self.port)
|
||||
return url
|
||||
|
||||
def resolve_host(self):
|
||||
|
|
@ -51,6 +58,11 @@ class Node(object):
|
|||
self.host = None
|
||||
self.port = 9851
|
||||
|
||||
def get_local(self):
|
||||
if self._nodes and self._nodes._local:
|
||||
return self._nodes._local.get(self.user_id)
|
||||
return None
|
||||
|
||||
def request(self, action, *args):
|
||||
if not self.host:
|
||||
self.resolve_host()
|
||||
|
|
@ -211,6 +223,7 @@ class Nodes(Thread):
|
|||
self._app = app
|
||||
self._q = Queue()
|
||||
self._running = True
|
||||
self._local = LocalNodes(app)
|
||||
Thread.__init__(self)
|
||||
self.daemon = True
|
||||
self.start()
|
||||
|
|
@ -238,7 +251,7 @@ class Nodes(Thread):
|
|||
def _add_node(self, user_id):
|
||||
if user_id not in self._nodes:
|
||||
from user.models import User
|
||||
self._nodes[user_id] = Node(self._app, User.get_or_create(user_id))
|
||||
self._nodes[user_id] = Node(self, User.get_or_create(user_id))
|
||||
else:
|
||||
self._nodes[user_id].online = True
|
||||
trigger_event('status', {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue