Q : Comment votre propre script peut interagir avec RaidenFTPD ?

A : Quelle est l’utilité de créer un script qui peut interagir avec RaidenFTPD ? A cause de la nouvelle interface ask:// ! Vous pouvez maintenant dire à RaidenFTPD "quoi faire", par exemple, interdire à un utilisateur de se logger, interdire la création d’un répertoire, interdire à des fichiers d’être uploadés.

[SECTION 1 : demander à des programmes externes la permission de faire quelque chose]

01. choisissez d’abord votre langage de programmation favori, dans cet exemple ce sera PHP
02. écrivez votre propre script/programme, et débuggez le
03. ouvrez votre fichier serveur *.ftpd
04. trouvez la ligne sous [FTPD] , onNewDir=

*. remarque : les seuls événements qui sont supportés par l’interface ask/reply sont :


- onUserLogin : exécuté avant l’autorisation de login d’un utilisateur

- onFilePreUpload : exécuté avant l’upload d’un fichier par un utilisateur

- onNewDir : exécuté avant la création d’un répertoire par un utilisateur

- onFilePreDelete : exécuté avant l’effacement d’un fichier par un utilisateur

- onFileDeleted: exécuté après l’effacement d’un fichier par un utilisateur, * utiliser ask:// ici permettra d’afficher un message sur le client FTP

- onDelDir : exécuté avant l’effacement d’un répertoire par un utilisateur

- onPreCwd : exécuté avant l’événement Change Working Directory (CWD)

- onFileUploaded : exécuté après l’upload d’un fichier, * la première ligne de votre fichier de sortie est ignorée dans cet événement

- onZipUploaded : exécuté après l’upload d’un fichier par un utilisateur, * la première ligne de votre fichier de sortie est ignorée dans cet événement

05. dans cet exemple, le chemin de la librairie de php est c:\php-bin et le nom du script est sitesome.php
06. éditez la ligne onNewDir=
ask://c:\php-bin\php.exe askdir.php %@ %G
07. remarquez que askdir.php doit être placé dans c:\php-bin
08. remarquez que la variable %@ (GCID) est nouvelle , et apparaît seulement dans RaidenFTPD v2.1 build 983+
09. remarquez que vous devez utiliser au moins RaidenFTPD v2.2 build 299 ou sinon ask:// ne fonctionnera pas
10. remarquez que %@ est *EXIGEE* pour quiconque souhaite créer une interface ask/reply
11. remarquez que la variable %G renvoie le chemin physique complet, et que ce n’est pas indispensable pour toutes les commandes, nous l’avons juste utilisée ici comme exemple
12. après avoir programmé tout ce que vous vouliez faire, vous devez écrire le fichier de sortie dans c:\Program Files\RaidenFTPD\Output\ask-onNewDir.[GCID]
12. exemple : GCID(%@)=a45848 , event=onNewDir, vous devez écrire votre fichier de sortie dans c:\Program Files\RaidenFTPD\Output\ask-onNewDir.a45848
* pour les autres événements vous devez utiliser ask-onFilePreUpload.a45848 et ask-onUserLogin.a45848 ...
13. le format du fichier de sortie doit respecter certaines conditions :
* la première ligne doit contenir seulement un caractère : 0 or 1 , 0 signifie commande non autorisée, 1 signifie commande autorisée
* entre la deuxième ligne et la fin du fichier seront mis les messages que vous voulez afficher sur le client FTP, les lignes multiples sont autorisées
* chacune des lignes de texte ne devra pas excéder 80 caractères
* vous devez utiliser "\n" comme caractère de retour à la ligne, ne pas utiliser "\r" ou "\n\r"
* un exemple de fichier de sortie fonctionnant parfaitement peut être trouvé dans "sample/ok.txt" dans ce package
* un exemple de fichier de sortie défectueux peut être trouvé dans "sample/fail.txt" dans ce package

14. le serveur ne nettoiera pas le répertoire de sortie pour vous, vous devrez le faire vous-même.

pour télécharger le SDK additionnel de l'interface ask/reply cliquez ici

[SECTION 2 : Passer des commandes au serveur avec des programmes externes]

01. cela doit être utilisé avec les procédures de la section 1
02. dans le fichier de sortie que vous avez réalisé dans la section 1, la première ligne est toujours autoriser/interdire, à partir de la seconde ligne vous pouvez introduire des commandes...

Pour passer une commande sous le niveau de l’utilisateur courant, mettez cette ligne dans le fichier de sortie (pas dans la première ligne)

#command<new line>

i.e.

#site undupe filename-a<new line>

remarque : <new line> est le caractère de retour à la ligne \n , qui ne doit pas être visible dans un éditeur de texte normal

remarque : aucun événement supplémentaire ne sera actionné, par exemple si vous envoyez un #CWD /xxx à l’événement onPreCwd , le onPreCwd ne sera pas actionné une fois de plus

Si vous souhaitez passer une commande sous un niveau root, utilisez le format suivant :

#sudo command

cad.

#sudo site give john 1000

remarque : vous ne pouvez pas utiliser sudo pour changer de niveau

C’est TOUT

 

Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED

REVISION 2.2 , 2002/06/06