]> git.sesse.net Git - betaftpd/blob - doc/RFC-COMPLIANCE
Updated documentation: Tell about recursion in internal ls; tell that we have Debian...
[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, STAT and MODE.
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 only file structure is supported (all other
34 modes are refused; 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 RETR:
39 The RETR command is believed to be compliant with RFC959. (There is no default
40 data port, though -- I'm unsure about this.)
41
42 LIST/NLST:
43 The LIST and NLST commands ignore some flags (like `-1') given to them. (This
44 is much better than it was before, though, even recursive listings should work
45 now.) The RFCs say nothing about directory listing formats anyway, but I guess
46 this is a violation of GNU ls :-)
47
48 REST:
49 The REST command is implemented, but it doesn't check that its argument really
50 is an integer. REST does not work in ASCII mode.
51
52 SIZE:
53 The SIZE command (not in any RFC at the moment) does not work in ASCII mode.
54 This is in compliance with the ftpext documents. If we were to enable it in
55 ASCII mode, a possible attacker could just enable ASCII mode, do a SIZE on a
56 big file and thus effectively halt a server for a shorter or longer period of
57 time.