P : W jaki sposób Twój własny skrypt może współpracować z programem RaidenFTPD?

O : Dlaczego ktoś mógłby chcieć napisać własny skrypt współpracujący z programem RaidenFTPD? Z powodu wprowadzonego niedawno interface'u ask://, dzięki któremu możesz powiedzieć programowi RaidenFTPD "co ma zrobić", i tak dla przykładu można zabronić użytkownikowi zalogowania się, lub zabronić utworzenia katalogu, czy też zabronić załadowania na serwer pewnych plików.

[SEKCJA1 : Zapytaj zewnętrzne programy czy mogą coś zrobić]

01. dokonaj wyboru najlepszego dla Ciebie języka programowania, w naszym przykładzie użyjemy PHP
02. napisz własny skrypt/program, i przygotuj go
03. otwórz plik konfiguracyjny *.ftpd serwera
04. znajdź linię w sekcji [FTPD] , onNewDir=

*. uwaga : jedynymi zdarzeniami, które obsługują interakcje pytanie/odpowiedź są
- onUserLogin : wykonywane zanim nastąpi zgoda na procedurę logowania użytkownika

- onFilePreUpload : wykonywane zanim użytkownik dostanie zgodę na załadowanie pliku na serwer


- onNewDir : wykonywane zanim użytkownik stworzy katalog

- onFilePreDelete : wykonywane zanim użytkownik usunie plik

- onFileDeleted: wykonywane zanim użytkownik usunie plik * użycie ask:// pozwoli Ci na wyświetlenie wiadomości do klienta ftp

- onDelDir : wykonywane zanim użytkownik skasuje katalog

- onPreCwd : wykonywane zanim nastąpi wydarzenie "zmiana katalogu" (Change Working Directory)

- onFileUploaded : wykonywane zanim plik zostanie załadowany na serwer, * pierwsza linia pliku wynikowego w tym zdarzeniu zostanie zignorowana

- onZipUploaded : wykonywane zanim plik skompresowany .zip zostanie załadowany na serwer, * pierwsza linia pliku wynikowego w tym zdarzeniu zostanie zignorowana

05. w tym przykładzie ścieżka naszego skryptu php to c:\php-bin, a nazwa skryptu to
sitesome.php
06. edytuj linię make it onNewDir=ask://c:\php-bin\php.exe askdir.php %@ %G
07. zwróć uwagę, że skrypt askdir.php musi znajdować się w ścieżce c:\php-bin
08. zwróć uwagę, że zmienna %@ (GCID) to nowa zmienna, i pojawia się dopiero od wersji programu RaidenFTPD v2.1 build 983+
09. zwróć uwagę, że musisz używać wersji programu RaidenFTPD v2.2 build 299+ lub nowszej - lub zmienna ask:// nie będzie działała
10. zwróć uwagę, że %@ jest *WYMAGANE* dla każdego, kto chce stworzyć interface pytanie/odpowiedź (ask/reply)
11. zwróć uwagę, że %G jest zmienną określającą pełna fizyczną ścieżkę, i że nie jest wymagana dla każdej komendy, a my używamy jej wyłącznie dla przykładu
12. kiedy już wykonałeś to, co zamierzyłeś, musisz zapisać plik wynikowy do c:\Program Files\RaidenFTPD\Output\ask-onNewDir.[GCID]
12. przykład: GCID(%@)=a45848 , event=onNewDir, plik wynikowy musisz zapisać do c:\Program Files\RaidenFTPD\Output\ask-onNewDir.a45848
* dla innych zdarzeń będziesz potrzebował ask-onFilePreUpload.a45848 oraz ask-onUserLogin.a45848 ...
13. format pliku wynikowego musi być zgodny z wytycznymi
* pierwsza linia zawiera tylko jeden znak : 0 lub 1, 0 oznacza brak zgody na wykonanie komendy, 1 oznacza zgodę na wykonanie komendy
* od drugiej linii do końca pliku zawiera się wiadomość, którą chcesz przesłać do użytkownika ftp, i może ona składać się z wielu linii
* każda z linii nie powinna być dłuższa niż 80 znaków
* musisz używać znaku "\n" jako znaku nowej linii, nie używaj "\r" ani "\n\r"
* próbkę poprawnego pliku wynikowego "sample/ok.txt" znajdziesz w pakiecie
* próbkę nieprawidłowego pliku wynikowego "sample/fail.txt" znajdziesz w pakiecie

14. serwer sam nie wyczyści zawartości katalogu "Output" - musisz zrobić to sam.

żeby pobrać dodatkowy interface SDK pytanie/odpowiedź (ask/reply), kliknij tutaj

[SEKCJA2 : Zewnętrzne programy mówią serwerowi jakie komendy ma wykonać]

01. należy używać wespół z procedurami z sekcji 1
02. w pliku wynikowym z sekcji 1, pierwsza linia oznacza zawsze zgodę/brak zgody, od drugiej linii możesz używać komend...

aby uruchomić komendę dla bieżącego poziomu (konta) wstaw tą linię do pliku wynikowego (ale nie w pierwszej linijce)

#command<new line>

np.:

#site undupe filename-a<new line>

zauważ, że <new line> oznacza znak nowej linii \n, i nie powinien on być widoczny w zwykłym edytorze tekstowym

uwaga : <new line> oznacza znak nowej linii \n, i nie powinien on być widoczny w zwykłym edytorze tekstowym

uwaga : wykonywane będą zdarzenia niezagnieżdżone, takie, jak w przypadku kiedy wysłałbyś komendę #CWD /xxx na zdarzenie onPreCwd, zdarzenie onPreCwd nie zostanie wywołane ponownie

Jeśli chcesz wykonać polecenie z poziomu "root", użyj następującego schematu

#sudo command

np.:

#sudo site give john 1000

uwaga : nie możesz używać polecenia "sudo" żeby zmienić poziom użytkownika

I to wszystko

 

Copyright © RaidenFTPD TEAM , ALL RIGHTS RESERVED

REVISION 2.2 , 2002/06/08