1 Version 0.0.8 (the Try-to-do-way-too-much-in-one-release Release, originally the
4 0.0.8 has been through a lot of preview/beta releases, and is a _totally_
5 different beast from 0.0.7. As a consequence, there have been many minor
6 changes from release to release, which are uninteresting in the big picture
7 and thus has been removed from the list. For a complete list, see the file
10 - Support for not running as root. This implies using its own database of
11 rights and users. Give --enable-nonroot to configure to enable it. Users
12 running BetaFTPD as root are not affected by this support in any way.
13 BetaFTPD is still small with this feature, expect about 1 kB (6%) extra
14 for database routines and hooks in the main code.
16 This is still very experimental. Do not expect this to be better until
18 - Fixed a LOT of bugs, some segfaulting, some minor.
19 - MAJOR performance improvements in almost all areas. One of the main
20 contributors in this area has been Dan Kegel (see the CREDITS file).
21 - Some changes to compile better under Debian GNU/Linux. A .deb-file was
22 ready, but due to lost access of a Debian-system, this was discontinued :-(
23 - BetaFTPD will now try to install itself (wow! (not)) in the same directory
24 as the file called `ftpd', if you have that file.
25 - Support for non-Linux platforms! For now, only SunOS/SVR4 and FreeBSD.
26 SunOS just barely works, and FreeBSD lacks sendfile() support. Both are
28 - Gave the version its own name, like Samba does :-)
29 - If you have mmap(), BetaFTPD will no longer generate temporary files for directory
30 listings, but generate them in-place in memory.
31 - Completely restructured the internal listing functions, to make them more
32 standards-compliant and smaller. (-l and -F flags now supported, but not
34 - Make an EXIT command (must be manually enabled -- NEVER use it on a
35 production machine, ANYONE will be able to halt your server!) to stop
36 the server -- useful for profiling, which requires an exit() to generate
37 profile data. (Be aware that gmon.out will be where the server last did
38 a chdir() to, though. In a debugging server, you'll know where that is
40 - strip-exec now has a warning. In addition, it gives -D__OPTIMIZE_SIZE__
41 to keep glibc2 (libc6) from adding some inlines. It also kills
42 -fomit-frame-pointer. So now strip-exec gives a 20 kB executable instead
43 of 21 kB (one extra kB goes to new functionality) :-)
44 - Now strips out any non-ASCII chars from the commands (not any parameters),
45 to fix the ABOR problems.
46 - Documentation changes.
47 - Commented all the functions in cmds.c and ftpd.c, to make it easier to get
49 - Implemented the APPE, DELE, MKD, RMD, ABOR, REIN, ACCT, HELP and STAT commands.
50 - Added makefile dependencies.
51 - BetaFTPD can now handle non-DES crypt()s, thanks to Beau Kuiper
52 <ekuiperba@cc.curtin.edu.au>.
53 - ASCII mode added, once again thanks to Beau Kuiper <ekuiperba@cc.curtin.edu.au>.
54 - Linux sendfile() support (only for mmap()-able machines -- I don't think
55 any machine has sendfile() but not mmap()). Other systems will be added
57 - Moved all documentation (except README) into a separate doc/ directory. Added
59 - The internal ls now can cache the listings (--enable-dcache to configure).
60 Please see the README file for some problems that still exist. This
61 option requires quite a bit of code (1028 bytes compiled, on my
62 system), and some RAM for the directory listings and support structure.
63 I think, however, that the increased performance is worth it.
64 - BetaFTPD can now use poll() if you have it. This removes the old 1024-
65 socket limit, as well as reducing the code size by 496 bytes (on my
67 - Added renaming support. (Whee! Almost full RFC1123 compliance!)
68 - Changed all copyright strings to say `1999-2000' (well, it only got to
69 May 2000 before I remembered it...) instead of just `1999'.
70 - A new option, --enable-message, makes the server show info about README files,
71 as well as printing any .message or welcome.msg files that may be available.
72 (This is a quite standard function in other ftpds.)
73 - Made a simple FTP server test suite (not included, since it's really not good
74 enough to live its own life as a standalone product), used in testing.
75 - BetaFTPD now listens on port 21.
78 - Shadow support. (Give --enable-shadow to configure to enable it.)
79 - No longer ships with precompiled binary -- there are way too many
80 configurations to take care of now (shadow, fork, etc.).
81 - Cleans up a connection if no file transfer has been done in 15 minutes.
82 - More checks in configure script.
83 - Made README file a bit nicer.
87 - Added upload support! (Give --enable-upload to configure to enable it.)
88 Not 100% tried and tested yet, and requires extra code a lot of places.
89 Amazingly enough, it only gives 700 bytes (uncompressed) extra executable
90 size, and requires about 4 bytes per new connection.
91 - Fixed cosmetic bug in configure script.
92 - All .c files now depend on config.h.
93 - Cleaned up some minor problems in building in a directory different from
95 - Added metalab as a mirror site. (The official one is still at my homepage,
96 but I can't offer FTP from there.)
98 - Removed bug that prevented the user from sending _anything_ (including
99 a re-login) if he/she hadn't opened with USER/PASS.
100 - Fixed some problems with compiling on mmap-less machines.
103 - Fixed problem in tarfile (aargh!), it should (forever) unpack into its own
105 - Made handler_table[] const and static (that means minor advantages in speed
106 and executable size).
107 - Added autoconf support. Still not perfect, but much better than nothing.
108 - Re-added support for mmap-less machines as well.
109 - Now only licensed under GPL v2 (_not_ any later or earlier version).
112 - Fixed problem where Netscape 4.5 would give double slashes after directory
114 - Specifying a non-existant user would make the server segfault ;-)
115 - Implemented non-RFC MDTM command.
116 - Changed prompt for anonymous users to "Login OK, send password (your e-mail)."
117 (added 'your' so people won't begin to send their mail passwords :-)
118 - Fixed a bug where anybody could send a fake user name, and access to a
119 random uid. (Don't worry, it was unexploitable -- the server crashed due
121 - Made the command prototypes in cmds.h a single macro, to reduce source size
122 and improve readability (?).
123 - KNOWN-BUGS file added.
124 - Fixed a problem where the server could segfault (due to writing to free()'d
126 - Stripped some sections from the precompiled binary, to reduce size a little
127 more... (Added a script named `strip-exec' which does just that.)
128 - Fixed a problem where doing a `CWD /' followed by a `PWD' would raise some
130 - Fixed a _possible_ (I couldn't exploit it) problem if a REST was sent,
131 greater than the size of the file downloaded, and libc would have some
132 kind of problem with negative sizes.
133 - Added some #define's in ftp.h for those who don't need xferlogs and/or
134 fullscreen. The precompiled binary is supposed to be _small_, so it
136 - Removed all alignment from the precompiled binary (hooray! we're back
138 - Compressed precompiled binary with UPX (10k isn't bad...)
139 - Fixed some bugs, problems with NcFTP etc. (This file got lost, and I
140 had to restore from a slightly older backup.)
141 - Started on an RFC-COMPLIANCE file.
142 - Support for nice, full-screen display (not in precompiled binary).
143 - Now uses mmap() instead of read() and write().
144 - Lots of _real_ testing, in a production environment! That sure fixed
145 a lot of problems :-)
148 - CHANGES file added...
149 - Fixed a bug that prevented lynx and IE (?) from getting dir listings.
150 - Added VERY crude logging (only to /var/log/xferlog for now). It fakes
151 some of the traditional xferlog fields. (Note: this alone was almost
153 - Accepts "ftp" as well as "anonymous".
154 - NLST command partly implemented (errr...).
155 - Cleaned up some error numbers, shortened some messages.
156 - Added pseudo-commands MODE and STRU.
157 - Can recognize other home dirs than /home/ftp/ for anonymous users.
158 - Made FTP port a #define in ftpd.h.
159 - Ignores information on stdin (libc workaround).
160 - Globbing support! (ie. you can do things like LIST *.dat)