CtrlFileZillaServer é um conjunto de funções para gerenciar o FileZilla Server
Language Platforms License HitCount
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