jsftpd
Advanced tools
Comparing version 0.1.0 to 1.0.0
@@ -226,3 +226,2 @@ /* | ||
main._writeToSocket(socket, '504', ' ', `Unsupported auth type ${arg}`, connectionInfo, SocketStateAfterWrite.Open) | ||
socket.end() | ||
} | ||
@@ -229,0 +228,0 @@ } |
{ | ||
"name": "jsftpd", | ||
"id": "jsftpd", | ||
"version": "0.1.0", | ||
"version": "1.0.0", | ||
"description": "FTP server in pure javascript", | ||
@@ -6,0 +6,0 @@ "main": "index.js", |
@@ -5,5 +5,5 @@ # jsftpd | ||
[![GitHub Workflow - CI](https://github.com/mailsvb/jsftpd/workflows/test/badge.svg)](https://github.com/mailsvb/jsftpd/actions?workflow=test) | ||
[![Coverage Status](https://coveralls.io/repos/github/mailsvb/jsftpd/badge.svg?branch=main)](https://coveralls.io/github/mailsvb/jsftpd?branch=main) | ||
[![Coverage Status](https://coveralls.io/repos/github/mailsvb/jsftpd/badge.svg)](https://coveralls.io/github/mailsvb/jsftpd?branch=main) | ||
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/mailsvb/jsftpd)](https://github.com/mailsvb/jsftpd/releases/latest) | ||
[![Npm package version](https://badgen.net/npm/v/express)](https://npmjs.com/package/jsftpd) | ||
[![Npm package version](https://badgen.net/npm/v/jsftpd)](https://npmjs.com/package/jsftpd) | ||
[![Documentation Status](https://readthedocs.org/projects/jsftpd/badge/?version=latest)](https://jsftpd.readthedocs.io/en/latest/?badge=latest) | ||
@@ -10,0 +10,0 @@ [![GitHub license](https://badgen.net/github/license/Naereen/Strapdown.js)](https://github.com/mailsvb/jsftpd/blob/master/LICENSE) |
const { ftpd } = require('../index') | ||
const net = require('net') | ||
const tls = require('tls') | ||
const {PromiseSocket, TimeoutError} = require('promise-socket') | ||
@@ -1453,1 +1454,102 @@ | ||
}); | ||
test('test AUTH message', async () => { | ||
const users = [ | ||
{ | ||
username: 'john', | ||
allowLoginWithoutPassword: true, | ||
} | ||
] | ||
server = new ftpd({cnf: {port: 50021, user: users}}) | ||
expect(server).toBeInstanceOf(ftpd); | ||
server.start() | ||
let content | ||
let promiseSocket = new PromiseSocket(new net.Socket()) | ||
let socket = promiseSocket.stream | ||
await socket.connect(50021, 'localhost') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('220 Welcome') | ||
await promiseSocket.write('AUTH NONE') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('504 Unsupported auth type NONE') | ||
await promiseSocket.write('AUTH TLS') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('234 Using authentication type TLS') | ||
promiseSocket = new PromiseSocket(new tls.connect({socket: socket, rejectUnauthorized: false})) | ||
await promiseSocket.stream.once('secureConnect', function(){}) | ||
await promiseSocket.write('USER john') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('232 User logged in') | ||
await promiseSocket.end() | ||
}); | ||
test('test MLSD message over secure connection', async () => { | ||
const users = [ | ||
{ | ||
username: 'john', | ||
allowLoginWithoutPassword: true, | ||
} | ||
] | ||
server = new ftpd({cnf: {port: 50021, user: users}}) | ||
expect(server).toBeInstanceOf(ftpd); | ||
server.start() | ||
let content | ||
let promiseSocket = new PromiseSocket(new net.Socket()) | ||
let socket = promiseSocket.stream | ||
await socket.connect(50021, 'localhost') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('220 Welcome') | ||
await promiseSocket.write('AUTH NONE') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('504 Unsupported auth type NONE') | ||
await promiseSocket.write('AUTH TLS') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('234 Using authentication type TLS') | ||
promiseSocket = new PromiseSocket(new tls.connect({socket: socket, rejectUnauthorized: false})) | ||
await promiseSocket.stream.once('secureConnect', function(){}) | ||
await promiseSocket.write('USER john') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('232 User logged in') | ||
await promiseSocket.write('PBSZ 0') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('200 PBSZ=0') | ||
await promiseSocket.write('PROT P') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('200 Protection level is P') | ||
await promiseSocket.write('EPSV') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('229 Entering extended passive mode (|||1024|)') | ||
let promiseDataSocket = new PromiseSocket(new tls.connect(1024, 'localhost', {rejectUnauthorized: false})) | ||
let dataSocket = promiseDataSocket.stream | ||
await dataSocket.once('secureConnect', function(){}) | ||
await promiseSocket.write('STOR mytestfile') | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('150 Opening data channel') | ||
await promiseDataSocket.write('SOMETESTCONTENT'); | ||
dataSocket.end() | ||
await promiseDataSocket.end() | ||
content = await promiseSocket.read(); | ||
expect(content.toString().trim()).toBe('226 Successfully transferred "mytestfile"') | ||
await promiseSocket.end() | ||
}); |
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
121980
2350
0
4