Q : Hvordan kan mitt eget skript samhandle med RaidenFTPD?

A : Hvorfor vil noen lage et skript som kan samhandle med RaidenFTPD? Det er fordi du med den nylig introduserte funksjonen ask:// , kan fortelle RaidenFTPD "hva den skal gjøre", for eksempel nekte en bruker å logge inn, nekte en katalog å bli opprettet, eller nekte en fil å bli lastet opp.

[Del 1 : Spør eksterne programmer om lov til å gjøre noe]

01. Velg først programmeringsspråket du vil bruke. I dette eksempelet bruker vi PHP
02. Skriv ditt eget skript/program
03. Åpne konfigurasjonsfilen til serveren (*.ftpd)
04. Finn linjen "onNewDir=" under [FTPD]

*. Merk: de eneste eventene som støtter ask/reply interaksjon er
- onUserLogin : Utført før brukeren får logge inn

- onFilePreUpload : Utført får brukeren får tillatelse til å laste opp en fil

- onNewDir : Utført før brukeren oppretter en katalog

- onFilePreDelete : Utført før brukeren sletter en fil

- onFileDeleted: Utført etter at brukeren har slettet en fil * ved bruk av ask:// kan du vise meldinger til ftp-klienten

- onDelDir : Utført før brukeren sletter en katalog

- onPreCwd : Utført før CWD-eventen, dvs. før brukeren endrer aktiv katalog

- onFileUploaded : Utført etter at en fil har blitt lastet opp, * den første linjen i ut-filen blir ignorert i denne eventen

- onZipUploaded : Utført etter at en zip-fil har blitt lastet opp, * den første linjen i ut-filen blir ignorert i denne eventen

05. I dette eksempelet ligger PHP i katalogen c:\php-bin, og filnavnet til skriptet er askdir.php
06. Endre linjen til onNewDir=ask://c:\php-bin\php.exe askdir.php %@ %G
07. Merk at filen askdir.php må ligge i katalogen c:\php-bin
08. Merk at %@ variabelen (GCID) er ny, den forekommer bare i RaidenFTPD v2.1 build 983+
09. Merk at du må bruke RaidenFTPD v2.2 build 299+ eller nyere, ellers vil ikke ask:// virke
10. Merk at %@ er *PÅKREVD* for alle som vil bruke ask/reply-mulighetene
11. Merk at %G er hele den faktiske katalogen, den er ikke påkrevd for alle kommandoer. Vi bruker den bare her som et eksempel
12. Etter at skriptet har utført det du vil det skal gjøre, må du skrive ut-meldinger til filen
c:\Program Files\RaidenFTPD\Output\ask-onNewDir.[GCID]
12. F.eks: GCID(%@)=a45848, event=onNewDir. Du må da skrive til filen
c:\Program Files\RaidenFTPD\Output\ask-onNewDir.a45848
* for andre events må du skrive til ask-onFilePreUpload.a45848, ask-onUserLogin.a45848 osv.
13. Ut-filens format må følge disse reglene:
* Den første linjen inneholder bare ett tegn: 0 eller 1. 0 betyr nekting av utførelsen av kommandoen, 1 betyr tillatelse til utførelsen av kommandoen
* Fra den andre linjen til slutten av filen, ligger meldinger som du vil vise til brukeren. Meldingen kan gå over flere linjer
* Hver linje bør ikke være lengre enn 80 tegn
* Du må bruke "\n" som linjeseparator, ikke bruk "\r" eller "\n\r"
* Et eksempel på en gyldig ut-fil kan finnes i "sample/ok.txt" i denne pakken
* Et eksempel på en ugyldig ut-fil kan finnes i "sample/fail.txt" i denne pakken

14. Serveren vil ikke rydde opp i ut-katalogen for deg, det må du gjøre selv

Trykk her for å hente ned ask/reply interface SDK

[Del 2 : Eksterne programmer får serveren til å utføre noen kommandoer]

01. Dette må bli brukt sammen med prosedyrene i del 1
02. Som i ut-filen du lagde i del 1, er den første linjen alltid tillat/ikke tillat. Fra og med den andre linjen kan du skrive kommandoer

For å kjøre kommandoer under gjeldende nivå (gjeldende konto), legger du til denne linjen i ut-filen (ikke i første linje)

#command<ny linje>

For eksempel

#site undupe filename-a<ny linje>

Merk: <ny linje> er ny-linje tegnet, "\n", det skal ikke være synlig i en vanlig tekstbehandler

Merk: ingen rekursiv event vil bli utført. Hvis du prøver å utføre en #CWD /xxx i onPreCwd eventen, vil onPreCwd ikke bli utført igjen

Hvis du vil utføre en kommando under rot-nivå, bruker du følgende format

#sudo command

For eksempel

#sudo site give john 1000

Merk: du kan ikke bruke sudo til å endre en brukers nivå

That's ALL

 

Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED

REVISION 2.2 , 2002/06/06