Nó js-ftp-srv-exemplo de servidor de ftp simples necessário

Os Últimos Dias em que estou a tentar obter um servidor ftp simples a correr no nó JS.

encontrei um pacote chamado "ftp-srv" com alguma documentação aqui: https://www.npmjs.com/package/ftp-srv

Inspire pelos excertos de código lá eu escrevi um pequeno script:

const FtpSvr = require ( 'ftp-srv' );

const hostname = '0.0.0.0';
const port = 1111

const ftpServer = new FtpSvr ( 'ftp://' + hostname + ':' + port,
{ anonymous: true, greeting : [ "Hello Jong", "Wie gehts?" ] } );

ftpServer.on ( 'login', ( data, resolve, reject ) =>
{
  console.log ( 'data: '    + data );
  console.log ( 'resolve: ' + resolve );
  console.log ( 'reject: '  + reject );

});

ftpServer.on ( 'client-error', (connection, context, error) =>
{
  console.log ( 'connection: '    connection );
  console.log ( 'context: '       context );
  console.log ( 'error: '         error );
});


ftpServer.listen()
.then(() =>
{
  console.log ( `Server running at http://${hostname}:${port}/` );
});

posso iniciar o programa com "nó ftpserver.e funciona sem problemas. Se eu me conectar com um Software FTP-cliente parece se conectar, mas espera pela "mensagem de Boas-Vindas" e fica nesse ponto.

Eu forneci a variável "saudação", mas esse texto não é enviado para o cliente.

procurei muito no google, mas não encontrei nenhum exemplo de trabalho para "ftp-srv".

Acho que o ponto onde tenho de preencher um código é aqui:
ftpServer.on ( 'login', ( data, resolve, reject ) =>
{
  // HERE
});
Ajudava-me muito se alguém pudesse fornecer um código de exemplo para obter uma ligação de trabalho com o cliente e superar a mensagem de saudação.

- - - - Editar - -

O Conselho do jcaron ajudou muito. mais longe agora. Estas são as minhas alterações:
[...]
ftpServer.on ( 'login', ( data, resolve, reject ) =>
{
  resolve ( { root: '/home/peter/apps/ftpfiles' } );
});
[...]

Quando eu me conecto com um cliente agora, o cliente tenta ler o diretório remoto. Depois de 3 tentativas o cliente obter um tempo-limite.

parece que o cliente não consegue aceder ao directório '/home/peter/apps/ftpfiles'. Eu posso dizer que ele existe e tem permissões de leitura/escrita pelo usuário que eu começo o meu "ftpserver.js " - Script.

tentei algumas coisas com um FS-object em vez de raiz:[dir], mas sempre vejo o mesmo comportamento.

pode alguém me ajuda?

- - - - Editar - -

Além disso, simplesmente alterado

const hostname = '0.0.0.0';
#to local address:
const hostname = '192.x.y.z';
E funcionou comigo.

Author: Peter, 2017-09-15

1 answers

Quando você recebe o evento login, você precisa ligar para resolve ou reject com base no que você decidiu qual o resultado da autenticação.

Se considerar que a informação de autenticação está correcta, chame resolve, passando-a como um objecto com os detalhes relevantes, por exemplo:

resolve({root: '/path/to/files/accessible/via/ftp'})

Lembre-se também que se estiver a testar localmente numa rede privada, deverá provavelmente usar o IP local ou 127.0.0.1 como nome da máquina. 0.0.0.0 faz com que use o endereço IP externo.

 3
Author: jcaron, 2017-09-15 08:33:01