|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.sf.hermesftp.cmd.AbstractFtpCmd net.sf.hermesftp.cmd.AbstractFtpCmdPort net.sf.hermesftp.cmd.impl.FtpCmdEprt
public class FtpCmdEprt
The EPRT Command (EPRT)
The EPRT command allows for the specification of an extended address for the data connection. The extended address MUST consist of the network protocol as well as the network and transport addresses. The format of EPRT is:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
The EPRT command keyword MUST be followed by a single space (ASCII 32). Following the space, a delimiter character (<d>) MUST be specified. The delimiter character MUST be one of the ASCII characters in range 33-126 inclusive. The character "|" (ASCII 124) is recommended unless it coincides with a character needed to encode the network address.
The <net-prt> argument MUST be an address family number defined by IANA in the latest Assigned Numbers RFC (RFC 1700 [RP94] as of the writing of this document). This number indicates the protocol to be used (and, implicitly, the address length). This document will use two of address family numbers from [RP94] as examples, according to the following table:
AF Number Protocol --------- -------- 1 Internet Protocol, Version 4 [Pos81a] 2 Internet Protocol, Version 6 [DH96]
The <net-addr> is a protocol specific string representation of the network address. For the two address families specified above (AF Number 1 and 2), addresses MUST be in the following format:
AF Number Address Format Example --------- -------------- ------- 1 dotted decimal 132.235.1.2 2 IPv6 string 1080::8:800:200C:417A representations defined in [HD96]
The <tcp-port> argument must be the string representation of the number of the TCP port on which the host is listening for the data connection. The following are sample EPRT commands:
EPRT |1|132.235.1.2|6275| EPRT |2|1080::8:800:200C:417A|5282|
The first command specifies that the server should use IPv4 to open a data connection to the host "132.235.1.2" on TCP port 6275. The second command specifies that the server should use the IPv6 network protocol and the network address "1080::8:800:200C:417A" to open a TCP data connection on port 5282.
Upon receipt of a valid EPRT command, the server MUST return a code of 200 (Command OK). The standard negative error code 500 and 501 [PR85] are sufficient to handle most errors (e.g., syntax errors) involving the EPRT command. However, an additional error code is needed. The response code 522 indicates that the server does not support the requested network protocol. The interpretation of this new error code is:
5yz Negative Completion x2z Connections xy2 Extended Port Failure - unknown network protocol
The text portion of the response MUST indicate which network protocols the server does support. If the network protocol is unsupported, the format of the response string MUST be:
<text stating that the network protocol is unsupported> \ (prot1,prot2,...,protn)
Both the numeric code specified above and the protocol information between the characters '(' and ')' are intended for the software automata receiving the response; the textual message between the numeric code and the '(' is intended for the human user and can be any arbitrary text, but MUST NOT include the characters '(' and ')'. In the above case, the text SHOULD indicate that the network protocol in the EPRT command is not supported by the server. The list of protocols inside the parenthesis MUST be a comma separated list of address family numbers. Two example response strings follow: Network protocol not supported, use (1) Network protocol not supported, use (1,2)
[Excerpt from RFC-2428, Allman]
Field Summary |
---|
Constructor Summary | |
---|---|
FtpCmdEprt()
|
Method Summary | |
---|---|
protected java.lang.String |
doReadIPAddr(java.lang.String args)
Reads the IPv4 or IPv6 compliant address from the passed arguments. |
protected int |
doReadPort(java.lang.String args)
Reads port from passed arguments. |
protected int |
doReadProtocolIdx(java.lang.String args)
Reads the protocol index (1=IPv4, 2=IPv6) from the passed arguments. |
java.lang.String |
getHelp()
Returns a short help text for the command. |
Methods inherited from class net.sf.hermesftp.cmd.AbstractFtpCmdPort |
---|
execute, isAuthenticationRequired, setupDataChannel |
Methods inherited from class net.sf.hermesftp.cmd.AbstractFtpCmd |
---|
getAbsPath, getAndResetFileOffset, getArguments, getCtx, getPathArg, getPermission, getToken, handleAsyncCmd, isResponded, msg, msg, msg, msgOut, msgOut, msgOut, out, setArguments, setCtx, setToken |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public FtpCmdEprt()
Method Detail |
---|
public java.lang.String getHelp()
protected java.lang.String doReadIPAddr(java.lang.String args)
doReadIPAddr
in class AbstractFtpCmdPort
args
- The arguments.
protected int doReadPort(java.lang.String args)
doReadPort
in class AbstractFtpCmdPort
args
- The arguments.
protected int doReadProtocolIdx(java.lang.String args)
doReadProtocolIdx
in class AbstractFtpCmdPort
args
- The arguments.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |