Commit 9999e909 authored by ibuler's avatar ibuler

[Update] 修改models

parent a1b4180d
...@@ -97,6 +97,7 @@ class BaseServer: ...@@ -97,6 +97,7 @@ class BaseServer:
self.send_bytes = 0 self.send_bytes = 0
self.recv_bytes = 0 self.recv_bytes = 0
self.stop_evt = threading.Event() self.stop_evt = threading.Event()
self.chan = None
self.input_data = SizedList(maxsize=1024) self.input_data = SizedList(maxsize=1024)
self.output_data = SizedList(maxsize=1024) self.output_data = SizedList(maxsize=1024)
...@@ -160,27 +161,15 @@ class BaseServer: ...@@ -160,27 +161,15 @@ class BaseServer:
parser = utils.TtyIOParser() parser = utils.TtyIOParser()
return parser.parse_input(self.input_data) return parser.parse_input(self.input_data)
class TelnetServer(BaseServer):
"""
Telnet server
"""
def __init__(self, sock, asset, system_user):
super(TelnetServer, self).__init__()
self.sock = sock
self.asset = asset
self.system_user = system_user
def fileno(self): def fileno(self):
return self.sock.fileno() return self.chan.fileno()
def send(self, b): def send(self, b):
self.parse(b) self.parse(b)
return self.sock.send(b) return self.chan.send(b)
def recv(self, size): def recv(self, size):
data = self.sock.recv(size) data = self.chan.recv(size)
self.session.put_replay(data) self.session.put_replay(data)
if self._input_initial: if self._input_initial:
if self._in_input_state: if self._in_input_state:
...@@ -193,15 +182,26 @@ class TelnetServer(BaseServer): ...@@ -193,15 +182,26 @@ class TelnetServer(BaseServer):
logger.info("Closed server {}".format(self)) logger.info("Closed server {}".format(self))
self.parse(b'') self.parse(b'')
self.stop_evt.set() self.stop_evt.set()
self.sock.close() self.chan.close()
def __getattr__(self, item): def __getattr__(self, item):
return getattr(self.sock, item) return getattr(self.chan, item)
def __str__(self): def __str__(self):
return "<To: {}>".format(str(self.asset)) return "<To: {}>".format(str(self.asset))
class TelnetServer(BaseServer):
"""
Telnet server
"""
def __init__(self, sock, asset, system_user):
super(TelnetServer, self).__init__()
self.chan = sock
self.asset = asset
self.system_user = system_user
class Server(BaseServer): class Server(BaseServer):
""" """
SSH Server SSH Server
...@@ -218,38 +218,12 @@ class Server(BaseServer): ...@@ -218,38 +218,12 @@ class Server(BaseServer):
self.asset = asset self.asset = asset
self.system_user = system_user self.system_user = system_user
def fileno(self):
return self.chan.fileno()
def send(self, b):
self.parse(b)
return self.chan.send(b)
def recv(self, size):
data = self.chan.recv(size)
self.session.put_replay(data)
if self._input_initial:
if self._in_input_state:
self.input_data.append(data)
else:
self.output_data.append(data)
return data
def close(self): def close(self):
logger.info("Closed server {}".format(self)) super().close()
self.parse(b'')
self.stop_evt.set()
self.chan.close()
self.chan.transport.close() self.chan.transport.close()
if self.sock: if self.sock:
self.sock.transport.close() self.sock.transport.close()
def __getattr__(self, item):
return getattr(self.chan, item)
def __str__(self):
return "<To: {}>".format(str(self.asset))
# def __del__(self): # def __del__(self):
# print("GC: Server object has been gc") # print("GC: Server object has been gc")
......
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