------------------------------------------------------------------------------- Changes in version 1.43 - Updated for bglibs v2 - Added support for LIST -1 option (ignored), found in SMF Webinstall script. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.42 - Fixed bug in reporting an error in closing the sending socket. - Fixed bug in reporting an error to list a single entry. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.41 - Fix a one-off buffer overrun in ASCII conversion in the STOR command. - Fix resetting the output buffer between listings. - Added a $CONNECT_TIMEOUT setting to set timeouts on data connections. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.40 - File transfer handling has been completely rewritten to handle interrupts on the command channel. Closing the command channel or sending another command will interrupt any data transfer in progress. - Fixed a longstanding bug in the handling of $MESSAGEFILE Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.30 - Switched to the CVM v2 client library. - Added a $AUTH_ATTEMPTS control to twoftpd-auth to limit the number of authentication attempts per session. - Rewrote the directory listing code to fix listing files with special characters in their names. - Added a transfer rate (bytes/sec) indicator to transfer logs. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.21 - Added a fake listing routine to twoftpd-drop, to avoid errors on GUI clients that require LIST or NLST. - Fixed a compile failure on FreeBSD in the newer MDTM command. Thanks Sergei Kolobov. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.20 - Modified the backends (twoftpd-auth and twoftpd-xfer) to show a 220 banner if the front end authenticated, and 230 if not. This fixes problems some FTP clients have when running twoftpd-anon after authentication. - Added twoftpd-drop, a write-only FTP server. - Added twoftpd-switch, a tool to choose between twoftpd-anon, twoftpd-drop, and twoftpd-xfer based on the value of $SHELL, $SHELL_READONLY, and $SHELL_WRITEONLY. - Make sure to open only regular files. - Added a MDTM command to the xfer backend that can set timestamps (instead of just retrieving them). - Fixed bug exposed by Mozilla which tries to retrieve directories before listing them. - Eliminated the bogus APPE-after-REST test. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.17 - Fixed a bug where paths starting with "/." would not be omitted when nodotfiles was set. - Check the return value from *buf_close functions. - Fixed a minor (but annoying) typo in listing permissions of sticky files. - Path permission failures (no dot files / lock home) now produce a sensible system error. - Fixed a bug where listing "/foo/*" would not include the "/foo/" prefix in the resulting names. - Updated for bglibs version 1.006 Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.16 - Added a port-20 socket hack, based partly on code contributed by Wejn. - Fixed problems with handling interrupted system calls (strace would kill twoftpd). - Converted to use bglibs. - Added support for restarting uploads with REST. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.15 - Remember to uncork the socket before closing it. - Fixed a bug in twoftpd-anon-conf -- getpwnam returns the same static struct each time it's called, but I used it in two different ways. - Fixed a minor bug in CWD command to make it possible to cd into execute-only directories. - Fixed handling when doing NLST against non-existant files. - When making/accepting connections, abort if stdin becomes readable (because of additional command or hangup). - Added support for handling supplemental group IDs. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.14 - Fixed a bug in the string sort implementation that caused listings to leak memory. - Fixed up PASV connection mode to only show the 150 response if the connection does not fail. - Some other minor fixes to socket handling and response messages. - Added a work around for broken firewalls that rewrite certain commands (specifically PORT) with two CR characters before the final LF. - Fixed missing socket library for SysV (ie Solaris) systems. - Strip trailing slashes, which confuse at least the "lock $HOME" mode, from the home path. - Use corked (Linux) or no-push (BSD) writes to improve transfer efficiency. - Set SO_LINGER on outbound sockets (LIST/RETR) to prevent the success message from being sent on the network before the data is completely sent. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.13 - Bugfix: listing "." when CWD is "/" would fail. - Include system error message in STAT and MDTM. - Print out an error message when the session or command times out, instead of just silently dropping the connection. - Modified the PASV response to work around yet more broken clients. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.12 - Now uses the CVM 0.10 (protocol 1) API for authentication. This means you MUST use modules from CVM 0.10 or later with this version. - Many error messages now include the system error message (like "File or path not found") that caused the error. - Added a simple, limited LIST/NLST option parser, to provide compatibility with broken clients that like to send commands like "NLST -alL". - Added authentication and session timeout limits. - SITE commands are no longer output twice in the logs. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.11 - Fixed a nasty bug (guaranteed corruption) with retrieving files larger than 4KB in ASCII mode. - Fixed up the response code for MKD from 250 to 257. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.10 - Fixed a bug in outbound (PORT mode) connection -- it wasn't binding to the local IP, causing problems between servers with multiple IPs and firewalls. - Modified the PASV response to work around FTP client bugs. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.09 - Fixed yet another listing bug -- group names that were not exactly 8 characters long were either truncated to 8 characters or padded with garbage. Thanks Dan Peterson. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.08 - Fixed yet another one-off bug in listed filenames that resulted in the leading character being chopped off when CWD is "/". - Previous versions of twoftpd would drop all dotfiles from listings. This version makes that behavior optional, as well as also disallowing all file access to dotfiles when they are hidden. - Modified how emulated or "soft" chroot mode is enabled. Previously it was enabled by setting the first character of $CHROOT to "e". Now it is enabled by setting $SOFTCHROOT and not setting $CHROOT. - Added a "lock HOME" backend setting that works similar to the soft chroot above. The CWD will still include $HOME, but all accesses to files and paths outside of $HOME will be forbidden. - Added support for the SITE CHMOD command in the twoftpd-xfer backend, as well as a framework for adding other SITE commands. - Added code to show the true mode of files in long listings rather than just "-rw-r--r--" for files and "drwxr-xr-x" for directories. - Long listings now also show the true group name reported by the CVM when the group number on the file is the same as $GID. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.07 - Fixed a bug in handling listing unreadable directory entries that would cause listings to be prematurely terminated immediately before such an entry. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.06 - Fixed a one-off bug in doing pattern listings that caused all the resulting filenames to be prefixed with a '/'. - Fixed some portability problems. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.05 - Rewrote all file handling operations to enable "emulated" chroot behavior. There are now three modes of operation: 1. Normal: CWD appears as $HOME at login. 2. Hard chroot: CWD appears as / at login, and is enforced with a chroot. 3. Emulated chroot: CWD appears as / at login, with no chroot. In all of the cases, there is no chdir done after the server starts. This change was done to permit symlinks outside of $HOME. - Improved the run files and the conf tools to run envdir on each connection rather than before tcpserver starts. This allows the configuration variables to be modified without restarting the service. - Added configuration for logging of responses, and made logging of requests optional. You must now set $LOGREQUESTS if you want to log requests and $LOGRESPONSES if you want to log responses. Development of this version has been sponsored by FutureQuest, Inc. ossi@FutureQuest.net http://www.FutureQuest.net/ ------------------------------------------------------------------------------- Changes in version 1.02 - Fixed a couple of bugs in twoftpd-anon-conf. - Dotfiles should be skipped when listing directories. - Made the numeric values of some success responses fall in line with the specifics of the FTP RFC. This should hopefully fix many of the client failures. - Added logging code to log requests and responses. - The backend modules (twoftpd-anon and twoftpd-xfer) will optionally print out a banner on startup, and a message file on entering a directory. As well, twoftpd-auth will optionally print out a banner before login. ------------------------------------------------------------------------------- Changes in version 1.01 - Fixed a critical bug in parsing and printing IPs. - Fixed a bug in handling listing single items. - Fixed a minor usage documentation bug in the conf programs. ------------------------------------------------------------------------------- Changes in version 1.00 - Added twoftpd-conf and twoftpd-anon-conf programs. - Minor internal socket and directory handling changes. ------------------------------------------------------------------------------- Changes in version 0.92 - Removed the code to handle anonymous logins from the authentication front end, in favour of recommending running a seperate anonymous server. - Proper telnet escape translation is now done on output. - Added some compatibility fixes, especially for glob. NOTE: there will be no more features added, except for critical omissions, before the 1.0 release, just bug fixes. ------------------------------------------------------------------------------- Changes in version 0.91 - Fixed a bug in socket handling that caused timeouts to be set too low. - Fixed some minor bugs in command-line and environment handling. - Fixed an iobuf bug that caused opened output files to not be closed on errors. - Added support for the REST command, to speed up resumed transfers. ------------------------------------------------------------------------------- Changes in version 0.9 - Fixed bug in EOF handling when storing files. - IP addresses in PORT commands that do not match the remote IP address are now rejected. ------------------------------------------------------------------------------- Changes in version 0.8 - Use glob library to handle wildcard handling. This means twoftpd can now handle listing patterns like "test*/*". - Apply timeouts on all socket handling routines. - Dropped use of sendfile on Linux, since it's incompatible with handling timeouts on sending or receiving data. ------------------------------------------------------------------------------- Changes in version 0.7 - Fixed a bug that caused PORT-style connections to fail. ------------------------------------------------------------------------------- Changes in version 0.6 - Can now handle LIST and NLST on non-directories. - Should now automatically use sendfile on Linux systems. - Can now handle ASCII mode file transfers. - Can now handle RNFR/RNTO file renaming commands. - Can now handle newlines (octal 012) in paths. ------------------------------------------------------------------------------- Changes in version 0.5 - TwoFTPd now uses CVM (http://em.ca/~bruceg/cvm/) for authentication. - twoftpd-auth needs to have the anonymous configuration parameters set by environment variables instead of reading them through getpwnam. ------------------------------------------------------------------------------- Changes in version 0.4 - Now handles timout when making PORT connections. - Simplified the directory listing format. - Configured and packaged with SPAC. ------------------------------------------------------------------------------- Changes in version 0.3 - Now supports anonymous logins with reduced priviledges. - Now handles both PASV and PORT mode connections. - Now handles STOR and APPE file upload commands. - Handles additional verbs: MDTM, RMD, MKD, DELE. - Times out on PASV connections and receiving commands, as specified by $TIMEOUT (defaults to 900 seconds). - If $CHROOT is set, twoftpd-xfer will chroot on entry. -------------------------------------------------------------------------------