📄 changes
字号:
Version 0.0.8 (the Try-to-do-way-too-much-in-one-release Release, originally thePortability Release)0.0.8 has been through a lot of preview/beta releases, and is a _totally_different beast from 0.0.7. As a consequence, there have been many minorchanges from release to release, which are uninteresting in the big pictureand thus has been removed from the list. For a complete list, see the fileCHANGES-0.0.8.- Support for not running as root. This implies using its own database of rights and users. Give --enable-nonroot to configure to enable it. Users running BetaFTPD as root are not affected by this support in any way. BetaFTPD is still small with this feature, expect about 1 kB (6%) extra for database routines and hooks in the main code. This is still very experimental. Do not expect this to be better until _at least_ 0.0.9.- Fixed a LOT of bugs, some segfaulting, some minor.- MAJOR performance improvements in almost all areas. One of the main contributors in this area has been Dan Kegel (see the CREDITS file).- Some changes to compile better under Debian GNU/Linux, a debian/ directory, and .deb files available for download.- BetaFTPD will now try to install itself (wow! (not)) in the same directory as the file called `ftpd', if you have that file.- Support for non-Linux platforms! For now, only SunOS/SVR4 and FreeBSD. SunOS just barely works, and FreeBSD lacks sendfile() support. Both are generally untested.- Gave the version its own name, like Samba does :-)- If you have mmap(), BetaFTPD will no longer generate temporary files for directory listings, but generate them in-place in memory.- Completely restructured the internal listing functions, to make them more standards-compliant and smaller. (-l and -F flags now supported, but not -R.)- Make an EXIT command (must be manually enabled -- NEVER use it on a production machine, ANYONE will be able to halt your server!) to stop the server -- useful for profiling, which requires an exit() to generate profile data. (Be aware that gmon.out will be where the server last did a chdir() to, though. In a debugging server, you'll know where that is anyway...)- strip-exec now has a warning. In addition, it gives -D__OPTIMIZE_SIZE__ to keep glibc2 (libc6) from adding some inlines. It also kills -fomit-frame-pointer. So now strip-exec gives a 20 kB executable instead of 21 kB (one extra kB goes to new functionality) :-)- Now strips out any non-ASCII chars from the commands (not any parameters), to fix the ABOR problems.- Documentation changes. - Commented all the functions in cmds.c and ftpd.c, to make it easier to get into the code.- Implemented the APPE, DELE, MKD, RMD, ABOR, REIN, ACCT, HELP and STAT commands.- Added makefile dependencies.- BetaFTPD can now handle non-DES crypt()s, thanks to Beau Kuiper <ekuiperba@cc.curtin.edu.au>.- ASCII mode added, once again thanks to Beau Kuiper <ekuiperba@cc.curtin.edu.au>.- Linux sendfile() support (only for mmap()-able machines -- I don't think any machine has sendfile() but not mmap()). Other systems will be added later.- Moved all documentation (except README) into a separate doc/ directory. Added CREDITS file.- The internal ls now can cache the listings (--enable-dcache to configure). Please see the README file for some problems that still exist. This option requires quite a bit of code (1028 bytes compiled, on my system), and some RAM for the directory listings and support structure. I think, however, that the increased performance is worth it.- BetaFTPD can now use poll() if you have it. This removes the old 1024- socket limit, as well as reducing the code size by 496 bytes (on my system).- Added renaming support. (Whee! Almost full RFC1123 compliance!)- Changed all copyright strings to say `1999-2000' (well, it only got to May 2000 before I remembered it...) instead of just `1999'.- A new option, --enable-message, makes the server show info about README files, as well as printing any .message or welcome.msg files that may be available. (This is a quite standard function in other ftpds.)- Made a simple FTP server test suite (not included, since it's really not good enough to live its own life as a standalone product), used in testing.- BetaFTPD now listens on port 21.- Homepage moved to SourceForge (http://betaftpd.sourceforge.net/)- root (or any other user with uid=0) can't FTP anymore.- .spec file (for you RPM junkies :-) ), provided by Sean MacLennan <seanm@netwinder.org>.- Recursive directory listings (`-R' to the internal ls).Version 0.0.7:- Shadow support. (Give --enable-shadow to configure to enable it.)- No longer ships with precompiled binary -- there are way too many configurations to take care of now (shadow, fork, etc.).- Cleans up a connection if no file transfer has been done in 15 minutes.- More checks in configure script.- Made README file a bit nicer.Version 0.0.6:- Fixed PASV bug.- Added upload support! (Give --enable-upload to configure to enable it.) Not 100% tried and tested yet, and requires extra code a lot of places. Amazingly enough, it only gives 700 bytes (uncompressed) extra executable size, and requires about 4 bytes per new connection.- Fixed cosmetic bug in configure script.- All .c files now depend on config.h.- Cleaned up some minor problems in building in a directory different from the source directory.- Added metalab as a mirror site. (The official one is still at my homepage, but I can't offer FTP from there.)- Added LSM entry.- Removed bug that prevented the user from sending _anything_ (including a re-login) if he/she hadn't opened with USER/PASS.- Fixed some problems with compiling on mmap-less machines.Version 0.0.5:- Fixed problem in tarfile (aargh!), it should (forever) unpack into its own directory now.- Made handler_table[] const and static (that means minor advantages in speed and executable size).- Added autoconf support. Still not perfect, but much better than nothing.- Re-added support for mmap-less machines as well.- Now only licensed under GPL v2 (_not_ any later or earlier version).Version 0.0.4:- Fixed problem where Netscape 4.5 would give double slashes after directory names.- Specifying a non-existant user would make the server segfault ;-)- Implemented non-RFC MDTM command.- Changed prompt for anonymous users to "Login OK, send password (your e-mail)." (added 'your' so people won't begin to send their mail passwords :-)- Fixed a bug where anybody could send a fake user name, and access to a random uid. (Don't worry, it was unexploitable -- the server crashed due to another bug...)- Made the command prototypes in cmds.h a single macro, to reduce source size and improve readability (?).- KNOWN-BUGS file added.- Fixed a problem where the server could segfault (due to writing to free()'d memory).- Stripped some sections from the precompiled binary, to reduce size a little more... (Added a script named `strip-exec' which does just that.)- Fixed a problem where doing a `CWD /' followed by a `PWD' would raise some error messages.- Fixed a _possible_ (I couldn't exploit it) problem if a REST was sent, greater than the size of the file downloaded, and libc would have some kind of problem with negative sizes.- Added some #define's in ftp.h for those who don't need xferlogs and/or fullscreen. The precompiled binary is supposed to be _small_, so it disables both.- Removed all alignment from the precompiled binary (hooray! we're back at 15k!)- Compressed precompiled binary with UPX (10k isn't bad...)- Fixed some bugs, problems with NcFTP etc. (This file got lost, and I had to restore from a slightly older backup.)- Started on an RFC-COMPLIANCE file.- Support for nice, full-screen display (not in precompiled binary).- Now uses mmap() instead of read() and write().- Lots of _real_ testing, in a production environment! That sure fixed a lot of problems :-)Version 0.0.3:- CHANGES file added...- Fixed a bug that prevented lynx and IE (?) from getting dir listings.- Added VERY crude logging (only to /var/log/xferlog for now). It fakes some of the traditional xferlog fields. (Note: this alone was almost 1k)- Accepts "ftp" as well as "anonymous".- NLST command partly implemented (errr...).- Cleaned up some error numbers, shortened some messages.- Added pseudo-commands MODE and STRU.- Can recognize other home dirs than /home/ftp/ for anonymous users.- Made FTP port a #define in ftpd.h.- Ignores information on stdin (libc workaround).- Globbing support! (ie. you can do things like LIST *.dat)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -