自定义再见消息

时间:2011-02-24 16:34:32

标签: twisted

我目前正在开发一种蜜罐,它非常模仿vsftpd的行为。我应该在收到QUIT命令时关闭服务器端的连接。协议实例已经子类化了basic.LineReceiver。我正在使用self.transport.loseConnection()关闭连接,并将消息“外部主机关闭的连接”发送到客户端。

我想要的信息是“221再见”。改为显示。什么是现在的骨架(其他部分已被省略,因为它们与手头的问题无关)。

class HoneyProtocol(basic.LineReceiver):
    def lineReceived(self, line):
        line = line.upper()
        if line.startswith("QUIT"):
            self.transport.write("221 Goodbye\n")
            self.transport.loseConnection()

当我这样做时,我收到消息“221 Goodbye”,然后是客户端的“外部主机关闭连接”。

1 个答案:

答案 0 :(得分:2)

twisted.protocols.basic.LineReceiver中没有任何内容可以通过连接发送“外部主机关闭连接”。请注意,这是一个非常常见的字符串,供客户端程序生成本地并向其stdout发出。例如:

exarkun@boson:~$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-6ubuntu2
asdlkjds
Protocol mismatch.
Connection closed by foreign host.
exarkun@boson:~$ 

OpenSSH不会发送“外部主机关闭连接”。 Telnet在外部主机关闭连接之后写出来。