FTP server software
Q : Wie kann ihr eigenes Skript mit RaidenFTPD interagieren?

A : Warum sollte jemand ein Skript schreiben wollen das mit RaidenFTPD interagieren kann? Weil Sie RaidenFTPD mit dem neuen ask:// Interface mitteilen können "was zu tun ist". Zum Beispiel, Benutzern verbieten sich anzumelden, das Erstellen von Verzeichnissen verbieten oder das Hochladen von Dateien zu unterbinden.

[ABSCHNITT 1 : Externe Programme nach Erlaubnis fragen etwas zu tun]

01. Zuerst suchen Sie sich ihre Lieblings Programmiersprache aus, in diesem Beispiel verwenden wir PHP
02. Schreiben Sie ihr Programm/Skript
03. öffnen Sie ihre Server Datei *.ftpd
04. Suchen Sie die Zeile unter [FTPD], onNewDir=

*. Anmerkung : Die einzigen Ereignisse die Frage/Antwort Interaktion unterstützen, sind:

- onUserLogin : Wird ausgeführt bevor die Benutzeranmeldung erlaubt wird

- onFilePreUpload : Wird ausgeführt bevor der Benutzer eine Datei hochladen darf

- onNewDir : Wird ausgeführt bevor der Benutzer ein Verzeichnis erstellt

- onFilePreDelete : Wird ausgeführt bevor der Benutzer eine Datei löscht

- onFileDeleted : Wird ausgeführt nachdem der Benutzer eine Datei löscht * Durch ask:// können Sie hier z.B. Nachrichten an den FTP Klienten schicken

- onDelDir : Wird ausgeführt bevor der Benutzer ein Verzeichnis löscht

- onPreCwd : Wird vor einem Verzeichniswechsel ausgeführt

- onFileUploaded : Wird ausgeführt nachdem eine Datei hochgeladen wurde, * Die erste Zeile ihrer Ausgabedatei wird bei diesem Ereignis ignoriert

- onZipUploaded : Wird ausgeführt nachdem eine *.zip Datei hochgeladen wurde, * Die erste Zeile ihrer Ausgabedatei wird bei diesem Ereignis ignoriert

05. In diesem Beispiel ist der Pfad zu unserer PHP Laufzeitbibliothek C:\php-bin, und das Skript heisst sitesome.php
06. ändern Sie die Zeile in onNewDir=ask://c:\php-bin\php.exe askdir.php %@ %G
07. Anmerkung: askdir.php muss sich in C:\php-bin befinden
08. Anmerkung: Die %@ Variable (GCID) ist neu und erst ab RaidenFTPD v2.1 build 983+ enthalten
09. Anmerkung: Sie benötigen mindestens RaidenFTPD v2.2 build 299+ sonst wird ask:// nicht funktionieren
10. Anmerkung: %@ ist Vorraussetzung für jeden der ein ask/reply Interface erstellen will
11. Anmerkung: %G ist der komplette physikalische Pfad und ist nich Vorraussetzung für jedes Kommando. Wir benutzen es an dieser Stelle nur zu Beispielzwecken
12. Nachdem das Skript fertig ist muss die Ausgabedatei nach C:\Programme\RaidenFTPD\Output\ask-onNewDir.[GCID] geschrieben werden
z.B.: GCID(%@)=a45848 , event=onNewDir - Sie müssen ihre Ausgabedatei nach C:\Programme\RaidenFTPD\Output\ask-onNewDir.a45848 schreiben
* Für andere Ereignisse benötigen Sie ask-onFilePreUpload.a45848 und ask-onUserLogin.a45848...
13. Die Ausgabedatei muss sich an folgende Richtlinien halten:
* Die erste Zeile enthält nur ein Zeichen: 0 oder 1, 1 erlaubt das Kommando, 0 verbietet es
* Ab der zweiten Zeile bis zum Ende der Datei enthält sie Nachrichten die dem Benutzer angezeigt werden sollen. Diese können auch mehrzeilig sein.
* Jede Zeile sollte micht länger als 80 Zeichen sein
* Sie müssen "\n" als Zeichen für eine neue Zeile benutzen, benutzen Sie nicht "\r" oder "\n\r"
* Ein Beispiel einer erfolgreichen Ausgabedatei finden Sie unter "sample/ok.txt"
* Ein Beispiel einer fehlgeschlagenen Ausgabedatei finden Sie unter "sample/fail.txt"

14. Der Server wird das Ausgabeverzeichnis nicht für Sie aufräumen, darum müssen Sie sich schon selbst kümmern.

Um das zusätzliche ask/reply Interface SDK herunterzuladen, klicken Sie bitte hier

[ABSCHNITT 2 : Externe Programme weisen den Server an Kommandos auszuführen]

01. Muss mit den Prozeduren aus Abschnitt 1 benutzt werde
02. Die erste Zeile der Ausgabedatei, die Sie im Abschnitt 1 erstellt haben enthält immer die Erlaubnis bzw. das Verbot das Kommando auszuführen. Ab der zweiten Zeile können Sie mit den Kommandos anfangen...

Um ein Kommando unter dem gegenwärtigen Level auszuführen, schreiben Sie folgende Zeile (Nicht in die erste...) in die Ausgabedatei

#Kommando<neue Zeile>

z.B.

#site undupe Dateiname-a<neue Zeile>

Anmerkung: <neue Zeile> ist das Zeichen für eine neue Zeile \n, welches in einem Texteditor nicht sichtbar sein sollte

Anmerkung: Verschachtelte Ereignisse werden nicht ausgeführt. Wenn Sie z.B. ein #CWD /xxx unter onPreCwd senden, wird onPreCwd nicht erneut ausgeführt

Wenn Sie ein Kommando unter dem root Level ausführen wollen, benutzen Sie

#sudo Kommando

z.B.

#sudo site give john 1000

Anmerkung: Sie können sudo nicht verwenden um das Level eines Benutzers zu ändern

Das war's.

 

Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED

REVISION 2.4, 2017-10-24

FTP server | Streaming server | WEB server