CtrlFileZillaServer é um conjunto de funções para gerenciar o FileZilla Server
FileZilla é um dos melhores servidores FTP gratuitos, fácil de utilizar e muito estável, porem, não possui API. Toda gestão é feita via interface gráfica, o que acaba dificultando um gerenciamento automático do servidor. Para contornar isto, criei um repositório que gerencia as contas de FTP modificando o arquivo XML FileZilla Server.xml localiado na pasta do FileZilla Server.
Você pode baixar o Filezilla server em: https://filezilla-project.org/download.php?type=server
npm install ctrlfilezillaserver
var FilezillaCtrl = require('ctrlfilezillaserver');
Antes de executar alguma das funções precisamos definir o diretório onde o Filezilla Server se encontra. Esta é uma função assíncrona e após sua conclusão é feito as chamadas as funções.
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
// Aqui você faz a chamada a função desejada
}).catch(function(err){
console.log(err);
});
Normalmente o Filezila Server fica no diretório abaixo:
C:\\Program Files (x86)\\FileZilla Server\\
Esta função ira retornar um array com todas as constas, com os dados abaixo:
- Usuário
- Diretório
- Permissões
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_listar().then(function(DadRet){
console.log(JSON.stringify(DadRet));
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
[
{
"Nome": "teste1",
"Diretorio": "C:\\pasta1",
"Permissoes": {
"FileRead": true,
"FileWrite": true,
"FileDelete": true,
"DirCreate": true,
"DirDelete": true,
"DirList": true,
"DirSubdirs": true
}
}
}
]
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
var InfDad = {
Senha: "aaabbb",
Diretorio: "C:\\PastaTeste1",
Permissoes: {
"FileRead": true,
"FileWrite": true,
"FileDelete": true,
"FileAppend": true,
"DirCreate": true,
"DirDelete": true,
"DirList": true,
"DirSubdirs": true,
"IsHome": true,
"AutoCreate": false
}
};
FilezillaCtrl.contas_alterar("teste1", InfDad).then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_alterar_senha("teste1", "aaabbb").then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_alterar_diretorio("teste1", "C:\\PastaTeste1").then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
var InfDad = {
"FileRead": true,
"FileWrite": true,
"FileDelete": true,
"FileAppend": true,
"DirCreate": true,
"DirDelete": true,
"DirList": true,
"DirSubdirs": true,
"IsHome": true,
"AutoCreate": false
} ;
FilezillaCtrl.contas_alterar_permissoes("teste1", InfDad).then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_existe("teste1").then(function(DadRet){
console.log(JSON.stringify(DadRet));
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
- true: Conta existe
- false: Conta não existe
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_deletar("teste1").then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
var InfDad = {
Senha: "aaabbb",
Diretorio: "C:\\PastaTeste1",
Permissoes: {
"FileRead": true,
"FileWrite": true,
"FileDelete": true,
"FileAppend": true,
"DirCreate": true,
"DirDelete": true,
"DirList": true,
"DirSubdirs": true,
"IsHome": true,
"AutoCreate": false
}
};
FilezillaCtrl.contas_criar("teste1", InfDad).then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
O nó de permissões possui as permissões abaixo:
- FileRead: Ler Arquivos
- FileWrite: Criar/Editar Arquivos
- FileDelete: Deletar Arquivos
- DirCreate: Criar Diretório
- DirDelete: Deletar Diretório
- DirList: Listar Diretórios
- DirSubdirs: Exibir Sub Diretórios
Os valores das variaveis é sempre um boolean, onde:
- true: Tem permissão
- false: Não tem permissão
Em todas funções temos o retorno controlado em then e catch (Padrão para funções Promises). Na função catch esta presente um parâmetro que retorna um objeto Error indiando a causa do erro.
FilezillaCtrl.init("C:\\Program Files (x86)\\FileZilla Server\\").then(function(){
FilezillaCtrl.contas_deletar("XXXXXXXXXXX").then(function(){
console.log("OK");
}).catch(function(err){
console.log(err);
});
}).catch(function(err){
console.log(err);
});
Error: Error: Error: Conta nao localizada
at Promise (C:\index.js:535:19)
at new Promise (<anonymous>)
at Object.contas_criar (G:\index.js:362:12)
at G:\tests.js:7:19
Paloma Macetko