]> git.sesse.net Git - betaftpd/blob - doc/RFC-COMPLIANCE
0884e597a82a496bcbf39ddc1d5ed8d5849d2802
[betaftpd] / doc / RFC-COMPLIANCE
1 BetaFTPD does not fully meet the RFC959 minimum requirements for an FTP
2 server. However, for all practical uses, it should be considered a legal
3 implementation of the FTP protocol, and very close to being fully compliant
4 with RFC959.
5
6 BetaFTPD is not RFC1123 compliant, but now that renaming is in place, the
7 only thing that is left (I think) before it is, would be refusing Telnet
8 commands. I'm not sure if I will ever do this -- I simply don't see that
9 this could be a problem in today's FTP world.
10
11 These commands are believed to be fully compliant with RFC959 and RFC1123:
12 PORT, PASV, USER, PASS, CWD, CDUP, QUIT, DELE, PWD, SYST, NOOP, STOR, APPE,
13 ABOR, RNFR, RNTO, MKD, RMD, ALLO, REIN, ACCT, HELP and STAT.
14
15 These commands are not implemented at all: SMNT, STOU and SITE.
16
17 The rest of the commands are implemented, but have minor quirks or
18 problems -- see below.
19
20 Telnet signals are ignored, to the best of my knowledge. BetaFTPD does not
21 speak Telnet, although RFC959 seems to require it. Note that you can still
22 use Telnet to connect to the FTP port (to do a manual debugging session,
23 e.a.) and speak raw FTP, but BetaFTPD does not follow _all_ the rules about,
24 say, Telnet IP and Synch signals.
25
26 TYPE:
27 The TYPE command is included, but it ignores its argument and always uses
28 binary mode. RFC959 violation, but RFC1123 excuses the missing ASCII mode.
29 (If you enable ASCII mode (--enable-ascii to configure), it's RFC959- and
30 RFC1123-compliant.)
31
32 STRU:
33 The STRU command is included, but it ignores its argument and always uses
34 file structure (if you really need record structure, mail me; when I'm done
35 laughing, I will consider implementing it). RFC959 violation, but RFC1123
36 excuses the missing record structure.
37
38 MODE:
39 The MODE command is included, but it ignores its argument and always uses
40 stream mode (the other two are never used anyway). RFC959 violation, it
41 requires all other modes to be refused. 
42
43 RETR:
44 The RETR command is believed to be compliant with RFC959. (There is no default
45 data port, though -- I'm unsure about this.)
46
47 LIST/NLST:
48 The LIST and NLST commands ignore some flags (like `-R') given to them. (This
49 is much better than it was before, though.) The RFCs say nothing about
50 directory listing formats anyway, but I guess this is a violation of GNU ls :-)
51
52 REST:
53 The REST command is implemented, but it doesn't check that its argument really
54 is an integer. REST does not work in ASCII mode.
55
56 SIZE:
57 The SIZE command (not in any RFC at the moment) does not work in ASCII mode.
58 This is in compliance with the ftpext documents. If we were to enable it in
59 ASCII mode, a possible attacker could just enable ASCII mode, do a SIZE on a
60 big file and thus effectively halt a server for a shorter or longer period of
61 time.