|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--rheise.jftpd.ServerPI
This is the server protocol interpreter. The main Server object creates one of these for each user connection to interpret user commands. This class implements the Runnable interface so that it can be run as a thread or invoked directly.
Field Summary | |
private java.lang.String |
baseDir
This is effectively the root directory as seen from outside. |
private java.net.Socket |
clientSocket
The client we are talking to. |
private java.lang.Class[] |
commandHandlerArgTypes
Reflection is used to invoke a command handler for a given string command. |
private java.lang.String |
currentDir
The current directory as seen externally. |
private ServerDTP |
dtp
The data transfer process responsible for transferring files to and from the user. |
private java.lang.String |
password
Stores the password of the user. |
private java.io.BufferedReader |
reader
A Reader for reading from the client socket. |
private java.lang.String |
username
Stores the username of the user. |
private java.io.PrintWriter |
writer
A Writer for writing to the client socket. |
Constructor Summary | |
ServerPI(java.net.Socket clientSocket)
Creates a server protocol interpreter for the specified client socket. |
Method Summary | |
(package private) void |
checkLogin()
|
private void |
clientLoop()
The loops on input from the client socket, reading each command and using the reflection API to invoke the appropriate command handler method for that command. |
(package private) java.lang.String |
createNativePath(java.lang.String ftpPath)
Creates a native absolute path from a path string sent from the client. |
int |
handle_abor(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the ABOR command. |
int |
handle_acct(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the ACCT command. |
int |
handle_allo(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the ALLO command. |
int |
handle_appe(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the APPE command. |
int |
handle_cdup(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the CDUP command. |
int |
handle_cwd(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the CWD command. |
int |
handle_dele(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the DELE command. |
int |
handle_help(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the HELP command. |
int |
handle_list(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the LIST command. |
int |
handle_mdtm(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the MDTM command. |
int |
handle_mkd(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the MKD command. |
int |
handle_mode(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the MODE command. |
int |
handle_nlst(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the NLST command. |
int |
handle_noop(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the NOOP command. |
int |
handle_pass(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the PASS command. |
int |
handle_pasv(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the PASV command. |
int |
handle_port(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the PORT command. |
int |
handle_pwd(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the PWD command. |
int |
handle_quit(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the QUIT command. |
int |
handle_rein(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the REIN command. |
int |
handle_rest(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the REST command. |
int |
handle_retr(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the RETR command. |
int |
handle_rmd(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the RMD command. |
int |
handle_rnfr(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the RNFR command. |
int |
handle_rnto(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the RNTO command. |
int |
handle_site(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the SITE command. |
int |
handle_size(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the SIZE command. |
int |
handle_smnt(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the SMNT command. |
int |
handle_stat(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the STAT command. |
int |
handle_stor(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the STOR command. |
int |
handle_stou(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the STOU command. |
int |
handle_stru(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the STRU command. |
int |
handle_syst(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the SYST command. |
int |
handle_type(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the TYPE command. |
int |
handle_user(java.lang.String line,
java.util.StringTokenizer st)
Command handler for the USER command. |
(package private) int |
reply(int code,
java.lang.String text)
Writes a reply line to the client socket. |
(package private) java.lang.String |
resolvePath(java.lang.String path)
Resolves an FTP given by the client. |
void |
run()
Runs the protocol interpreter for a client. |
Methods inherited from class java.lang.Object |
|
Field Detail |
private java.net.Socket clientSocket
private java.io.BufferedReader reader
private java.io.PrintWriter writer
private ServerDTP dtp
private java.lang.Class[] commandHandlerArgTypes
private java.lang.String username
private java.lang.String password
private final java.lang.String baseDir
private java.lang.String currentDir
Constructor Detail |
public ServerPI(java.net.Socket clientSocket) throws java.io.IOException
Method Detail |
public void run()
private void clientLoop() throws java.lang.Exception
public int handle_user(java.lang.String line, java.util.StringTokenizer st) throws CommandException
USER %SP% %username% %CRLF%
public int handle_pass(java.lang.String line, java.util.StringTokenizer st) throws CommandException
PASS %SP% %password% %CRLF%
public int handle_acct(java.lang.String line, java.util.StringTokenizer st) throws CommandException
ACCT %SP% %account-information% %CRLF%
public int handle_cwd(java.lang.String line, java.util.StringTokenizer st) throws CommandException
CWD %SP% %pathname% %CRLF%
public int handle_cdup(java.lang.String line, java.util.StringTokenizer st) throws CommandException
CDUP %CRLF%
public int handle_smnt(java.lang.String line, java.util.StringTokenizer st) throws CommandException
SMNT %SP% %pathname% %CRLF%
public int handle_quit(java.lang.String line, java.util.StringTokenizer st) throws CommandException
QUIT %CRLF%
public int handle_rein(java.lang.String line, java.util.StringTokenizer st) throws CommandException
REIN %CRLF%
public int handle_port(java.lang.String line, java.util.StringTokenizer st) throws CommandException
PORT %SP% %host-port% %CRLF%
public int handle_pasv(java.lang.String line, java.util.StringTokenizer st) throws CommandException
PASV %CRLF%
public int handle_type(java.lang.String line, java.util.StringTokenizer st) throws CommandException
TYPE %SP% %type-code% %CRLF%
public int handle_stru(java.lang.String line, java.util.StringTokenizer st) throws CommandException
STRU %SP% %structure-code% %CRLF%
public int handle_mode(java.lang.String line, java.util.StringTokenizer st) throws CommandException
MODE %SP% %mode-code% %CRLF%
public int handle_retr(java.lang.String line, java.util.StringTokenizer st) throws CommandException
RETR %SP% %pathname% %CRLF%
public int handle_stor(java.lang.String line, java.util.StringTokenizer st) throws CommandException
STOR %SP% %pathname% %CRLF%
public int handle_stou(java.lang.String line, java.util.StringTokenizer st) throws CommandException
STOU %CRLF%
public int handle_appe(java.lang.String line, java.util.StringTokenizer st) throws CommandException
APPE %SP% %pathname% %CRLF%
public int handle_allo(java.lang.String line, java.util.StringTokenizer st) throws CommandException
ALLO %SP% %decimal-integer% [%SP% R %SP% %decimal-integer%] %CRLF%
public int handle_rest(java.lang.String line, java.util.StringTokenizer st) throws CommandException
REST %SP% %marker% %CRLF%
public int handle_rnfr(java.lang.String line, java.util.StringTokenizer st) throws CommandException
RNFR %SP% %pathname% %CRLF%
public int handle_rnto(java.lang.String line, java.util.StringTokenizer st) throws CommandException
RNTO %SP% %pathname% %CRLF%
public int handle_abor(java.lang.String line, java.util.StringTokenizer st) throws CommandException
ABOR %CRLF%
public int handle_dele(java.lang.String line, java.util.StringTokenizer st) throws CommandException
DELE %SP% %pathname% %CRLF%
public int handle_rmd(java.lang.String line, java.util.StringTokenizer st) throws CommandException
RMD %SP% %pathname% %CRLF%
public int handle_mkd(java.lang.String line, java.util.StringTokenizer st) throws CommandException
MKD %SP% %pathname% %CRLF%
public int handle_pwd(java.lang.String line, java.util.StringTokenizer st) throws CommandException
PWD %CRLF%
public int handle_list(java.lang.String line, java.util.StringTokenizer st) throws CommandException
LIST [%SP% %pathname%] %CRLF%
public int handle_nlst(java.lang.String line, java.util.StringTokenizer st) throws CommandException
NLST [%SP% %pathname%] %CRLF%
public int handle_site(java.lang.String line, java.util.StringTokenizer st) throws CommandException
SITE %SP% %string% %CRLF%
public int handle_syst(java.lang.String line, java.util.StringTokenizer st) throws CommandException
SYST %CRLF%
public int handle_stat(java.lang.String line, java.util.StringTokenizer st) throws CommandException
STAT [%SP% %pathname%] %CRLF%
public int handle_help(java.lang.String line, java.util.StringTokenizer st) throws CommandException
HELP [%SP% %string%] %CRLF%
public int handle_noop(java.lang.String line, java.util.StringTokenizer st) throws CommandException
NOOP %CRLF%
public int handle_size(java.lang.String line, java.util.StringTokenizer st) throws CommandException
SIZE %SP% %pathname% %CRLF%
public int handle_mdtm(java.lang.String line, java.util.StringTokenizer st) throws CommandException
MDTM %SP% %pathname% %CRLF%
int reply(int code, java.lang.String text)
code
- the reply code.text
- the string message to include in the reply.java.lang.String createNativePath(java.lang.String ftpPath)
java.lang.String resolvePath(java.lang.String path)
void checkLogin() throws CommandException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |