Команда FTP отправлена ​​с Node.js Код сокета не обработан - PullRequest
1 голос
/ 31 марта 2020

У меня следующий сеанс FTP с использованием te lnet:

$ telnet ftp.fsn.hu 21
Trying 195.228.252.133...
Connected to ftp.fsn.hu.
Escape character is '^]'.
220 ftp.fsn.hu FTP server (Version 6.00LS) ready.
USER anonymous
331 Guest login ok, send your email address as password.
PASS joe@example.com
230 Guest login ok, access restrictions apply.

Я попытался автоматизировать это:

var net = require('net');

var sock = net.Socket();

var regex220 = /^220/;

var regex331 = /^331/;

var regex230 = /^230/;

sock.on('data', function (buffer)
  { console.log('data received:\n' + buffer);

    if (buffer.toString().match(regex220) !== null)
    {
      sock.write('USER anonymous');
      console.log("sent: 'USER anonymous'");
    } else if (buffer.toString().match(regex331) !== null)
    {
      sock.write('PASS joe@example.com');
      console.log("sent: 'PASS joe@example.com'");
    } else if (buffer.toString().match(regex230) !== null)
    {
      console.log('LOGGED IN');
    }
  });

sock.connect(21, 'ftp.fsn.hu');

Запуск этого на Fedora 32 и Node.js 12.16. 1 Я получаю

$ node fsn.js
data received:
220 ftp.fsn.hu FTP server (Version 6.00LS) ready.

sent: 'USER anonymous'

и он там висит.

Почему эта программа не проходит go во втором и третьем раунде?

1 Ответ

1 голос
/ 01 апреля 2020

Вы должны прервать (отправить) команду с помощью CRLF:

sock.write('USER anonymous\r\n');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...