Changes-1.2.0pre3
上传用户:pycemail
上传日期:2007-01-04
资源大小:329k
文件大小:45k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. ============================================================================
  2. - Buffer Overrun in src/log.c (sprintf) fixed, from bugtraq report.
  3. - mod_linuxprivs problem with glibc2.1 fixed (no more all-users as root),
  4.   or rather worked around.  glibc2.1 implements seteuid() incorrectly,
  5.   resulting in euid->ruid swapping not working.
  6. - Memory usage under ls -R should be better (yes, we know it's
  7.   still not perfect -- perfect will be in 1.3)
  8. - RNFR no longer allows renames _from_ files that don't pass
  9.   PathAllowFilter/PathDenyFilter
  10. - TimeoutStalled now defaults to 3600 seconds (one hour), so that
  11.   those who don't config their server properly [ahem, you *know*
  12.   who you are :P] won't end up w/ ancient proftpd processes.
  13. - `TYPE A N' no longer causes an error.
  14. - Patch to fix SO_REUSEADDR problem w/ OpenBSD.
  15. March 9, 1999 - Version 1.2.0pre3
  16. - `ServerIdent' directive changed to take an additional argument when
  17.   the first argument is boolean true:
  18.   ServerIdent on "Server ready message."
  19.   The "Server ready message" is displayed after client connection 
  20.   (and after DisplayLogin) instead of the normal "ProFTPD version"
  21.   message.  `ServerIdent off' will continue to work as before, displaying
  22.   the server's hostname followed by "FTP server ready."
  23. - New directive: MultilineRFC2228 
  24.   (This needs to go into the docs) By default, proftpd sends multiline
  25.   responses as per rfc 959, i.e.:
  26.   200-First line
  27.    More lines...
  28.   200 Last line
  29.   rfc 2228 specifies that "6xy" response codes will be sent as follows:
  30.   600-First line
  31.   600-More lines...
  32.   600 Last line
  33.   Note that 2228 ONLY specifies this for response codes starting with '6'.
  34.   Enabling this directive causes ALL responses to be sent in this format,
  35.   which may be more compatible with certain web browsers and clients.  Also
  36.   note that this is NOT the same as wu-ftpd's multiline responses, which do
  37.   not comply with any rfc.  Using this method of multilines is more likely
  38.   to be compatible with all clients, although it isn't strictly rfc, and
  39.   is thus not enabled by default.
  40.   
  41. - MacGyver's patch to do argv[] rewriting the Right Way<tm>, and some
  42.   minor fixes to socket error handling.
  43. - IdentLookup fixed, no longer hangs indefinitely if unable to ident/
  44.   connect to client's ident port (timeout is 10 seconds)
  45. - "Runaway" proftpd child processes fixed!
  46.   "Dead" proftpd child processes fixed!
  47.   
  48. - "not a regular file" now returns 550 instead of 553.
  49. February 13, 1999 - Version 1.2.0pre2
  50. - New UserDirRoot directive.  When set to true, the chroot base directory
  51.   becomes a subdirectory of the anonymous ftp directory, based on the
  52.   username of the current user (i.e. assuming user "foo" is aliased
  53.   to "ftp", logging in as "foo" causes proftpd to run as *real* user
  54.   ftp, but to chroot into ~ftp/foo instead of just ~ftp).
  55. - New ServerIdent directive.  Can be used to change the default message
  56.   proftpd announces when a new client connects (good for security).
  57. - New DisplayConnect directive.  Displays a file when a client initially
  58.   connects.
  59. - New CDPath directive; works just like wu-ftpd's cdpath.
  60. - Makefile chown portability bug fixed.
  61. - proftpd.8 now documents SIGHUP usage.
  62. - UserAlias can now take "*" as a wildcard user argument, making it 
  63.   apply _any_ username as an alias.
  64. - mod_ls fixed (in a big way) ncftp's get -R should now work perfectly.
  65. - Security patch fixes potential CWD/MKD stack smash exploit.
  66. - CF_MERGEDOWN fixed, no longer dupes merged directives.
  67. - mod_readme.c module added to contrib directory.
  68. - mod_pam.c module added to contrib directory.
  69. - RFC959 APPE command now works.
  70. - Rehashing (-HUP) now properly discards old LogFormat logs,
  71.   and recreates from the conf file. (Debian bug #28641)
  72. - Retrying a transfer after a failed data connection no longer
  73.   results in "Internal error: non-PASV mode, yet data connection
  74.   already exists"
  75. - PASV/PORT data-connection selections are now strictly RFC, i.e
  76.   either one can override a previous PASV/PORT as long as the
  77.   data connection has not yet actually been established.
  78. - Arguments inside "%{}" logformat macros should now work as documented
  79.   (i.e "%{%Y%m%d}t")
  80. - Fixed memory leak in mod_ls.c, should no longer eat large amounts of
  81.   memory when performing a recursive ls (-R).
  82. October 17, 1998 - Version 1.2.0pre1
  83. - Another dirtree recursion bug fixed, similar to that in 1.1.7pl3.
  84. - Most auth related logging now includes destination IP and port.
  85. - Default syslog facilities are now correct - PR#53 (jan.menzel@gmx.de)
  86. - install -d (directory) no longer used, because of broken BSD-install.
  87. - Configuration script cleanup, everything is now cached properly.
  88. - Configure script now detects LOG_FTP and LOG_CRON, and allows their
  89.   use via the SyslogFacility directive, if appropriate on the target
  90.   platform.
  91. October 10, 1998 - Version 1.1.7pl3
  92. - Recursive dirtree walking code fixup, a gcc bug was being trigger
  93.   in just the right circumstances.  Multiple UserAlias should now
  94.   work properly with AuthAliasOnly turned on.
  95. - GroupOwner now properly uses AuthUserFile/AuthGroupFile.
  96. - Bug fix in directory listings, small oddity with listing symlinks 
  97.   to a directory fixed.
  98. - Performace tweaking to directory listing, time()/umask() no longer
  99.   "over-called."
  100. - Makefiles have been adjusted to be more admin friendly.  Now, by default,
  101.   _everything_ is installed in the prefix directory (as specified by
  102.   --prefix when running configure).  The config file is now:
  103.   /usr/local/etc/proftpd.conf by default, and scoreboard is
  104.   /usr/local/var/proftpd/.  This will require some changes for package
  105.   maintainers.  To help with this, proftpd configure is now completely
  106.   GNU autoconf compliant.  To build on a target system outside of
  107.   a single prefix directory, you would do something like:
  108.   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run
  109.   This will install:
  110.      o Admin and daemon binaries in /usr/sbin
  111.      o Normal user binaries in /usr/bin
  112.      o Configuration file in /etc
  113.      o Manual pages in /usr/man
  114.   Additionally, the scoreboard directory will be:
  115.      o /var/run/proftpd  (The additional directory is automatically
  116.  added and created at install)
  117. - New header file, include/default_paths.h, path macros removed from
  118.   top-level config.h
  119. October 6, 1998 - Version 1.1.7pl2
  120. - Pulled version macro out of include/conf.h and placed in it's own
  121.   file, include/version.h
  122. - PathAllowFilter/PathDenyFilter now apply to ALL write operations,
  123.   not just STOR (as well as RETR).
  124. - More than a single HideUser/HideGroup can now be used in a given
  125.   context.  All such directives will be applied, so that all specified
  126.   user/groups are hidden.
  127. - AIX `tr' portability fix - PR#51 (flo@quit.mediaways.net) 
  128. - all man pages updated
  129. - ftpcount/ftpwho now take an additional argument, --path (or -p) which
  130.   is the fullpath to the scoreboard files (as specified by the
  131.   ScoreboardPath directive).  ftpcount/ftpwho is now more "intelligent"
  132.   regarding the path not existing, warning the user.
  133. - setpgid() is now used in preference to setpgrp(), if available
  134.   on target platform.
  135. - No more segfaults if incorrect /etc/passwd or /etc/group permissions.
  136. - ExtendedLog w/out a command-class argument no longer causes a segfault.
  137. - ExtendedLog inside Anonymous will now override outer ExtendedLog
  138.   directives _with the same filename_.  i.e.
  139.   <VirtualHost 10.0.0.1>
  140.     ExtendedLog /var/log/virt.log ALL
  141.     <Anonymous ~ftp>
  142.       ExtendedLog /var/log/virt.log NONE
  143.       # No extended logging for this anonymous context AND
  144.       # /var/log/virt.log
  145. - %F cookies in DisplayLogin/DisplayFirstChdir should now properly display
  146.   kb on _very_ large filesystems.
  147. September 23, 1998 - Version 1.1.7pl1
  148. - E-mail passwords no longer hidden by mod_log, while true passwords
  149.   in an anonymous context ARE hidden in ps and ftpwho listings.
  150. - Added -l command line option, displays a list of all compiled-in
  151.   modules (ala apache).
  152. - Updated much documentation.
  153. - Symlinked contrib'd modules from the modules/ directory.  Copying
  154.   a 3rd party or non-standard module into modules/ is therefore no longer
  155.   necessary.  Just ./configure --with-modules=mod_1:mod_2:...:mod_n
  156.   Actually, cvs doesn't allow symlinks, however they are created
  157.   when you run ./configure, so the above _will_ work.
  158. - New contrib module, mod_linuxprivs, uses the new POSIX standard
  159.   capabilities found in Linux 2.1 kernels to provide "fine-grain"
  160.   access control over the entire daemon after authentication.
  161.   Essentially allows proftpd to run as non-root, and be _much_
  162.   more secure.  See README.linux-privs
  163. - Added additional shell code in configure which permits add'l
  164.   modules (--with-module) to specify extra libraries that are needed
  165.   and extra directories that the top-level make should chdir to and
  166.   run make in.  The syntax (should be near the top of the module) is:
  167.   $Libraries: -L[extra-lib-paths] -l[extra-lib]$
  168.   $Directories: [whitespace delimited list of extra directories]$
  169.   The contents of "Libraries" is passed VERBATIM to the linker.
  170.   See contrib/mod_linuxprivs.c for examples of this.
  171. - MaxClients/MaxClientsPerHost should now properly virtualize
  172.   per <VirtualServer>
  173. - MaxClients works again in <Anonymous> blocks.
  174. - TransferLog, UtmpLog and ExtendedLog can now be used inside
  175.   <Global>, <VirtualHost> and <Anonymous> blocks.
  176. September 16, 1998 - Version 1.1.7
  177. - New directive `AllowForeignAddress'.  Defaults to off.  When turned
  178.   on, allows a client PORT command to specify an address _other_ than
  179.   the client's own; thus allowing FXP, etc to work (server-to-server
  180.   transfer).  When off, the typical (address mismatch) is logged if
  181.   a client attempts this.  Even when turned on, low-numbered ports
  182.   are not accepted.
  183. - Mapping user/groups specified in <Anonymous> configurations is now
  184.   defered until after client-connect.  This allows you to use user
  185.   or group names that are specified in an AuthUserFile/AuthGroupFile
  186.   database inside proftpd's configuration.
  187. - <Anonymous ~user> should now work w/ (broken) FreeBSD.  Also,
  188.   symlinks in <Anonymous> should work properly w/ <Limit>.
  189. - Uploading a file into a symlinked directory no longer overrides
  190.   <Limit> security (the fully resolved symlink path is used).
  191. - The HANDLED, DECLINED and ERROR/ERROR_* macros now take an add'l
  192.   leading argument, the cmd_rec* structure used by the module
  193.   handler; instead of assuming the variable is always named "cmd".
  194. - Two new directives, AllowUser and DenyUser, work exactly like
  195.   AllowGroup/DenyGroup, except a "user-expression" is used instead
  196.   of a group-expression.  The expression has the same syntax.  I know
  197.   proftpd is in code freeze, but someone brought it to my attention
  198.   that this represents more of a "bug" than a lack of feature.
  199. - AllowGroup now works in <Limit LOGIN> blocks.
  200. - MaxClientsPerHost fixed.  PR#46 (vlad@elis.tusur.ru)
  201. - New command line option, --persistent (or -p) [0|1].
  202.     0 = Disable _default_ PersistentPasswd support.
  203.     1 = Enable _default_ PersistentPasswd support.
  204.   Note that the option ONLY changes the default, it can still be
  205.   explicitly set via the "PersistentPasswd" directive.
  206. September 12, 1998 - Version 1.1.7pre1
  207. - **CODE FREEZE**
  208. - %L in DisplayLogin/DisplayFirstChdir now displays FQDN, likewise
  209.   %E (by default) is `root@fqdn'.
  210. - TransferLog NONE
  211.     Disables all transfer logging (xferlog)
  212.   WtmpLog NONE
  213.     Disables wtmp logging
  214.   SystemLog NONE
  215.     Disables all syslog logging
  216. - Potential segv during subsequent transfer operations after a RNTO
  217.   fails fixed.  PR#45 (jay@cimedia.com)
  218. - Added contrib/mod_ratio.c and contrib/README
  219. - Native CC ports for IRIX 6.3, DEC OSF/1 and AIX 3.2
  220. - New directive 'UseReverseDNS', takes one boolean argument
  221.   (on|off|true|false).  Controls whether or not reverse DNS lookups
  222.   are performed on *data connections* (reverse lookups are ALWAYS
  223.   performed on control connections).  The default is `on'.  With
  224.   reverse lookups disabled, the remote host name of a data connection
  225.   if always set to the ascii equiv. of the dotted quad IP address.
  226. September 8, 1998 - Version 1.1.6pl2
  227. - Added contrib/ directory for contributed _unsupported_ utils/etc.
  228.   Currently contains a third-party rewrite of the perl script `xferstats'.
  229. - Added xferlog.5 manpage.
  230. - Some tweaking to tcp and ip options, attempting to increase localhost
  231.   performance on Linux 2.1.* kernels.  Now should get about 2MB/s
  232.   on 2.1.* and > 5MB/s on 2.0.*.  Not sure why 2.0.* is faster, still
  233.   looking at this.  Supposedly setting a large MTU in 2.1.* kernels
  234.   can help greatly.
  235. - HideGroup now works if the file/directory is owned by the
  236.   current user.
  237. - Symlinks should now be displayed properly (again?!)
  238. - The SIZE command now always returns files sizes as though IMAGE mode
  239.   (binary) was the current transfer mode.  Calculating the transfer size
  240.   on extremely large files in ascii mode can take a long time, and 
  241.   represents a potential DoS attack.
  242. - Two new directives: PathAllowFilter and PathDenyFilter.  Both take
  243.   a single regular expression argument which respectively allow and
  244.   disallow stored files depending on the regular expression match.
  245.   Example:
  246.   PathDenyFilter "(.ftpaccess)|(.htaccess)$"
  247.   Note that these directives currently require libc posix regex
  248.   support (regcomp()/regexec(), etc).  If not detected during
  249.   configuration/compilation, you'll received a message indicating
  250.   that the directives cannot be used, should you try to use them.
  251.   A built-in regex library will hopefully be provided in the future.
  252. - The -HUP signal (rehash) no longer loses all bindings (causing
  253.   proftpd to not respond on any configured ports).  PR#40
  254.   (mreimer@vpop.net)
  255. - BSDI 3.1 port tested.  uid->user mapping should now work inside
  256.   chroot, as well as authentication working properly.  PR#39
  257.   (vermont@gate.net)
  258. - sign problem fixed with PORT and PASV commands (affected Solaris)
  259. - *really* long filenames will no longer cause an FPE in mod_ls
  260. August 13, 1998 - Version 1.1.6pl1
  261. - New directive context, <Global>.  Most other directives can be used
  262.   inside a <Global> </Global> context (with the exception of a few
  263.   where it makes no sense to do this).  Each <Global> tree is specially
  264.   parsed and "merged" into BOTH the main host and all virtual hosts.
  265.   This has the desirable affect of allowing the creation of a "global"
  266.   configuration which is applied everywhere.  Multiple <global>
  267.   blocks can be used; they will all be merged together after the
  268.   configuration file is parsed.
  269. - New core module, modules/mod_log.c, implements the following new
  270.   directives and features:
  271.   * SystemLog <filename>
  272.     Redirects all "normal" syslog logging to the given filename.
  273.   * LogFormat <nickname> "<format string>"
  274.     Create a custom logging format to be identified by <nickname>.
  275.     The format string can contain one or more of the following meta
  276.     characters:
  277.     %b                  - bytes sent for request
  278.     %f                  - filename stored or retrieved
  279.     %{FOOBAR}e          - contents of environment variable FOOBAR
  280.     %h                  - remote host name
  281.     %a                  - remote ip address
  282.     %l                  - remote logname (from ident)
  283.     %p                  - port of server serving request
  284.     %v                  - servername of server serving request
  285.     %P                  - process id of server serving request
  286.     %r                  - full command received from client
  287.     %t                  - Time
  288.     %{format}t          - formatted time (strftime(3) format)
  289.     %T                  - Time taken to transmit/receive file, in seconds
  290.     %s                  - Numeric response code (status)
  291.     %u                  - Local userid
  292.     Default format is: "%h %l %u %t "%r" %s %b"
  293.   * ExtendedLog <log-filename> [<command-classes] [<format-nickname>]]
  294.     Creates an "extended" log.  <command-classes> is a comma delimited
  295.     (no whitespace!) list of which commands to log (by class).  If
  296.     no classes are specified, ALL commands are logged.  Valid classes
  297.     are:
  298.     none                - No commands
  299.     auth                - Authentication commands (USER, PASS)
  300.     info                - Informational commands (PWD, SYST, etc)
  301.     dirs                - Directory commands (LIST, CWD, MKD, etc)
  302.     read                - File reading (RETR)
  303.     write               - File/directory writing or creation (STOR, MKD)
  304.     misc                - Miscellaneous commands (SITE, etc)
  305.     all                 - Log ALL commands
  306.     <format-nickname> must be a predefined log format created with
  307.     LogFormat.  If no format-nickname is specified, the default
  308.     ("%h %l %u %t "%r" %s %b") format is used.
  309.     ExtendedLog directives can be placed in the main server config,
  310.     or in a <Global> or <VirtualHost> context, allowing you to have
  311.     completely separate logfiles for different virtual hosts.
  312. - New directive MaxInstances, used to control the maximum number of child
  313.   processes allowed in standalone mode (and thus counter a DoS attack).
  314.   Default is 'none' (unlimited child processes).
  315. - New directive MaxClientsPerHost, PR #38 (vlad@elis.tusur.ru), restricts
  316.   the maximum number of connections allowed from a given host/userid pair.
  317.   Useful inside <Anonymous> blocks.
  318. - No longer susceptible to "FTP bounce" attack (PORT command with low-
  319.   numbered port)
  320. Aug 9, 1998 - Version 1.1.6
  321. - "./" and "../" are NOT listed in directory listings again.  This feature
  322.   has been previously added per user request, but it is NOT standard
  323.   and screws with mirroring software in a big way.  Using the
  324.   LsDefaultOptions directive with a '-a' argument will cause ALL .dotfiles
  325.   to be displayed, including "./" and "../".
  326. - New directive 'TimeoutStalled', used to control the maximum number
  327.   of seconds a data connection can be open w/ no actual data being
  328.   tranferred.  Default is 'TimeoutStalled none' (no timeout).
  329. - inet_aton() check put back in configure script.  inet_addr is now
  330.   only used if no inet_aton() available on target platform.
  331. - Verified OpenBSD 2.3 port works, one small fix for shadowed password
  332.   handling.
  333. - Added "true" vsnprintf()/snprintf() for OSF and other platforms
  334.   that need it.
  335. Aug 4, 1998 - Version 1.1.6pre4
  336. - New directive 'ScoreboardPath', sets path for scoreboard file(s).
  337.   Default is: /var/run
  338. - ftpwho now takes -v argument, showing current working directory and
  339.   full host name for each connection.
  340. - scoreboard file (/var/run/proftpd-*) now contains much more information,
  341.   as well as a header with magic number + version to aid in later
  342.   file format changes.
  343. - build/make fixes
  344. July 31, 1998 - Version 1.1.6pre2
  345. - __vsnprintf will now be used on Solaris systems.
  346. - ident requests now timeout after 10 seconds, to avoid the ident
  347.   firewall (or NAT) problem.  default timeout can be changed
  348.   in include/options.h
  349. - Can now be built outside of source tree (supposedly).  Now uses
  350.   autoheader to generate config.h.in.  
  351.   (PR#36 - objectx@polyphony.scei.co.jp)
  352. July 30, 1998 - Version 1.1.6pre1 (cvs only)
  353. - After authentication, clients can no longer use USER or PASS 
  354.   commands (PR#37 - vlad@elis.easur.edu.ru).
  355. - New directive 'Bind' (syntax: Bind <address>), permits binding of
  356.   additional IP addresses to a VirtualHost (or main configuration).
  357.   Bind may be used multiple times in a given context.
  358. - AuthUserFile w/ same uid now should work correct for DefaultRoot
  359.   purposes.  Keep in mind that there will _definitely_ be some oddities if
  360.   you use duplicate uids/gids in your AuthUserFile/AuthGroupFiles.
  361. - Symbolic links now properly "point" to their target (rather than
  362.   to a bogus permission string)
  363. - ftpwho now shows the % of transfer complete for sessions actively
  364.   in RETR mode.  **WARNING**, because the scoreboard file format
  365.   has now changed, make absolutely sure you do a complete 'make install'
  366.   in order to update ftpwho/ftpcount when installing 1.1.6*.
  367. - ./ and ../ are now ALWAYS displayed in file listings.
  368. - New directive 'LsDefaultOptions', allows ftp admin to specify
  369.   "default" options that will apply to all LIST/NLST/STAT commands
  370.   (such as -a to display .dotfiles)
  371. - New SyslogFacility directive, used to configure the syslog facility
  372.   that proftpd uses for all logging.  When this directive is used,
  373.   ALL logging is done at the given facility, rather than being broken
  374.   up into AUTH/DAEMON.
  375. - DirFakeMode, similar to DirFakeUser/DirFakeGroup, allows a "fake"
  376.   octal mode to be configured, which all files/directories in the
  377.   given context will be listed with.  Does not affect real permissions
  378.   in any way.
  379. July 21, 1998 - Version 1.1.5pl4
  380. - mget should now work correctly (bug fix in fs_dircat)
  381. - configure problem with Linux libc5 system fixed
  382. - Bug fixes for match_ip (PR#35 -- eff@icomm.ru)
  383. - AuthGroupFile now works correctly again.
  384. - Fix (hopefully) for solaris compilation (libresolv)
  385. July 19, 1998 - Version 1.1.5pl3
  386. - dec unix portability fixes (fnmatch & glob)
  387. July 18, 1998 - Version 1.1.5pl2
  388. - now compiles under AIX 4.2.1.  Note: still quite a few compiler
  389.   warnings, but then again, the AIX header files are definitely
  390.   hinky.  gcc only.
  391. - portability/compiler warning cleanup under irix 6.4.  gcc only.
  392. - mod_auth.c now uses setgroups() instead of initgroups() so that
  393.   AuthGroupFile will work correctly for setting up group membership
  394. - "trapped" inside welcome.msg (or DisplayLogin directive file) should
  395.   no longer occur if file does not exist.
  396. - cd ~ will no longer dump core
  397. - IRIX 6.2 portability fixes (thanks to jg@meer.net)
  398. - modules/glue.sh should now be portable (heh)
  399. - Deny/Allow directives now allow CIDR syntax (xxx.xxx.xxx.xxx/xx).
  400. - .ftpaccess (dynamic configuration) is now only read ONCE per directory
  401.   (unless it's mtime changes).  Should improve speed greatly.
  402. July 14, 1998 - Version 1.1.5pl1
  403. - GNUism fix in 1.1.5 accidentally removed the INSTALL variable, so
  404.   make install will not work in 1.1.5.
  405. July 14, 1998 - Version 1.1.5
  406. - Removed GNUisms from Make.* files
  407. - Minor portability fixes.
  408. July 10, 1998 - Version 1.1.5pre3 (cvs only)
  409. - ShowSymlinks Off directory virtualization should now work better
  410.   (had problems with cdup, etc)
  411. - Portability fixes for Solaris 2.5.1
  412. - Minor proof reading of doc/API, with some additions.
  413. - Minor code cleanup and obvious fixes to header and module source.
  414. - If ShowSymlinks off is set, broken symbolic links are now completely
  415.   hidden in directory listings.
  416. - cwd should now work properly, instead of responding "No such file
  417.   or directory" in some cases.
  418. - HideUser/HideGroup work again (broken with conversion to vfs)
  419. - Minor fixes in modules, now includes specific priority so cascading
  420.   handlers will work properly.
  421. - add_response()/add_response_err() should now work properly across
  422.   module handler calls.  The response list is sent to the client once
  423.   all handlers have run.
  424. - src/data.c now properly uses add_response()/add_response_err()
  425. - mod_ls.c should now handle aborted data connections properly using
  426.   add_response_err()
  427. - src/fs.c fixed so that new files are opened mode 0666 (which will of
  428.   course be appropriately modified by the current umask)
  429. July 9, 1998 - Version 1.1.5pre2 (cvs only)
  430. - Patch to GNU glob() so that it no longer tries to closedir() on
  431.   a NULL stream.
  432. - In order to make glob() work with the virtual fs, it's pretty much
  433.   necessary to have GNU glob().  Added additional tests in configure
  434.   so that the provided GNU glob() will be compiled in if any important
  435.   "GNUisms" of the target platform are missing.
  436. - First attempt at virtual file system modularity.  new core file src/fs.c,
  437.   all file operations are now piped through here.  Added a new test module,
  438.   mod_tar.c, however do NOT be tempted to use it yet, it won't work
  439.   properly.  Still more work to be done (hash tables, etc) in src/fs.c,
  440.   before it's really functional.
  441. - Optimized src/dirtree.c quite a bit, in order to get the number of
  442.   stat()/lstat()s down.  Still lots of work to be done in this area.
  443. - Added add_response() and add_response_err() core functions so that
  444.   it is now easier for modules to add a response to the list send to
  445.   clients once all handlers have been called.
  446. - ShowSymlinks now defaults to 'On' in ALL cases (both anonymous and
  447.   otherwise).  This seems to make more sense.
  448. - include/privs.h modified to be more portable.  Now uses seteuid()
  449.   if possible, otherwise setreuid().  posix saved uids are no longer
  450.   "manipulated", as this can be non-portable (some bsds for example).
  451. - Added fgetpwent()/fgetgrent() to libsupp for systems which do not
  452.   provide it in libc.  configure now checks for these functions.
  453. - Added conditional code for FreeBSD2.* and 3.*, so sockets are created
  454.   as root (and thus the SO_REUSEADDR problem doesn't occur).
  455. June 27, 1998 - Version 1.1.5pre1 (cvs only)
  456. - Complete redesign of modules API.  New file "doc/API" documents the 
  457.   version 2.0 API.  The redesign _significantly_ enhances module
  458.   capabilities, including "cascading" command handlers, authentication
  459.   handlers, and more.  This will allow third-party modules to
  460.   significantly enhance & change proftpd's behaviour.  Of important note
  461.   are:
  462.   * New module modules/mod_unixpw.c, which implements the new 2.0
  463.     authentication module API in regard to unix password (nis,
  464.     /etc/passwd, etc) lookups and authentication.
  465.   * New core functions in src/auth.c.  All authentication/user/group/
  466.     password operations are now handled by the auth_* functions, which
  467.     provide the "glue" to the modular authentication system.
  468.   * New directive 'PersistentPasswd', allows the "persistent" password
  469.     feature to be enabled/disabled at runtime.  The default is platform
  470.     dependant (on whether or not configure determines that this is needed).
  471.     If you are running NIS, you will VERY likely want to shut this off.
  472.   * AuthUserFile and AuthGroupFiles now turn on persistence for passwd/
  473.     group file lookups, and will now base authentication (as well as
  474.     directory listings) on the indicated file(s).
  475.   * A sample module has been included (modules/mod_sample.c).  This
  476.     is a real working module that can be included in proftpd with the
  477.     "--with-modules=mod_sample" (see below) argument to configure.
  478.     The module doesn't do anything terribly useful, but it's extensively
  479.     documented (well, sort of :}).
  480.   * Additional modules may now be installed/configured at configure
  481.     time.  The core modules (mod_core, mod_auth, mod_xfer, mod_site,
  482.     mod_ls and mod_unixpw) must ALWAYS be compiled in, however add'l
  483.     modules can be added using the '--with-modules=[module_list]'
  484.     argument to configure.  [module_list] is a colon seperated list
  485.     of add'l modules *w/out* .o or .c extensions.  Example:
  486.     ./configure --with-modules=mod_sample:mod_mymod
  487. - When binding to port 20, proftpd will now retry the bind up to 10
  488.   times if it fails with "Address in use".
  489. June 26, 1998 - Version 1.1.4
  490. - RootLogin should now work as advertised.
  491. - A few configure script fixes, now tests for libresolv & libbind.
  492. - DirHideUID and DirHideGID directives have been renamed to
  493.   DirFakeUser & DirFakeGroup, respectively.  These seem to make
  494.   more sense, as "Hide" in proftpd is used elsewhere to mean files &
  495.   directories actually _invisible_ to the user.
  496. - Updated Free Software Foundation address.
  497. - PR#29: MaxClient anonymous fix
  498. June 14, 1998 - Version 1.1.4pre1
  499. - Ooops.. new i/o code didn't properly detect EOF.  Fixed.
  500. - A few fixes from Andrew Tridgell <tridge@samba.anu.edu.au>
  501.   (I think we're almost ready to go to tarball, once the timeout
  502.     problems are resolved)
  503. - Timer problems w/ new i/o code should _hopefully_ now work.  Please
  504.   let me know immediately if there are any timeout related problems.
  505. - STAT command is now back in (and moved to mod_ls).
  506. June 13, 1998 - Version 1.1.3 (cvs only)
  507. - CHANGES has been renamed to changelog
  508. - The I/O system has been *completely* rewritten.  This was done for
  509.   three reasons: simplicity, to pave the way for easier module
  510.   linkage (i.e. mod_pam, etc), and because the old way just wasn't
  511.   Right<tm>.  :P  The new system is non-asyncronous (unlike the old),
  512.   meaning that proftpd processes now block while transfering data.
  513.   As a primary result of this, recursive directory listings (ls -R)
  514.   will now work exactly as expected (no more ncftp timeouts).  Much
  515.   code has been removed from modules/mod_xfer, and a new core
  516.   object file has been added: data.c, who's purpose is to handle
  517.   everything necessary for data connections.  Of course, src/io.c
  518.   has changed vastly because of this.
  519. - Numerous fixes to mod_ls.c, so that aborted directory listings
  520.   are now handled properly, and some optimization.
  521. - Fix in dirtree.c, now sure how this was even working, but a bad
  522.   pointer cast resulted in directives inside a <Limit> block not
  523.   being iterated through properly.
  524. - PATH_MAX fixed in mod_ls
  525. - GLOB_PERIOD is now tested for in configure, if it's not found
  526.   gnu glob*() is compiled in, regardless of glob() availability
  527.   on the target system.
  528. - PR#27 (gustav@pvv.ntnu.no) applied, with some modifications.
  529.   This moves some of the config macros used by modules to dirtree.h
  530.   (where they really belong), as well as configuration support routines
  531.   to dirtree.c.  Also adds two additional directives [Note: I altered
  532.   their names slightly to make them a bit more recognizable, also
  533.   extended their usage], which are as yet undocumented:
  534.  
  535.   DirHideUID On|Off [<userid to display>] -
  536.     Causes all directory listings to be displayed as though they
  537.     are owned by <userid>.  If <userid> is not specified,
  538.     the username "ftp" is used instead.
  539.   DirHideGID On|Off [<groupid to display>] -
  540.     As above, however this affects the group of files and dirs
  541.     listed instead of the owner.
  542.   Both directives can be used in main config, <VirtualHost> and
  543.   <Anonymous> blocks.
  544. - New RootLogin directive (by popular request <g>).  This directive
  545.   takes one boolean argument and allows root login <yuck> when enabled.
  546.   Need I even say "Be Careful"?  root logins are still logged, however.
  547. - New IdentLookups directive.  Undocumented, controls whether or not
  548.   the RFC1413 protocol is used upon user connect to "attempt" to
  549.   determine the remote username (which is used in certain messages).
  550.   Default is that ident lookups are on.
  551.   Syntax: IdentLookups off
  552. June 1, 1998 - Version 1.1.3pre2 [not released]
  553. - A few ansi C fixups, should aid w/ portability.  Thanks to
  554.   Andrew Tridgell <tridge@samba.anu.edu.au> for PR#23.
  555. - <Directory> syntax now allows for "~/dir" or simply "~".  When such
  556.   a directory is used, resolution of the actual path is "defered" until
  557.   a user authenticates, at which time ~ is replaced with the user's
  558.   full home directory (just as DefaultRoot does).
  559. May 26, 1998 - Version 1.1.3pre1
  560. - TransferLog _should_ now be configurable in either main config,
  561.   <VirtualHost> or <Anonymous> contexts. PR#19
  562. - Patch from 1.0.x: PR#18
  563. - No code changes, but one undocumented feature of DefaultRoot
  564.   is that the syntax "DefaultRoot ~/directory" will cause all matching
  565.   users to be jailed into $HOME/directory.
  566. - Massive code changes in mod_auth, all for the support of the new
  567.   AnonymousGroup directive (undocumented, at this time).
  568.   Syntax: AnonymousGroup <group-expression>
  569.   All users matching <group-expression> are assumed to be anonymous
  570.   logins (i.e. require no password).  Be careful with this one. :)
  571.   Useful for a "all anonymous" virtualhost, such as.
  572.   <VirtualHost 10.0.0.1>
  573.     DefaultRoot ~/ftp
  574.     AnonymousGroup users
  575.   </VirtualHost>
  576.   Thus, all users in group `users' now have their own private anonymous
  577.   ftp site (assuming they have an `ftp' directory).  Site wide access
  578.   control for home directories will come next.  <grin>
  579. May 25, 1998 - Version 1.1.2
  580. - Various small patches from production source tree (PR#16 & PR#17)
  581. - Port 0 now disables socket binding on a particular host or virtualhost
  582.   (see development.notes for technical info)
  583. - A few misc. changes to mod_ls.
  584. May 24, 1998 - Version 1.1.2pre2
  585. - anonymous Directory/User patch from 1.0.3.
  586. - Finally broke down and fixed the "port 20" problem.  Note that there
  587.   was NO GOOD WAY TO FIX THIS, so I settled for the lesser of all evils.
  588.   Not sure if it will stay this way forever, but proftpd now behaves like
  589.   legacy ftp servers and uses either posix.1 saved-uids or bsdish uid
  590.   swapping when a user authenticates, which essentially means that it
  591.   can "restore" root privs if needed (such as to bind to a low numbered
  592.   port).  This is a _major_ change in design, policy-wise at least (code
  593.   changes are minimal).  Strongly suggest those running 1.1.x take a look
  594.   at the code to make sure there are no gaping holes.
  595. - because of the above change, proftpd now blocks nearly all signals when
  596.   switching to root and performing privileged operations.  Such operations
  597.   have also been altered so that they should never block (and thus signals
  598.   are unblocked immediately).
  599. May 21, 1998 - Version 1.1.1
  600. - Fixed mod_ls to handle ShowSymlinks directive properly
  601. - Added glob.c/glob.h from gnu libc6 to libsupport, and appropriate
  602.   detection to configure script.  glob() will now be available on non
  603.   posix.2 systems.
  604. - Added DenyGroup and AllowGroup directives (see html docs)
  605. May 20, 1998 - ** Version 1.1.1pre1 branched off from 1.0.3pre1
  606. - mod_ls now in place, list and nlst commands now fully support
  607.   -R (recursion) and the like.  Created new cvs repository
  608.   (/var/proftpd-dev) for development version.  Please bang on this
  609.   to see if it breaks.
  610. - dropped old "auth deamon" support from 1.1.0pre-alpha.  It was
  611.   the right direction, but not the "right way".
  612. May 20, 1998 - Version 1.0.3pre1 (cvs only)
  613. - RFC patch (Entering Passive Mode)
  614. - SIGSEGV when unable to connect to client data port.
  615. May 19, 1998 - Version 1.0.2
  616. - uid/gid swapping is now used on systems that don't support posix.1
  617.   saved ids.  If your libc's headers defined _POSIX_SAVED_IDS, the
  618.   saved id mechanism will be used.
  619. - Outbound data connections now bound to the appropriate virtual host
  620.   address rather than the main system address (firewall related)
  621. - Some additional #ifdefs inserted for solaris2.x.
  622. - Various RFC959 patches...
  623.   - Multiline replies are now fully RFC compliant.
  624.   - DELE and RMD now return 250 instead of 200.
  625.   - MKD now returns 257 "full/path/to/new/dir" - directory successfully created.
  626.   - PWD and MKD now properly quote the " character.
  627. May 18, 1998 - Version 1.0.1
  628. - Added scripting in configure.in to check for various C compiler
  629.   flags "desired", some of which are gnuisms (such as -Wall).  Non-gcc
  630.   compilers should no longer choke on such.
  631. - Added Solaris2.6.README, regarding oddities with solaris' xti.
  632. - Incorporate patch from Kelemen Peter <fuji@chiara.csoma.elte.hu>:
  633.   - Solaris 2.6 typedefs in_addr_t in /usr/include/netinet/in.h,
  634.     ugg.
  635. - Incorporate patch from Simon Wilkinson <sxw@dcs.ed.ac.uk>:
  636.   - Problem with NAMLEN macro, introduces possibility of proftpd
  637.     underallocating and segfaulting.  [Ed: it's good to get rid of this
  638.     one, thanks Simon!]
  639. - Incorporate patch from Stephen R. van den Berg <srb@cuci.nl>:
  640.   - Two bugfixes with respect to the HideNoAccess flag.
  641.   - Fix a bug with respect to the default hostname taking over a specific
  642.     virtual host by accident.
  643.   - Allow for passwd and group file specification.  This allows one
  644.     to completely virtualise a virtual host with a separate user/group
  645.     list. [Ed: This also most _DEFINITELY_ requires NEED_PERSISTANT_PASSWD]
  646. ???????? ??, 1998 - Version 1.0.1
  647. - SITE CHMOD now works properly with octal modes that don't have a
  648.   '0' prepended (patch originally released as 'proftpd-1.0.0-chmod.patch'.
  649. - proftpd-1.0.0-localtime.patch applied.  Directory listings return
  650.   localtime rather than gmtime.  Note that the mdtm localtime patch has
  651.   NOT been applied, and will not (it's just plain "wrong"). :)  It can
  652.   be found at ftp://ftp.proftpd.org/patches
  653. December 29, 1997 - Version 1.0.0
  654. - MDTM no longer reports certain files as non-existant.
  655. - NOOP command now correctly implemented.
  656. - Minor cleanups/porting aids.
  657. - Several potential stack overrun bugs fixed.
  658. - Numerous fixes that could affect <Limit> blocks depending on your
  659.   usage of symlinks.  All <Limit> checking is now done on *absolute*
  660.   directories, after symlinks have been recursed.
  661.   Status: Complete
  662. November 18, 1997 - Version 0.99.0pl11
  663. - Fixed bug which could cause proftpd to catch SIGSEGV if a
  664.   'UserAlias' directive was the last non-BLOCK directive in a 
  665.   particular context.
  666. - fsync() is no longer called in src/log.c, typo fixed in
  667.   src/support.c
  668. - setsid() is now used instead of ioctl() in src/main.c, should
  669.   be more portable.
  670. - Numerous fixes in directive tree management, as well as some
  671.   optimization.  If it weren't for this change, pl11 would be
  672.   1.0.0, but I'm not totally convinced that something didn't slip
  673.   through in all the changes.  Please let me know if proftpd
  674.   behaves oddly in relation to configuration, or if directives
  675.   don't behave in a documented fashion.
  676. November 11, 1997 - Version 0.99.0pl10
  677. - MD5 hashed password authentication will now work if your libc
  678.   supports transparent use of md5_crypt() from the crypt() function.
  679.   Only libc6 is guaranteed to do this, some libc5s do (under Linux).
  680.   MD5 support has NOT been natively added, your libc MUST provide it.
  681. - Fixed bug involving certain directives not being found if at least
  682.   one <Directory> context didn't exist for a server/anon configuration.
  683.   Notably, AllowOverwrite will now work if placed in a <VirtualHost>
  684.   context without being inside of a specific <Directory> block.
  685. - Fixed memory hole/bug in inet_copy_connection(), which may have
  686.   been responsible for data loss/corruption/odd behavior.
  687. - Added "magic cookie" replacement strings for DisplayLogin &
  688.   DisplayFirstChdir files.  These are as follows:
  689.     %T Current Time
  690.     %F Available space on file system
  691.     %C Current working directory
  692.     %R Remote host name
  693.     %L Local host name
  694.     %u Remote username as reported by the ident protocol
  695.     %U Local username used at login
  696.     %M Maximum number of connections in this context
  697.     %N Current number of connections in this context
  698.     %E Server admin's email address (as specifed by the
  699. ServerAdmin directive)
  700. - Added ServerAdmin directive to specify an e-mail address for the
  701.   ftp administrator.  Defaults to 'root@hostname' if not specified.
  702. - Added support for ident protocol lookups, used for "magic cookies"
  703.   in DisplayLogin/DisplayFirstChdir.
  704. October 29, 1997 - Version 0.99.0pl9
  705. - Added man pages for ftpwho(1) and ftpcount(1).
  706. - Added X* versions of all the three letter commands.  Some FTP clients
  707.   (Win95's default, for example) use these instead of the three letter
  708.   (RFC) versions.
  709. - Passwords can now contain spaces.
  710. - Added the SIZE command (not sure how it got left out), so that FTP
  711.   clients which rely upon it to estimate transfer time (ie. ncftp)
  712.   now work properly.
  713. - Cosmetic fix.  Anon FTP connections now display "send e-mail address
  714.   as password" rather than the "password required" message.
  715. - IPs that do not map to names are now displayed properly when no
  716.   configuration is defined for the address (no VirtualHost).
  717. - Added an ftpshut utility (plus man pages) for admins.  Installed in
  718.   /usr/sbin by default.
  719. October 12, 1997 - Version 0.99.0pl8
  720. - ** CODE FREEZE **  No new features will be added to this development
  721.   tree.  pl8 will be released shortly for testing.  If all goes well
  722.   for this (or future pls if needed), this will become 1.0.0.  Then,
  723.   a new tree will be started for 1.1.x, for all the new and lusted after
  724.   featurage. =P
  725. - Added a simple man page, which is installed (by default) as
  726.   /usr/man/man8/proftpd.8.
  727. - Added the non-RFC (but defacto standard) MDTM command, used by some
  728.   clients to determine the modification time of a file (debian's
  729.   dpkg, for example).
  730. - Bug fix in the PORT command, didn't allow arguments greater than
  731.   254 to be passed, which means that any two-byte port which consists
  732.   of '255' caused "Illegal PORT command."
  733. - If a dotted quad IP is used in a <VirtualHost> block, proftpd refuses
  734.   to allow connections (FQDN must be used).  Fixed -- Numeric IPs
  735.   will now work correctly.
  736. - Bug which caused proftpd to crash when transfering large amounts of
  737.   ASCII mode data (notably, gigantic directory listings) fixed.
  738. - Added --enable-shadow and --enable-autoshadow arguments to the
  739.   configure script.  These are for use by binary distributors, to
  740.   force certain code options to be compiled in.  For more information,
  741.   see the TODO file.
  742. September 23, 1997 - Version 0.99.0pl7
  743. - Added 'DefaultRoot' directive which allows all users or certain
  744.   groups to be chroot() jailed at login (into either their home
  745.   directory, or a specified directory).  See the directive reference
  746.   documentation (http://www.proftpd.org/reference.html) for more
  747.   info.
  748. - Fixed nasty bug in I/O, where a "infinite loop" was possible if
  749.   a client dropped the control connection at just the right moment.
  750.   This bug fix is the main impetus behind releasing 0.99.0pl7 ASAP.
  751.   Hopefully all such "stuck loop" problems are fixed now.
  752. - Directory interpolation (i.e. ~username) is now done during normal
  753.   run time, instead of at config file parse time.  This will prevent
  754.   problems with user's home directories changing and proftpd needing
  755.   to be restarted.  Note: This still needs some rework in the next
  756.   version.
  757. - Fixed bug in code dealing with symlinks.  Symlinks will no longer
  758.   cause proftpd to "hang" in a loop eating all CPU.  Note: Maximum
  759.   symbolic link depth is 32.
  760. - Complete refit of utmp/wtmp code.  Utilities such as 'last'
  761.   should now work correctly -- no more missing host field, odd tty
  762.   names and permanent ("still logged on") logins.
  763. - Clients which estimate download transfer time will now work
  764.   correctly.
  765. - autoconf/configure should now produce configure/header files that
  766.   will allow ProFTPD to compile _relatively_ cleanly under Irix 5.3,
  767.   BSDI 2.1 and Solaris 2.5.  Solaris does report some non-harmful
  768.   warnings due to broken sun header files.
  769. July 8, 1997 - Version 0.99.0pl6
  770. - Numerous code cleanups so compilation *should* look clean with
  771.   -Wall.
  772. - Added 'DefaultServer' directive to allow configuration of a particular
  773.   server (virtual or root) which handles all incoming "unknown"
  774.   destination addresses.  See documentation for more info.
  775. - Fixed a *massive* parsing bug which caused any operations on filenames
  776.   or directories with whitespace in them to fail.
  777. - Fixed bug which caused SIGSEGV when trying to login to anonymous
  778.   server with unknown username.
  779. - Added more code for portability, namely fnmatch() and strsep().
  780.   Irix 5.3 and BSDI ports close but not done, Irix is *almost* there.
  781.   (thanks go to Chris Brown <chrisb@siggy.iceonline.com> for all his
  782.   efforts)
  783. - Debug level 4 now logs all commands to syslog (instead of level 2).
  784.   PASS commands are intentionally hidden.
  785. June 26, 1997 - Version 0.99.0pl6-private
  786. - Added a support library which will include all code that might
  787.   be missing from a particular platform's libc.  Currently includes
  788.   getopt() and getopt_long().  This is to aid portability issues.
  789. - Added 'SocketBindTight' directive to configure how listening sockets
  790.   are bound when proftpd is in standalone mode.  See reference.html
  791.   for more info.
  792. - Fixed problem with CWD/PWD and symlinks.  Navigating through symbolic
  793.   links to directories should now work properly.
  794. - Added 'ShowSymlinks' directive to control how links are displayed
  795.   in directory listings.  See reference.html for more info.
  796. - Allow/Deny/Order directives inside <Limit> contexts now work fully
  797.   and properly.
  798. - A couple GNU autoconf tweaks to aid in porting efforts.
  799. June 10, 1997 - Version 0.99.0pl5
  800. - Major fixes to ftpcount/ftpwho and proftpd's run-time logging.
  801.   ftpcount/ftpwho *should* now accurate report all user's currently
  802.   logged in and proftpd will no longer duplicate entries.
  803. - ASCII xfer from client to server caused occasional corruption.  Fixed.
  804. - Timeouts not working in certain cases due to a race condition.  Fixed.
  805. - ws_ftp95 (some version) had a problem w/ proftpd due to both sides
  806.   of a data connection not being closed.  Fixed.
  807. - Multiple anonymous logins not working properly due to a slight
  808.   recursion bug.  Fixed.
  809. - Idented sample configuration files for easier readability.
  810. - Added AccessGrantMsg, UserPassword and GroupPassword directives.
  811.   See documentation for usage.
  812. June 4, 1997 - Version 0.99.0pl4
  813. - PASV mode transfers fixed.  Netscape and possibly other web browsers
  814.   use PASV mode.
  815. - Top level configuration directives checked as part of normal
  816.   FTP command authorization weren't working unless a <Directory>
  817.   context existed which matched (at some level) the command.
  818.   Example of broken configuration which is now fixed:
  819.   Port 21
  820.   ...
  821.   AllowOverwrite on
  822.   ...
  823.   # No <Directory /*> exists, so AllowOverwrite would not apply
  824. - <Directory /> wasn't being used at all, however <Directory /*>
  825.   worked.  Fixed.
  826. - /var/log/xferlog "wu-ftpd" style logging wasn't recording full
  827.   pathnames of files transfered.
  828. - Various problems with restarted transfers (via REST) either not
  829.   restarting or causing later transfers to not function.  Fixed.
  830. - <VirtualHost> caused "Bad file number".  Fixed.
  831. - Added 'make install' to install proftpd, ftpcount and ftpwho
  832.   (simply a symlink to ftpcount).
  833. **********************************************************************
  834. June 1, 1997 - Version 0.99.0pl3
  835. - First publically available beta.  Submitted into Debian 2.0
  836.   linux distribution w/ some intermediate fixes that will end up
  837.   in 0.99.0pl4