Пользовательское пока сообщение - PullRequest
0 голосов
/ 24 февраля 2011

В настоящее время я работаю над приманкой, которая близко имитирует поведение 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 Ответ

2 голосов
/ 25 февраля 2011

В twisted.protocols.basic.LineReceiver нет ничего, что передавало бы "Соединение закрыто внешним хостом" через соединение.Обратите внимание, что это очень распространенная строка для клиентских программ, которая генерирует локально и отправляет их на стандартный вывод.Например:

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 пишет, что после внешний хост закрывает соединение .

...