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());
});