Expand description
FTP (File Transfer Protocol) layer implementation.
Implements RFC 959 FTP packet parsing as a zero-copy view into a packet buffer.
FTP operates over two TCP connections:
- Control connection (port 21): Commands and replies (text-based)
- Data connection (port 20 or negotiated): Actual file data
This implementation focuses on the control connection protocol.
§Packet Format
Client Command:
COMMAND [arguments]\r\nServer Reply:
NNN<SP>text\r\n (single-line)
NNN-text\r\n ... NNN<SP>text\r\n (multi-line)Where NNN is a 3-digit reply code.
§Reply Code Categories
| Range | Meaning |
|---|---|
| 1xx | Positive Preliminary |
| 2xx | Positive Completion |
| 3xx | Positive Intermediate |
| 4xx | Transient Negative |
| 5xx | Permanent Negative |
Re-exports§
pub use builder::FtpBuilder;
Modules§
- builder
- FTP packet builder.
Structs§
- FtpLayer
- A zero-copy view into an FTP layer within a packet buffer.
Enums§
- FtpMessage
Kind - Represents an FTP message type.
Constants§
- CMD_
ABOR - CMD_
ACCT - CMD_
ALLO - CMD_
APPE - CMD_
AUTH - CMD_
CDUP - CMD_CWD
- CMD_
DELE - CMD_
EPRT - CMD_
EPSV - CMD_
FEAT - CMD_
HELP - CMD_
LIST - CMD_
MDTM - CMD_MKD
- CMD_
MLSD - CMD_
MLST - CMD_
MODE - CMD_
NLST - CMD_
NOOP - CMD_
OPTS - CMD_
PASS - CMD_
PASV - CMD_
PBSZ - CMD_
PORT - CMD_
PROT - CMD_PWD
- CMD_
QUIT - CMD_
REIN - CMD_
REST - CMD_
RETR - CMD_RMD
- CMD_
RNFR - CMD_
RNTO - CMD_
SITE - CMD_
SIZE - CMD_
SMNT - CMD_
STAT - CMD_
STOR - CMD_
STOU - CMD_
STRU - CMD_
SYST - CMD_
TYPE - CMD_
USER - FTP_
CONTROL_ PORT - FTP control port.
- FTP_
DATA_ PORT - FTP data port.
- FTP_
MIN_ HEADER_ LEN - Minimum FTP payload: at least “OK\r\n” or short command.
- REPLY_
ARG_ SYNTAX_ ERROR - REPLY_
AUTH_ OK - REPLY_
BAD_ SEQUENCE - REPLY_
CANT_ OPEN_ DATA - REPLY_
CLOSING_ CONTROL - REPLY_
CLOSING_ DATA - REPLY_
CMD_ NOT_ IMPL - REPLY_
CMD_ NOT_ IMPL_ PARAM - REPLY_
COMMAND_ NOT_ IMPLEMENTED - REPLY_
CONN_ CLOSED - REPLY_
DATA_ OPEN - REPLY_
DATA_ OPEN_ XFER - REPLY_
DIR_ STATUS - REPLY_
EXCEED_ STORAGE - REPLY_
EXTENDED_ PASSIVE - REPLY_
FILENAME_ NOT_ ALLOWED - REPLY_
FILE_ ACTION_ OK - REPLY_
FILE_ STATUS - REPLY_
FILE_ STATUS_ OK - REPLY_
FILE_ UNAVAIL - REPLY_
FILE_ UNAVAIL_ BUSY - REPLY_
HELP_ MSG - REPLY_
HOST_ UNAVAIL - REPLY_
INSUFF_ STORAGE - REPLY_
INVALID_ CRED - REPLY_
LOCAL_ ERROR - REPLY_
LONG_ PASSIVE - REPLY_
NAME_ SYSTEM - REPLY_
NEED_ ACCOUNT - REPLY_
NEED_ ACCOUNT_ FOR_ STOR - REPLY_
NOT_ LOGGED_ IN - REPLY_
OK - REPLY_
PAGE_ TYPE_ UNKNOWN - REPLY_
PASSIVE - REPLY_
PATHNAME_ CREATED - REPLY_
PENDING_ INFO - REPLY_
RESTART_ MARKER - REPLY_
SERVICE_ NOT_ AVAIL - REPLY_
SERVICE_ READY - REPLY_
SERVICE_ READY_ IN - REPLY_
SYNTAX_ ERROR - REPLY_
SYSTEM_ STATUS - REPLY_
USER_ LOGGED_ IN - REPLY_
USER_ OK_ NEED_ PASS
Statics§
- FTP_
COMMANDS - FTP command verbs for detection.
- FTP_
FIELD_ NAMES - Field names for Python/generic access.
Functions§
- ftp_
show_ fields - Display fields for
FtpLayerinshow()output. - is_
ftp_ payload - Returns true if
buflooks like an FTP control-connection payload. - reply_
code_ description - Returns a human-readable description for an FTP reply code.