Commit ced3ef90 authored by Julien Muchembled's avatar Julien Muchembled

wip

parent b52a9e19
...@@ -339,8 +339,11 @@ if args.ping: ...@@ -339,8 +339,11 @@ if args.ping:
class testHMAC(Thread): class testHMAC(Thread):
def run(self): def run(self):
updateHMAC = ('python', '-c', "import urllib, sys; sys.exit(" updateHMAC = (sys.executable, '-c', """if 1:
"204 != urllib.urlopen('http://127.0.0.1/updateHMAC').code)") from urllib.request import urlopen
import sys
sys.exit(204 != urlopen('http://127.0.0.1/updateHMAC').code)
""")
reg1_db = sqlite3.connect('registry/registry.db', isolation_level=None, reg1_db = sqlite3.connect('registry/registry.db', isolation_level=None,
check_same_thread=False) check_same_thread=False)
reg2_db = sqlite3.connect('registry2/registry.db', isolation_level=None, reg2_db = sqlite3.connect('registry2/registry.db', isolation_level=None,
......
...@@ -6,7 +6,7 @@ BABEL_HMAC = 'babel_hmac0', 'babel_hmac1', 'babel_hmac2' ...@@ -6,7 +6,7 @@ BABEL_HMAC = 'babel_hmac0', 'babel_hmac1', 'babel_hmac2'
def getConfig(db, name): def getConfig(db, name):
r = db.execute("SELECT value FROM config WHERE name=?", (name,)).fetchone() r = db.execute("SELECT value FROM config WHERE name=?", (name,)).fetchone()
if r: if r:
return b2a_hex(*r) return b2a_hex(*r).decode()
def killRe6st(node): def killRe6st(node):
for p in psutil.Process(node._screen.pid).children(): for p in psutil.Process(node._screen.pid).children():
......
...@@ -729,7 +729,8 @@ class RegistryServer: ...@@ -729,7 +729,8 @@ class RegistryServer:
self.newHMAC(2, b'') self.newHMAC(2, b'')
self.increaseVersion() self.increaseVersion()
self.setConfig('version', self.version) self.setConfig('version', self.version)
self.network_config['version'] = base64.b64encode(self.version) self.network_config['version'] = \
base64.b64encode(self.version).decode()
self.sendto(self.prefix, 0) self.sendto(self.prefix, 0)
@rpc_private @rpc_private
......
...@@ -380,7 +380,8 @@ class BaseTunnelManager: ...@@ -380,7 +380,8 @@ class BaseTunnelManager:
if prefix == self._prefix: if prefix == self._prefix:
msg = self._processPacket(msg) msg = self._processPacket(msg)
if msg: if msg:
self._sendto(to, '%s\0%c%s' % (prefix, code, msg)) self._sendto(to,
b'%s\0%c%s' % (prefix.encode(), code, msg))
else: else:
self.sendto(prefix, bytes([code | 0x80]) + msg[1:]) self.sendto(prefix, bytes([code | 0x80]) + msg[1:])
return return
...@@ -455,9 +456,7 @@ class BaseTunnelManager: ...@@ -455,9 +456,7 @@ class BaseTunnelManager:
# We got a valid and non-empty message. Always reply # We got a valid and non-empty message. Always reply
# something so that the sender knows we're still connected. # something so that the sender knows we're still connected.
answer = self._processPacket(msg, peer.prefix) answer = self._processPacket(msg, peer.prefix)
self._sendto(to, msg[0:1] + answer.encode() if answer else b'', self._sendto(to, msg[0:1] + answer if answer else b'', peer)
peer)
def _processPacket(self, msg: bytes, peer: x509.Peer|str=None): def _processPacket(self, msg: bytes, peer: x509.Peer|str=None):
c = msg[0] c = msg[0]
...@@ -478,12 +477,13 @@ class BaseTunnelManager: ...@@ -478,12 +477,13 @@ class BaseTunnelManager:
return return
self._makeTunnel(peer, msg) self._makeTunnel(peer, msg)
else: else:
if peer: return ';'.join(
# Don't send country to old nodes (','.join(a.split(',')[:3]) for a in
if self._getPeer(peer).protocol < 7: ';'.join(self._address.values()).split(';'))
return ';'.join(','.join(a.split(',')[:3]) for a in if peer and
';'.join(self._address.values()).split(';')) # Don't send country to old nodes
return ';'.join(self._address.values()) self._getPeer(peer).protocol < 7 else
self._address.values()).encode()
elif not code: # network version elif not code: # network version
if peer: if peer:
try: try:
...@@ -516,14 +516,15 @@ class BaseTunnelManager: ...@@ -516,14 +516,15 @@ class BaseTunnelManager:
self._kill(peer) self._kill(peer)
elif code == 4: # node information elif code == 4: # node information
if not msg: if not msg:
return "%s, %s" % (version.version, platform.platform()) return ("%s, %s" % (version.version,
platform.platform())).encode()
elif code == 5: elif code == 5:
# the registry wants to know the topology for debugging purpose # the registry wants to know the topology for debugging purpose
if not peer or peer == self.cache.registry_prefix: if not peer or peer == self.cache.registry_prefix:
return str(len(self._connection_dict)) + ''.join( return str(len(self._connection_dict)) + ''.join(
' %s/%s' % (int(x, 2), len(x)) ' %s/%s' % (int(x, 2), len(x))
for x in (self._connection_dict, self._served) for x in (self._connection_dict, self._served)
for x in x) for x in x).encode()
elif code == 7: elif code == 7:
# XXX: Quick'n dirty way to log in a common place. # XXX: Quick'n dirty way to log in a common place.
if peer and self._prefix == self.cache.registry_prefix: if peer and self._prefix == self.cache.registry_prefix:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment