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.
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.