Показать сообщение отдельно
  #2 (permalink)  
Старый 25.10.2021, 09:13
Новичок на форуме
Отправить личное сообщение для SazonovAV Посмотреть профиль Найти все сообщения от SazonovAV
 
Регистрация: 25.10.2021
Сообщений: 8

const net = require('net');
const path = require('path');
const fs = require('fs')


/**
 *
 DELE	250	Удалить файл
 RMD	250	Удалить директорию
 CWD	250	Перейти в директорию
 MKD	257	Создать директорию
 PWD	257	Узнать текущую директорию
 QUIT	221	Закончить работу
 TYPE	200	Установить тип передачи
 PORT	200	Перейти в активный режим
 PASV	227	Перейти в пассивный режим
 LIST	150,226	Получить содержимое каталога
 RETR	150,226	Скачать файл
 STOR	150,226	Залить файл
 ABOR	426,226	Отменить передачу
 RNFR	350	Выбрать файл для переименования
 RNTO	250	Переименовать файл
 * @type {Server}
 */

const server = net.createServer({pauseOnConnect: true}, (socket) => {

    console.log(socket.id)

    socket.setTimeout(0)

    // 'connection' listener.
    console.log('client connected');

    socket.on('error', (err) => {
        console.log('Client error:', err)
    });

    socket.on('connect', function (data) {
        console.log('connect:', data)
    });

    socket.on('data', function (data) {
        console.log('data:', data.toString().split('\r\n'))

        const message = data.toString().split('\r\n');

        if (message[0].substr(0,4) === 'AUTH') {
            socket.write('502\r\n 504 \r\n')
        }

        if (message[0] === 'USER anonymous') {
            socket.write('331 \r\n')
        }

        if (message[0] === 'PASS [email]anonymous@example.com[/email]') {
            socket.write('230 \r\n')
        }

        if (message[0] === 'FEAT') {
            socket.write('211 \r\n')
        }

        if (message[0] === 'SYST') {
            socket.write('230 \r\n')
        }

        if (message[0] === 'OPTS UTF8 ON') {
            socket.write('200 \r\n')
        }

        if (message[0] === 'PWD') {
            const command = '257 "\\" \r\n';
            socket.write(command)
        }

        if (message[0].substr(0,4) === 'TYPE') {
            socket.write('200 \r\n')
        }

        if (message[0] === 'PASV') {
            const portByte1 = 21 / 256 | 0;
            const portByte2 = 21 % 256;

            socket.write(`227 PASV OK\r\n`)
        }

        if (message[0].substr(0,4) === 'PORT') {
            socket.write('200 \r\n')
        }

        if (message[0] === 'LIST') {
            socket.write('150\r\n 226\r\n', 'utf8')
        }

        if (message[0] === 'CDUP') {
            socket.write('250 \r\n')
        }

        if (message[0].substr(0,3) === 'CWD') {
            socket.write('250 \r\n')
        }


    });

    socket.on('timeout', () => {
        console.log('Client timeout')
    });

    socket.on('end', () => {
        console.log('client disconnected');
    });

    socket.write('220 Hello World!\n')

    socket.resume()
});
server.on('error', (err) => {
    console.log(err)
});

server.listen(21, '127.0.0.1', () => {
    console.log('opened server on', server.address());
});
Ответить с цитированием