Allow listening on different ports on remote and local

This commit is contained in:
Anders Ingemann 2014-11-25 20:43:04 +01:00
parent 90f207897e
commit d88d73c7f1
4 changed files with 22 additions and 12 deletions

View file

@ -2,12 +2,15 @@
class CallbackServer(object):
def __init__(self, listen_port):
def __init__(self, listen_port, remote_port):
self.listen_port = listen_port
self.remote_port = remote_port
def start(self, log_server):
import Pyro4
self.daemon = Pyro4.Daemon('localhost', port=self.listen_port, unixsocket=None)
self.daemon = Pyro4.Daemon(host='localhost', port=self.listen_port,
nathost='localhost', natport=self.remote_port,
unixsocket=None)
self.daemon.register(log_server)
def serve():

View file

@ -27,7 +27,8 @@ def main():
manager.start()
server = manager.rpc_server
from callback import CallbackServer
callback_server = CallbackServer(manager.local_callback_port)
callback_server = CallbackServer(listen_port=manager.local_callback_port,
remote_port=manager.remote_callback_port)
from bootstrapvz.base.log import LogServer
log_server = LogServer()
try:

View file

@ -5,7 +5,7 @@ def main():
from . import register_deserialization_handlers
register_deserialization_handlers()
log_forwarder = setup_logging()
server = Server(opts, log_forwarder)
server = Server(opts['--listen'], log_forwarder)
server.start()
@ -34,10 +34,10 @@ Options:
class Server(object):
def __init__(self, opts, log_forwarder):
def __init__(self, listen_port, log_forwarder):
self.stop_serving = False
self.log_forwarder = log_forwarder
self.listen_port = opts['--listen']
self.listen_port = listen_port
def start(self):
import Pyro4

View file

@ -9,13 +9,19 @@ class SSHRPCManager(object):
def __init__(self, settings):
self.settings = settings
[self.local_server_port, self.local_callback_port] = self.getNPorts(2)
[self.remote_server_port, self.remote_callback_port] = self.getNPorts(2)
def getNPorts(self, n, port_range=(1024, 65535)):
import random
self.local_server_port = random.randrange(1024, 65535)
self.local_callback_port = random.randrange(1024, 65535)
# self.remote_server_port = random.randrange(1024, 65535)
# self.remote_callback_port = random.randrange(1024, 65535)
self.remote_server_port = self.local_server_port
self.remote_callback_port = self.local_callback_port
ports = []
for i in range(0, n):
while True:
port = random.randrange(*port_range)
if port not in ports:
ports.append(port)
break
return ports
def start(self):
log.debug('Opening SSH connection')