diff --git a/cowrie/core/interact.py b/cowrie/core/interact.py index 6266f2a..83f1b4e 100644 --- a/cowrie/core/interact.py +++ b/cowrie/core/interact.py @@ -36,7 +36,7 @@ class Interact(telnet.Telnet): """ """ if self.interacting != None: - self.interacting.delInteractor(self) + self.interacting.terminal.delInteractor(self) def enableRemote(self, option): @@ -78,7 +78,7 @@ class Interact(telnet.Telnet): else: for c in bytes: if ord(c) == 27: # escape - self.interacting.delInteractor(self) + self.interacting.terminal.delInteractor(self) self.interacting = None self.transport.write( '\r\n** Interactive session closed.\r\n') @@ -109,7 +109,7 @@ class Interact(telnet.Telnet): def sessionClosed(self): """ """ - self.interacting.delInteractor(self) + self.interacting.terminal.delInteractor(self) self.interacting = None self.transport.write('\r\n** Interactive session disconnected.\r\n') @@ -143,7 +143,7 @@ class Interact(telnet.Telnet): session = self.honeypotFactory.sessions[sessionno] self.transport.write( '** Attaching to #%d, hit ESC to return\r\n' % (sessionno,)) - session.addInteractor(self) + session.terminal.addInteractor(self) self.interacting = session diff --git a/cowrie/core/protocol.py b/cowrie/core/protocol.py index 2b9d68a..8b58182 100644 --- a/cowrie/core/protocol.py +++ b/cowrie/core/protocol.py @@ -253,18 +253,6 @@ class HoneyPotInteractiveProtocol(HoneyPotBaseProtocol, recvline.HistoricRecvLin }) - def addInteractor(self, interactor): - """ - """ - self.terminal.interactors.append(interactor) - - - def delInteractor(self, interactor): - """ - """ - self.terminal.interactors.remove(interactor) - - def displayMOTD(self): """ """ @@ -458,6 +446,18 @@ class LoggingServerProtocol(insults.ServerProtocol): self.terminalProtocol.eofReceived() + def addInteractor(self, interactor): + """ + """ + self.interactors.append(interactor) + + + def delInteractor(self, interactor): + """ + """ + self.interactors.remove(interactor) + + def loseConnection(self): """ override super to remove the terminal reset on logout