Author: elecharny
Date: Wed Oct 31 16:35:27 2012
New Revision: 1404234
URL: http://svn.apache.org/viewvc?rev=1404234&view=rev
Log:
Some more table/code reformating
Modified:
mina/site/trunk/content/ftpserver/ftplet.mdtext
mina/site/trunk/content/ftpserver/mailing_list.mdtext
Modified: mina/site/trunk/content/ftpserver/ftplet.mdtext
URL:
http://svn.apache.org/viewvc/mina/site/trunk/content/ftpserver/ftplet.mdtext?rev=1404234&r1=1404233&r2=1404234&view=diff
==============================================================================
--- mina/site/trunk/content/ftpserver/ftplet.mdtext (original)
+++ mina/site/trunk/content/ftpserver/ftplet.mdtext Wed Oct 31 16:35:27 2012
@@ -56,459 +56,110 @@ Provides the client request information
There will be only one instance of Ftplet. During startup the Ftplets will be
initialized. The initialization sequence is same as the Ftplet sequence in the
configuration. Then all notification methods will be called and when the
FtpServer goes down, the Ftplet will be destroyed. The following method
describes all the notification methods.
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Method </TH>
-<TH class="confluenceTh"> Description </TH>
-</TR>
-<TR>
-<TD class="confluenceTd"> onConnect </TD>
-<TD class="confluenceTd"> Client connect notification method. This is the
first method FtpServer will call. If it returns SKIP, IP restriction check,
connection limit check will not be performed and the server will not send the
welcome message (220). </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDisconnect </TD>
-<TD class="confluenceTd"> Client disconnect notification method. This is the
last method FtpServer will call. Whatever it returns, the client connection
will be closed. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> beforeCommand </TD>
-<TD class="confluenceTd"> Called before the server invoke the command. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> afterCommand </TD>
-<TD class="confluenceTd"> Called after the server as invoked the command. </TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| Method | Description |
+|---|---|
+| onConnect | Client connect notification method. This is the first method
FtpServer will call. If it returns SKIP, IP restriction check, connection limit
check will not be performed and the server will not send the welcome message
(220). |
+| onDisconnect | Client disconnect notification method. This is the last
method FtpServer will call. Whatever it returns, the client connection will be
closed. |
+| beforeCommand | Called before the server invoke the command. |
+| afterCommand | Called after the server as invoked the command. |
## DefaultFtplet
DefaultFtplet provides some convenience methods for common FTP commands. Users
can easily extend the DefaultFtplet class and choose what methods to override
and handle.
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Method </TH>
-<TH class="confluenceTh"> Description </TH>
-</TR>
-<TR>
-<TD class="confluenceTd"> onLogin </TD>
-<TD class="confluenceTd"> Client login notification method. This will be
called after the user authentication. In this case the FtpServer has already
sent the login OK (230) reply. This is called during FTP PASS request. The FTP
session will be disconnected in the return value is FtpletResult.DISCONNECT.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteStart </TD>
-<TD class="confluenceTd"> Before file deletion this method will be called.
Before this FtpServer will not check anything like file existence or
permission. The requested file name can be get from request argument. We can
get the file object from the request file system view. This is called in DELE
FTP command. The method should send some responses (like 250, 450, 550) in case
of SKIP return value. In this case, the server will skip the command processing
and the ftplet has to send appropriate response values. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteEnd </TD>
-<TD class="confluenceTd"> This method will be called after the file deletion,
successful or not. In this case the FtpServer has already sent the reply
message. This is called in DELE FTP command. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> This method will be called before the file upload.
The file name can be get from the request argument. We can get the data input
stream from request. This will be called before the permission check. This is
called during STOR command. If the method returns SKIP, it has to send
responses before and after processing. For example, before opening the data
input stream, the method has to notify the client with a response code 150.
Similarly, after the data transfer, the method has to notify the client with a
response code 226. In case of any error, the method should send different
response codes like 450, 425, 426, 551. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadEnd </TD>
-<TD class="confluenceTd"> This notification method will be called to indicate
that the file transfer is successful and the server has send the replies. In
case of any error this method will not be called. This is called in STOR
command. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> This is file download request notification method
called during RETR command. This will be called before the file download. We
can get the file name argument from request. Similarly, the data output stream
can be get from the request. This will be called before the file existance and
permissoin check. If the method returns SKIP, it has to send responses before
and after processing. For example, before opening the data output stream, the
method has to notify the client with a response code 150. Similarly, after the
data transfer, the method has to notify the client with a response code 226. In
case of any error, the method should send different response codes like 450,
425, 426, 551. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadEnd </TD>
-<TD class="confluenceTd"> This notification method will be called to indicate
that the file transfer is successful and the server has send the replies in
RETR command. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirStart </TD>
-<TD class="confluenceTd"> Before directory deletion this method will be called
during RMD command. Before this FtpServer will not check anything like
directory existance or permission. The requested directory name can be get from
request argument. If the method returns the SKIP, it has to send appropriate
response codes to clients like 250, 450, 550. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirEnd </TD>
-<TD class="confluenceTd"> This method will be called after the invocation of
the RMD command. In this case the FtpServer has already sent the reply message.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> Before directory creation this method will be called
during MKD command. Before this FtpServer will not check anything like
directory existance or permission. The requested directory name can be get from
request argument. If it returns SKIP, it has to send appropriate response codes
to clients like 250, 550. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirEnd </TD>
-<TD class="confluenceTd"> This method will be called if the directory creation
is successful in MKD command. In this case the FtpServer has already sent the
reply message. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> This is file append request notification method
called in APPE command. The file name can be get from the request argument. We
can get the data input stream from request. This will be called before the
permission check. If the method returns SKIP, it has to send responses before
and after processing. For example, before opening the data input stream, the
method has to notify the client with a response code 150. Similarly, after the
data transfer, the method has to notify the client with a response
code 226. In case of any error, the method should send
different response codes like 450, 425, 426, 551. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendEnd </TD>
-<TD class="confluenceTd"> This is file append success notification method
called in APPE command. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> This is unique file create request notification
method called in STOU command. We can get the data input stream from request.
This will be called before the permission check. If the method returns SKIP, it
has to send responses before and after processing. For example, before opening
the data input stream, the method has to notify
the client with a response code 150. Similarly, after the data transfer, the
method has to notify the client with a response code 226. In case of any error,
the method should send different response codes like 450, 425, 426, 551. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueEnd </TD>
-<TD class="confluenceTd"> This is unique file create success notification
method called in STOU command. This notification method will be called to
indicate the the server has send the replies. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> This is file rename start notification method called
in RNTO command. This will be called before the file existance or permission
check. The "rename from" file object can be get from request object.
If it returns SKIP, it has to send appropriate response codes like 503, 553,
250. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameEnd </TD>
-<TD class="confluenceTd"> This is file rename success notification method
called in RNFR command. This will be called before the file existance or
permission check. The "rename from" file object an be get from
request object. This notification method will be called after the invocation of
the RNTO command and the server has send the reply message. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onSite </TD>
-<TD class="confluenceTd"> This is SITE command start notification method. It
gives a chance to implement custom SITE command. If this method returns SKIP or
DISCONNECT, the existing SITE commands will not be executed. </TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| Method | Description |
+|---|---|
+| onLogin | Client login notification method. This will be called after the
user authentication. In this case the FtpServer has already sent the login OK
(230) reply. This is called during FTP PASS request. The FTP session will be
disconnected in the return value is FtpletResult.DISCONNECT. |
+| onDeleteStart | Before file deletion this method will be called. Before this
FtpServer will not check anything like file existence or permission. The
requested file name can be get from request argument. We can get the file
object from the request file system view. This is called in DELE FTP command.
The method should send some responses (like 250, 450, 550) in case of SKIP
return value. In this case, the server will skip the command processing and the
ftplet has to send appropriate response values. |
+| onDeleteEnd | This method will be called after the file deletion, successful
or not. In this case the FtpServer has already sent the reply message. This is
called in DELE FTP command. |
+| onUploadStart | This method will be called before the file upload. The file
name can be get from the request argument. We can get the data input stream
from request. This will be called before the permission check. This is called
during STOR command. If the method returns SKIP, it has to send responses
before and after processing. For example, before opening the data input stream,
the method has to notify the client with a response code 150. Similarly, after
the data transfer, the method has to notify the client with a response code
226. In case of any error, the method should send different response codes like
450, 425, 426, 551. |
+| onUploadEnd | This notification method will be called to indicate that the
file transfer is successful and the server has send the replies. In case of any
error this method will not be called. This is called in STOR command. |
+| onDownloadStart | This is file download request notification method called
during RETR command. This will be called before the file download. We can get
the file name argument from request. Similarly, the data output stream can be
get from the request. This will be called before the file existance and
permissoin check. If the method returns SKIP, it has to send responses before
and after processing. For example, before opening the data output stream, the
method has to notify the client with a response code 150. Similarly, after the
data transfer, the method has to notify the client with a response code 226. In
case of any error, the method should send different response codes like 450,
425, 426, 551. |
+| onDownloadEnd | This notification method will be called to indicate that the
file transfer is successful and the server has send the replies in RETR
command. |
+| onRmdirStart | Before directory deletion this method will be called during
RMD command. Before this FtpServer will not check anything like directory
existance or permission. The requested directory name can be get from request
argument. If the method returns the SKIP, it has to send appropriate response
codes to clients like 250, 450, 550. |
+| onRmdirEnd | This method will be called after the invocation of the RMD
command. In this case the FtpServer has already sent the reply message. |
+| onMkdirStart | Before directory creation this method will be called during
MKD command. Before this FtpServer will not check anything like directory
existance or permission. The requested directory name can be get from request
argument. If it returns SKIP, it has to send appropriate response codes to
clients like 250, 550. |
+| onMkdirEnd | This method will be called if the directory creation is
successful in MKD command. In this case the FtpServer has already sent the
reply message. |
+| onAppendStart | This is file append request notification method called in
APPE command. The file name can be get from the request argument. We can get
the data input stream from request. This will be called before the permission
check. If the method returns SKIP, it has to send responses before and after
processing. For example, before opening the data input stream, the method has
to notify the client with a response code 150. Similarly, after the data
transfer, the method has to notify the client with a response code 226. In case
of any error, the method should send different response codes like 450, 425,
426, 551. |
+| onAppendEnd | This is file append success notification method called in APPE
command. |
+| onUploadUniqueStart | This is unique file create request notification method
called in STOU command. We can get the data input stream from request. This
will be called before the permission check. If the method returns SKIP, it has
to send responses before and after processing. For example, before opening the
data input stream, the method has to notify the client with a response code
150. Similarly, after the data transfer, the method has to notify the client
with a response code 226. In case of any error, the method should send
different response codes like 450, 425, 426, 551. |
+| onUploadUniqueEnd | This is unique file create success notification method
called in STOU command. This notification method will be called to indicate the
the server has send the replies. |
+| onRenameStart | This is file rename start notification method called in RNTO
command. This will be called before the file existance or permission check. The
"rename from" file object can be get from request object. If it returns SKIP,
it has to send appropriate response codes like 503, 553, 250. |
+| onRenameEnd | This is file rename success notification method called in RNFR
command. This will be called before the file existance or permission check. The
"rename from" file object an be get from request object. This notification
method will be called after the invocation of the RNTO command and the server
has send the reply message. |
+| onSite | This is SITE command start notification method. It gives a chance
to implement custom SITE command. If this method returns SKIP or DISCONNECT,
the existing SITE commands will not be executed. |
## Response Codes
This section gives an overview on different response codes which might be
useful in developing custom ftplet. These commands might be used when the
ftplet method return value is SKIP.
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Method </TH>
-<TH class="confluenceTh"> Response Code </TH>
-<TH class="confluenceTh"> Description </TH>
-</TR>
-<TR>
-<TD class="confluenceTd"> onConnect </TD>
-<TD class="confluenceTd"> 220 </TD>
-<TD class="confluenceTd"> Service ready for new user. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onConnect </TD>
-<TD class="confluenceTd"> 530 </TD>
-<TD class="confluenceTd"> No server access from the IP. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onConnect </TD>
-<TD class="confluenceTd"> 530 </TD>
-<TD class="confluenceTd"> Maximum server connection has been reached. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDisconnect </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onLogin </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteStart </TD>
-<TD class="confluenceTd"> 250 </TD>
-<TD class="confluenceTd"> Requested file action okay </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteStart </TD>
-<TD class="confluenceTd"> 450 </TD>
-<TD class="confluenceTd"> No permission to delete. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Not a valid file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteStart </TD>
-<TD class="confluenceTd"> 450 </TD>
-<TD class="confluenceTd"> Can't delete file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDeleteEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 150 </TD>
-<TD class="confluenceTd"> File status okay; about to open data connection.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 226 </TD>
-<TD class="confluenceTd"> Transfer complete. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Invalid path. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 425 </TD>
-<TD class="confluenceTd"> Can't open data connection. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 426 </TD>
-<TD class="confluenceTd"> Data connection error. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadStart </TD>
-<TD class="confluenceTd"> 551 </TD>
-<TD class="confluenceTd"> Error on output file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 150 </TD>
-<TD class="confluenceTd"> File status okay; about to open data connection.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 226 </TD>
-<TD class="confluenceTd"> Transfer complete. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> No such file or directory. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Not a plain file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 425 </TD>
-<TD class="confluenceTd"> Can't open data connection. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 426 </TD>
-<TD class="confluenceTd"> Data connection error. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadStart </TD>
-<TD class="confluenceTd"> 551 </TD>
-<TD class="confluenceTd"> Error on input file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onDownloadEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirStart </TD>
-<TD class="confluenceTd"> 250 </TD>
-<TD class="confluenceTd"> Directory removed. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Not a valid directory. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Can't remove directory. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRmdirEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> 250 </TD>
-<TD class="confluenceTd"> Directory created. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Not a valid file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Directory already exists. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Can't create directory. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onMkdirEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 150 </TD>
-<TD class="confluenceTd"> File status okay; about to open data connection.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 226 </TD>
-<TD class="confluenceTd"> Transfer complete. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Not a plain file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 425 </TD>
-<TD class="confluenceTd"> Can't open data connection. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 426 </TD>
-<TD class="confluenceTd"> Data connection error. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendStart </TD>
-<TD class="confluenceTd"> 551 </TD>
-<TD class="confluenceTd"> Error on output file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onAppendEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 150 </TD>
-<TD class="confluenceTd"> File status okay; about to open data connection.
</TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 250 </TD>
-<TD class="confluenceTd"> filename: Transfer started. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 226 </TD>
-<TD class="confluenceTd"> filename: Transfer complete. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Unique file name error. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 550 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 425 </TD>
-<TD class="confluenceTd"> Can't open data connection. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 426 </TD>
-<TD class="confluenceTd"> Data connection error. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueStart </TD>
-<TD class="confluenceTd"> 551 </TD>
-<TD class="confluenceTd"> Error on output file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onUploadUniqueEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 250 </TD>
-<TD class="confluenceTd"> Requested file action okay, file renamed. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 503 </TD>
-<TD class="confluenceTd"> Can't find the file which has to be renamed. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 553 </TD>
-<TD class="confluenceTd"> Not a valid file name. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 553 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 553 </TD>
-<TD class="confluenceTd"> No such file or directory. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameStart </TD>
-<TD class="confluenceTd"> 553 </TD>
-<TD class="confluenceTd"> Can't rename file. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onRenameEnd </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-<TD class="confluenceTd"> <BR class="atl-forced-newline"> </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onSite </TD>
-<TD class="confluenceTd"> 200 </TD>
-<TD class="confluenceTd"> Command SITE okay. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onSite </TD>
-<TD class="confluenceTd"> 530 </TD>
-<TD class="confluenceTd"> Permission denied. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onSite </TD>
-<TD class="confluenceTd"> 502 </TD>
-<TD class="confluenceTd"> Not implemented. </TD>
-</TR>
-<TR>
-<TD class="confluenceTd"> onSite </TD>
-<TD class="confluenceTd"> 500 </TD>
-<TD class="confluenceTd"> Execution failed. </TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| Method | Response Code | Description |
+|---|---|---|
+| onConnect | 220 | Service ready for new user. |
+| onConnect | 530 | No server access from the IP. |
+| onConnect | 530 | Maximum server connection has been reached. |
+| onDisconnect | | |
+| onLogin | | |
+| onDeleteStart | 250 | Requested file action okay |
+| onDeleteStart | 450 | No permission to delete. |
+| onDeleteStart | 550 | Not a valid file. |
+| onDeleteStart | 450 | Can't delete file. |
+| onDeleteEnd | | |
+| onUploadStart | 150 | File status okay; about to open data connection. |
+| onUploadStart | 226 | Transfer complete. |
+| onUploadStart | 550 | Invalid path. |
+| onUploadStart | 550 | Permission denied. |
+| onUploadStart | 425 | Can't open data connection. |
+| onUploadStart | 426 | Data connection error. |
+| onUploadStart | 551 | Error on output file. |
+| onUploadEnd | | |
+| onDownloadStart | 150 | File status okay; about to open data connection. |
+| onDownloadStart | 226 | Transfer complete. |
+| onDownloadStart | 550 | No such file or directory. |
+| onDownloadStart | 550 | Not a plain file. |
+| onDownloadStart | 550 | Permission denied. |
+| onDownloadStart | 425 | Can't open data connection. |
+| onDownloadStart | 426 | Data connection error. |
+| onDownloadStart | 551 | Error on input file. |
+| onDownloadEnd | | |
+| onRmdirStart | 250 | Directory removed. |
+| onRmdirStart | 550 | Not a valid directory. |
+| onRmdirStart | 550 | Permission denied. |
+| onRmdirStart | 550 | Can't remove directory. |
+| onRmdirEnd | | |
+| onMkdirStart | 250 | Directory created. |
+| onMkdirStart | 550 | Not a valid file. |
+| onMkdirStart | 550 | Permission denied |
+| onMkdirStart | 550 | Directory already exists. |
+| onMkdirStart | 550 | Can't create directory. |
+| onMkdirEnd | | |
+| onAppendStart | 150 | File status okay; about to open data connection. |
+| onAppendStart | 226 | Transfer complete. |
+| onAppendStart | 550 | Not a plain file. |
+| onAppendStart | 550 | Permission denied. |
+| onAppendStart | 425 | Can't open data connection. |
+| onAppendStart | 426 | Data connection error. |
+| onAppendStart | 551 | Error on output file. |
+| onAppendEnd | | |
+| onUploadUniqueStart | 150 | File status okay; about to open data connection.
|
+| onUploadUniqueStart | 250 | filename: Transfer started. |
+| onUploadUniqueStart | 226 | filename: Transfer complete. |
+| onUploadUniqueStart | 550 | Unique file name error. |
+| onUploadUniqueStart | 550 | Permission denied. |
+| onUploadUniqueStart | 425 | Can't open data connection. |
+| onUploadUniqueStart | 426 | Data connection error. |
+| onUploadUniqueStart | 551 | Error on output file. |
+| onUploadUniqueEnd | | |
+| onRenameStart | 250 | Requested file action okay, file renamed. |
+| onRenameStart | 503 | Can't find the file which has to be renamed. |
+| onRenameStart | 553 | Not a valid file name. |
+| onRenameStart | 553 | Permission denied. |
+| onRenameStart | 553 | No such file or directory. |
+| onRenameStart | 553 | Can't rename file. |
+| onRenameEnd | | |
+| onSite | 200 | Command SITE okay. |
+| onSite | 530 | Permission denied. |
+| onSite | 502 | Not implemented. |
+| onSite | 500| Execution failed. |
## Configuration
@@ -518,17 +169,14 @@ Ftplet will get the Ftplet specific conf
Ftplets are regular POJOs. If running the server as embedded they can be added
to the FtpletContainer as normal instances of the object. If using the XML
configuration, they are configured and Spring beans within the ftplets element.
Here's an example:
-<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent
panelContent">
-<PRE class="code-java">
-<ftplets>
- <ftplet name=<SPAN class="code-quote">"ftplet1"</SPAN>>
- <beans:bean class=<SPAN
class="code-quote">"org.apache.ftpserver.examples.MyFtplet"</SPAN>>
- <beans:property name=<SPAN class="code-quote">"foo"</SPAN>
value=<SPAN class="code-quote">"123"</SPAN> />
- </beans:bean>
- </ftplet>
-</ftplets>
-</PRE>
-</DIV></DIV>
+ :::XML
+ <ftplets>
+ <ftplet name="ftplet1">
+ <beans:bean
class="org.apache.ftpserver.examples.MyFtplet">
+ <beans:property name="foo" value="123" />
+ </beans:bean>
+ </ftplet>
+ </ftplets>
## Deployment
Modified: mina/site/trunk/content/ftpserver/mailing_list.mdtext
URL:
http://svn.apache.org/viewvc/mina/site/trunk/content/ftpserver/mailing_list.mdtext?rev=1404234&r1=1404233&r2=1404234&view=diff
==============================================================================
--- mina/site/trunk/content/ftpserver/mailing_list.mdtext (original)
+++ mina/site/trunk/content/ftpserver/mailing_list.mdtext Wed Oct 31 16:35:27
2012
@@ -25,71 +25,29 @@ General information about the FtpServer
Please use this list for any questions regarding how to use FtpServer in your
application.
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Subscribe </TH>
-<TD class="confluenceTd"> <A
href="mailto:[email protected]" class="external-link"
rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Unsubscribe </TH>
-<TD class="confluenceTd"> <A
href="mailto:[email protected]" class="external-link"
rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Post </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Archive </TH>
-<TD class="confluenceTd"> <A
href="http://www.mail-archive.com/[email protected]/"
class="external-link"
rel="nofollow">http://www.mail-archive.com/[email protected]/</A>
</TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| | |
+|---|---|
+| Subscribe |
[[email protected]](mailto:[email protected])
|
+| Unsubscribe |
[[email protected]](mailto:[email protected])
|
+| Post |
[[email protected]](mailto:[email protected]) |
+| Archive |
[http://www.mail-archive.com/[email protected]/](http://www.mail-archive.com/[email protected]/)
|
## For Developers
We use the MINA developers list for asking technical questions, discussing
feature suggestions or general questions regarding the project.
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Subscribe </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Unsubscribe </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Post </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Archive </TH>
-<TD class="confluenceTd"> <A
href="http://www.mail-archive.com/[email protected]/" class="external-link"
rel="nofollow">http://www.mail-archive.com/[email protected]/</A> </TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| | |
+|---|---|
+| Subscribe |
[[email protected]](mailto:[email protected]) |
+| Unsubscribe |
[[email protected]](mailto:[email protected]) |
+| Post | [[email protected]](mailto:[email protected]) |
+| Archive |
[http://www.mail-archive.com/[email protected]/](http://www.mail-archive.com/[email protected]/)
|
## Subversion commits
-<DIV class="table-wrap">
-<TABLE class="confluenceTable"><TBODY>
-<TR>
-<TH class="confluenceTh"> Subscribe </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Unsubscribe </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A>
</TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Post </TH>
-<TD class="confluenceTd"> <A href="mailto:[email protected]"
class="external-link" rel="nofollow">[email protected]</A> </TD>
-</TR>
-<TR>
-<TH class="confluenceTh"> Archive </TH>
-<TD class="confluenceTd"> <A
href="http://www.mail-archive.com/[email protected]/"
class="external-link"
rel="nofollow">http://www.mail-archive.com/[email protected]/</A> </TD>
-</TR>
-</TBODY></TABLE>
-</DIV>
+| | |
+|---|---|
+| Subscribe |
[[email protected]](mailto:[email protected]) |
+| Unsubscribe |
[[email protected]](mailto:[email protected])
|
+| Post | [[email protected]](mailto:[email protected]) |
+| Archive |
[http://www.mail-archive.com/[email protected]/](http://www.mail-archive.com/[email protected]/)
|