mirror of https://github.com/huashengdun/webssh
Refactored code
parent
ed95a68666
commit
923565ff03
29
main.py
29
main.py
|
@ -119,23 +119,24 @@ class Worker(object):
|
||||||
|
|
||||||
class MixinHandler(object):
|
class MixinHandler(object):
|
||||||
|
|
||||||
def get_addr(self):
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(MixinHandler, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_client_addr(self):
|
||||||
ip = self.request.headers.get('X-Real-Ip')
|
ip = self.request.headers.get('X-Real-Ip')
|
||||||
port = self.request.headers.get('X-Real-Port')
|
port = self.request.headers.get('X-Real-Port')
|
||||||
|
addr = None
|
||||||
|
|
||||||
if ip and port:
|
if ip and port:
|
||||||
addr = (ip, int(port))
|
addr = (ip, int(port))
|
||||||
elif not ip and not port:
|
elif ip or port:
|
||||||
if not getattr(self, 'stream', None):
|
logging.warn('Wrong nginx configuration.')
|
||||||
self.stream = self.request.connection.stream
|
|
||||||
addr = self.stream.socket.getpeername()
|
|
||||||
else:
|
|
||||||
raise ValueError('Wrong nginx configuration.')
|
|
||||||
|
|
||||||
return addr
|
return addr
|
||||||
|
|
||||||
|
|
||||||
class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
||||||
|
|
||||||
def get_privatekey(self):
|
def get_privatekey(self):
|
||||||
try:
|
try:
|
||||||
data = self.request.files.get('privatekey')[0]['body']
|
data = self.request.files.get('privatekey')[0]['body']
|
||||||
|
@ -197,6 +198,10 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
||||||
logging.debug(args)
|
logging.debug(args)
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
def get_client_addr(self):
|
||||||
|
return super(IndexHandler, self).get_client_addr() or self.request.\
|
||||||
|
connection.stream.socket.getpeername()
|
||||||
|
|
||||||
def ssh_connect(self):
|
def ssh_connect(self):
|
||||||
ssh = paramiko.SSHClient()
|
ssh = paramiko.SSHClient()
|
||||||
ssh.load_system_host_keys()
|
ssh.load_system_host_keys()
|
||||||
|
@ -229,7 +234,7 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
||||||
logging.error(traceback.format_exc())
|
logging.error(traceback.format_exc())
|
||||||
status = str(e)
|
status = str(e)
|
||||||
else:
|
else:
|
||||||
worker.src_addr = self.get_addr()
|
worker.src_addr = self.get_client_addr()
|
||||||
worker_id = worker.id
|
worker_id = worker.id
|
||||||
workers[worker_id] = worker
|
workers[worker_id] = worker
|
||||||
|
|
||||||
|
@ -241,10 +246,14 @@ class WsockHandler(MixinHandler, tornado.websocket.WebSocketHandler):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.loop = IOLoop.current()
|
self.loop = IOLoop.current()
|
||||||
self.worker_ref = None
|
self.worker_ref = None
|
||||||
super(self.__class__, self).__init__(*args, **kwargs)
|
super(WsockHandler, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_client_addr(self):
|
||||||
|
return super(WsockHandler, self).get_client_addr() or self.stream.\
|
||||||
|
socket.getpeername()
|
||||||
|
|
||||||
def open(self):
|
def open(self):
|
||||||
self.src_addr = self.get_addr()
|
self.src_addr = self.get_client_addr()
|
||||||
logging.info('Connected from {}:{}'.format(*self.src_addr))
|
logging.info('Connected from {}:{}'.format(*self.src_addr))
|
||||||
worker = workers.get(self.get_argument('id'), None)
|
worker = workers.get(self.get_argument('id'), None)
|
||||||
if worker and worker.src_addr[0] == self.src_addr[0]:
|
if worker and worker.src_addr[0] == self.src_addr[0]:
|
||||||
|
|
Loading…
Reference in New Issue