P :Como faco para que o meu script interacta com o RaidenFTPD?

A : Porque alguém quer criar um script que possa ser interativo com RaidenFTPD? Isso é porque com a relação recentemente introduzida ask:// você pode dizer ao RaidenFTPD "o que fazer", para o exemplo, negar o utilizador de entrar, negar o diretório a ser criado, negar ficheiros de serem uploaded.

[SECTION 1 : pedir permissão a aplicacões externas para effectuar algo]

01. primeiro voce escolhe a sua linguage de programacao de escolha ,neste caso nos vamos utilizar PHP
02. escreva o seu proprio script/ ou programa e prepare-o
03. abra o seu ficheiro *.ftpd
04. encontr a linha sob [FTPD] , onNewDir=

*. nota:so unicos eventos que suportao interaccão ask/reply sao:
- onUserLogin : executado antes da procedura login e permitida

- onFilePreUpload : executado antes do utilizador ganhe permisão de upload um ficheiro

- onNewDir : executado antesdo utilizador crie uma directoria

- onFilePreDelete : executado antes to utilizador deleta um ficheiro

- onFileDeleted: executado depois de um utilizador deleta um ficheiro* usando ask:// aqui ira permitir que seja possivle mostar menssagens para o cliente FTP

- onDelDir : executado antes do utilizador apagar uma directoria

- onPreCwd : executado antes do evento de mudar de directoria

- onFileUploaded : executado depois de um fhicheiro ser uploaded, * a primeira linha do ficheiro ouput i ignorada neste evento

- onZipUploaded : executado depois que um ficheiro zip e uploaded , * a primeira linha do ficheiro ouput i ignorada neste evento

05. neste examplo , a nossa biblioteca esta localizada em c:\php-bin , e o nome do script e
sitesome.php
06. edite esta linha e mude para onNewDir=ask://c:\php-bin\php.exe askdir.php %@ %G
07. nota que askdir.php tem que estar dentro de c:\php-bin
08. nota as variavel %@ (GCID) e nova, e so aparece no RaidenFTPD v2.1 build 983+
09. nota que voce ten que utilizar, como minimo,a versao RaidenFTPD v2.2 build 299+ ou este ask:// nao ira fincionar
10. nota que %@ e *REQUIRIDO* para todos os que querem fazer o interface de ask/reply
11. nota que %G a variavel completa ,e nao e requerida para todos os comandos ,nos so a utilizamos aqui como exemplo
12. depois de terminado, voce tem que escrever o ficheiro de output para c:\Program Files\RaidenFTPD\Output\ask-onNewDir.[GCID]
12. eg: GCID(%@)=a45848 , event=onNewDir, tem que escrever o ficheiro de output para c:\Program Files\RaidenFTPD\Output\ask-onNewDir.a45848
* para outros eventos voce precissa de usar ask-onFilePreUpload.a45848 e ask-onUserLogin.a45848 ...
13. o formato dos ficheiros de output devem seguir as seguintes regras:


* a primeira linha contem somente um caráter: 0 ou 1, 0 significam proibir o comando, 1 significam permitir o comando
* da segunda linha à extremidade do ficheiro , contem mensagens que você quer a mostar ao utilizador do ftp, ele pode ser em multi-linhas
* cada linha do texto não deve exceder 80 caráteres
* você deve usar o "\n" como o caráter de linha nova, não use o "\r" ou o "\n\r"
* uma amostra de um ficheiro com a saída bem sucedida pode ser encontrada como "sample/ok.txt" dentro deste pacote
* uma amostra de um ficheiro em que a saída falha, pode ser encontrada como "sample/fail.txt" dentro deste pacote

14. o server não limpará o diretório da saída para você, você necessita limpá-lo manualmente.

para download exemplos adicionais ask/reply interface SDK , carregue aqui

[SECTION 2 : Os programas externos dizem ao server para exectuar alguns comandos ]

01. isto deve ser usado com os procedimentos na seção 1
02. no ficheiro de saída que você fêz na seção 1, a primeira linha estão sempre o allow/disallow, da segunda linha, você pode começar a pôr alguns comandos...

para funcionar um comando sob o nível actual (o cliente atual), ponha esta linha no ficheiro de saída (não na primeira linha)

#command<new line>

i.e.

#site undupe filename-a<new line>

nota: <new line> é o \n do caráter de linha nova, ela não deve ser visível em um editor de texto normal

nota: nenhum evento aninhado será provocado, como se você emitir a # CWD/xxx no evento do onPreCwd, o onPreCwd não será provocado outra vez

Se você desejar executar um comando sob o nível da raiz, use o seguinte formato

#sudo command

i.e.

#sudo site give john 1000

nota: você não pode usar o sudo para mudar o nível do utilizador

E é TUDO

 

Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED

REVISION 2.2 , 2002/06/06