doc/ChangeLog.html
changeset 0 6f7a81934006
child 2 b3afb9f1e801
equal deleted inserted replaced
-1:000000000000 0:6f7a81934006
       
     1 <html>
       
     2 <head><title>ChangeLog</title></head>
       
     3 <body>
       
     4 <p>2000-09-30  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
     5 <ul>
       
     6 
       
     7 <li>Released version 0.96.9
       
     8 
       
     9 <li>python/commands.py (adduser): Fixed a typo that prevents users
       
    10 without a mailbox from being added.
       
    11 
       
    12 </ul>
       
    13 </p>
       
    14 <p>2000-09-15  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    15 <ul>
       
    16 
       
    17 <li>authenticate/authvlib.cc (check): Always set VUSER, even if
       
    18 virtname is blank.
       
    19 
       
    20 </ul>
       
    21 </p>
       
    22 <p>2000-09-14  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    23 <ul>
       
    24 
       
    25 <li>daemon/main.cc: Exit immediately if a SIGPIPE or SIGALRM is
       
    26 caught.
       
    27 
       
    28 </ul>
       
    29 </p>
       
    30 <p>2000-09-12  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    31 <ul>
       
    32 
       
    33 <li>pyadmin/vmailmgr_lib.py (Flag.html): Added this method to print
       
    34 out a HTML select list with the correct item selected.
       
    35 
       
    36 <li>pyadmin/vmailmgr_sessiond.py: New program set up to track
       
    37 session status in memory instead of on disk.
       
    38 
       
    39 <li>pyadmin/vmailmgr_pyadmin.py (cgi_main): Create a Context object
       
    40 for passing in to format_page.
       
    41 
       
    42 <li>pyadmin/vmailmgr_parser.py (Context): Defined this context
       
    43 object that wraps context data.  This will be extended to stack
       
    44 contexts.  When doing a __getitem__, if the key is not found in
       
    45 the context dictionary, that key is evaluated as an expression
       
    46 with the dictionary as local variables.
       
    47 (Foreach.do_end): Pass the formatted sections to
       
    48 stack.append_or_print instead of printing them directly.
       
    49 
       
    50 </ul>
       
    51 </p>
       
    52 <p>2000-09-11  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    53 <ul>
       
    54 
       
    55 <li>Removed all old Python support code, replace by the new
       
    56 "pyadmin" interface.
       
    57 
       
    58 </ul>
       
    59 </p>
       
    60 <p>2000-09-05  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    61 <ul>
       
    62 
       
    63 <li>daemon/dispatch.cc (dispatch_cmd): Don't add "-virtuser" to
       
    64 baseuser name if virtuser is empty.
       
    65 
       
    66 </ul>
       
    67 </p>
       
    68 <p>2000-09-04  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    69 <ul>
       
    70 
       
    71 <li>python/vmailmgr_cgi.py.in (Session): Added prototype for new
       
    72 class to manage session data.
       
    73 
       
    74 <li>daemon/check.cc (CMD): Simplified the logic, elimited the return
       
    75 value.  Now returns either error or OK.
       
    76 
       
    77 </ul>
       
    78 </p>
       
    79 <p>2000-09-01  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    80 <ul>
       
    81 
       
    82 <li>doc/FAQ.sgml: Added section on long POP3 logins.
       
    83 
       
    84 </ul>
       
    85 </p>
       
    86 <p>2000-08-22  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    87 <ul>
       
    88 
       
    89 <li>commands/vdeliver.cc (deliver_partial): Fail permanently if: the
       
    90 open failed, EDQUOT is defined, and the error number is EDQUOT.
       
    91 
       
    92 </ul>
       
    93 </p>
       
    94 <p>2000-08-15  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
    95 <ul>
       
    96 
       
    97 <li>daemon/deluser.cc (CMD): Use new form of vdomain::deluser.
       
    98 
       
    99 <li>lib/vpwtable/reader.cc (vpwtable_reader): Removed the call to
       
   100 end here, which produced a missing reference to
       
   101 vpwtable_reader::end.
       
   102 
       
   103 </ul>
       
   104 </p>
       
   105 <p>2000-08-13  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   106 <ul>
       
   107 
       
   108 <li>commands/*.cc: Moved all the POD man page documentation into the
       
   109 source files using a new CLI documentation generator.
       
   110 
       
   111 </ul>
       
   112 </p>
       
   113 <p>2000-08-11  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   114 <ul>
       
   115 
       
   116 <li>commands/vdeluser.cc: Added an option to prevent vdeluser from
       
   117 deleting a user with a mailbox.
       
   118 
       
   119 <li>lib/vdomain/deluser.cc (deluser): Added a flag to make deluser
       
   120 not delete users with a mailbox.
       
   121 
       
   122 <li>daemon/main.cc: Fixed up some of the cli_* values.
       
   123 
       
   124 <li>doc/FAQ.sgml: Added note regarding difference between vmailmgr
       
   125 and vpopmail.
       
   126 
       
   127 <li>lib/vpwtable/gdbm_read.cc (class gdbm_vpwtable_reader): Added
       
   128 this new subclass of vpwtable_reader.
       
   129 
       
   130 <li>lib/vpwtable/cdb_read.cc (class cdb_vpwtable_reader): Added this
       
   131 new subclass of vpwtable_reader.
       
   132 
       
   133 <li>lib/vpwtable/vpwtable.h (class vpwtable_reader): Removed the
       
   134 short-sighted conditional mess in this class with virtual methods.
       
   135 
       
   136 </ul>
       
   137 </p>
       
   138 <p>2000-08-10  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   139 <ul>
       
   140 
       
   141 <li>Released version 0.96.8
       
   142 
       
   143 <li>authenticate/authvlib.cc (set_user): Call pwentry::export_env
       
   144 instead of doing it manually.
       
   145 
       
   146 <li>lib/misc/pwentry_export_env.cc (export_env): Added this routine
       
   147 to export USER and HOME for a real user.
       
   148 
       
   149 <li>commands/vcheckquota.cc (link_softquota_message): Fixed bug in
       
   150 multiple use of atoi.
       
   151 
       
   152 <li>doc/HOWTO.sgml: Added a note on vsetup.
       
   153 
       
   154 </ul>
       
   155 </p>
       
   156 <p>2000-08-04  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   157 <ul>
       
   158 
       
   159 <li>doc/FAQ.sgml: Added notes on location of qmail-autoresponder and
       
   160 the CVS repository.
       
   161 
       
   162 <li>daemon/autoresponse.cc (autoresponse_read): If the normal
       
   163 autoresponse file can't be read, try the disabled file.
       
   164 (autoresponse_status): Added status command.
       
   165 
       
   166 <li>commands/vcheckquota.cc (link_softquota_message): Added code to
       
   167 symlink in warning message if softquota fails.  This will link the
       
   168 message in each time soft quota fails.
       
   169 
       
   170 </ul>
       
   171 </p>
       
   172 <p>2000-08-03  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   173 <ul>
       
   174 
       
   175 <li>commands/vdeliver.cc (cli_main): Make sure to rewind stdin
       
   176 before executing vdeliver-postdeliver.
       
   177 
       
   178 <li>daemon/lookup.cc: Rewritten to output the entire virtual user
       
   179 data instead of just the mailbox and aliases.
       
   180 
       
   181 <li>commands/vcheckquota.cc: Changed many instances of "int" to
       
   182 "unsigned".
       
   183 (check_quota): Always check incoming message size, and check max
       
   184 count even if no quotas apply.
       
   185 
       
   186 <li>lib/misc/exec.cc (execute_one): Fixed a bug where this would
       
   187 return the raw status value instead of WEXITSTATUS(status).
       
   188 
       
   189 </ul>
       
   190 </p>
       
   191 <p>2000-08-02  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   192 <ul>
       
   193 
       
   194 <li>daemon/autoresponse.cc (autoresponse_write): Applied bugfix that
       
   195 would allow disabled autoresponses to be written.
       
   196 
       
   197 </ul>
       
   198 </p>
       
   199 <p>2000-08-01  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   200 <ul>
       
   201 
       
   202 <li>commands/vcheckquota.cc (exit_msg): Fixed typo (used to say
       
   203 "vdeliver:").
       
   204 (cli_main): Fixed another typo -- VUSER_MAILDIR is not set, plain
       
   205 MAILDIR is.
       
   206 
       
   207 <li>authenticate/checkvpw.cc (main): Removed call to execute
       
   208 checkvpw-postsetuid.
       
   209 
       
   210 <li>authenticate/authvlib.cc (set_user): Added a hook to execute the
       
   211 proper presetuid script.
       
   212 (authenticate): Added a hook to execute the proper postsetuid
       
   213 script.
       
   214 
       
   215 </ul>
       
   216 </p>
       
   217 <p>2000-07-31  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   218 <ul>
       
   219 
       
   220 <li>daemon/lookup.cc (lookup_and_validate): Set the "nodefault" flag
       
   221 in vdomain::lookup to true instead of false -- it's never correct
       
   222 to look up the default user in the daemon.
       
   223 
       
   224 </ul>
       
   225 </p>
       
   226 <p>2000-07-18  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   227 <ul>
       
   228 
       
   229 <li>commands/vcheckquota.cc: Added this new program, originally
       
   230 authored by Eugene Miretskiy, and subsequently modified.
       
   231 
       
   232 </ul>
       
   233 </p>
       
   234 <p>2000-07-17  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   235 <ul>
       
   236 
       
   237 <li>doc/HOWTO.sgml, doc/FAQ.sgml: Updated documentation.
       
   238 
       
   239 </ul>
       
   240 </p>
       
   241 <p>2000-07-05  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   242 <ul>
       
   243 
       
   244 <li>Released version 0.96.7.
       
   245 
       
   246 <li>lib/vpwtable/cdb_read.cc: Added CDB support for the vpwtable
       
   247 reader class.
       
   248 
       
   249 <li>daemon/listdomain.cc (CMD_FD): Adjusted to use the new vpwtable
       
   250 reader.
       
   251 
       
   252 <li>commands/listvdomain.cc (cli_main): Adjusted to use new vpwtable
       
   253 reader.
       
   254 
       
   255 <li>lib/vpwtable/gdbm_read.cc (vpwtable_reader): Added this new
       
   256 class to replace the stream reading support from the vpwtable
       
   257 class.
       
   258 
       
   259 </ul>
       
   260 </p>
       
   261 <p>2000-07-04  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   262 <ul>
       
   263 
       
   264 <li>lib/vpwtable/gdbm_getbyname.cc (getbyname): Lowercase the name
       
   265 before retrieving it.
       
   266 
       
   267 <li>commands/listvdomain.cc (cli_main): Exit with error if listing
       
   268 an individual user fails.
       
   269 
       
   270 <li>lib/vpwtable/gdbm_get.cc (start): Fixed missing gdbm_firstkey.
       
   271 
       
   272 <li>commands/vpasswd2db.cc: Added new utility to convert plain text
       
   273 password tables into whatever vpwtable format was configured.
       
   274 
       
   275 </ul>
       
   276 </p>
       
   277 <p>2000-06-25  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   278 <ul>
       
   279 
       
   280 <li>python/vmailmgr.py.in: Added deluser and chattr commands.
       
   281 
       
   282 </ul>
       
   283 </p>
       
   284 <p>2000-06-24  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   285 <ul>
       
   286 
       
   287 <li>doc/configuration.texi (socket-file): Reinstated this config
       
   288 section.
       
   289 
       
   290 <li>daemon/autoresponse.cc (autoresponse_delete): Added a new
       
   291 command to delete the autoresponse data.
       
   292 
       
   293 <li>lib/misc/maildir.cc (delete_directory): Renamed from
       
   294 delete_maildir.
       
   295 
       
   296 <li>daemon/autoresponse.cc (autoresponse_write): Create the
       
   297 autoresponse directory if it does not already exist.
       
   298 
       
   299 </ul>
       
   300 </p>
       
   301 <p>2000-06-19  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   302 <ul>
       
   303 
       
   304 <li>lib/vpwtable: Added GDBM support in the gdbm_*.cc files.
       
   305 
       
   306 <li>lib/vpwtable/cdb_vpwtable.cc: Made the ".cdb" string a constant.
       
   307 
       
   308 <li>lib/vpwtable: Renamed all the .cc files to "cdb_*.cc".
       
   309 
       
   310 </ul>
       
   311 </p>
       
   312 <p>2000-06-14  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   313 <ul>
       
   314 
       
   315 <li>doc/configuration.texi: Added notes on the autoresponse
       
   316 configuration items, removed the notes on max-fork and
       
   317 socket-file.
       
   318 
       
   319 </ul>
       
   320 </p>
       
   321 <p>2000-06-13  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   322 <ul>
       
   323 
       
   324 <li>daemon/main.cc (cli_main): Rewrote main to use the cli library.
       
   325 This removes extra command line parsing code and incidentally
       
   326 fixes a problem with random not being initialized.
       
   327 
       
   328 <li>daemon/log.cc (log): Revised handling of printing PIDs.
       
   329 
       
   330 <li>daemon/dispatch.cc: Removed "forkstat" command.
       
   331 
       
   332 <li>daemon/main.cc: Removed support code needed to create and accept
       
   333 connections on a UNIX domain socket, in favour of using the new
       
   334 ucspi-unix package.
       
   335 
       
   336 </ul>
       
   337 </p>
       
   338 <p>2000-06-01  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   339 <ul>
       
   340 
       
   341 <li>Released version 0.96.6
       
   342 
       
   343 <li>commands/vdeliver.cc (cli_main): Fixed typo in order of
       
   344 operands in call to exit_msg.
       
   345 
       
   346 <li>lib/misc/map_table.cc (map_table): Lower case all keys to allow
       
   347 for case insensitive comparisons.
       
   348 
       
   349 <li>lib/misc/lookup_domain.cc (find_virtual): Fixed bug: domain
       
   350 names are not case sensitive.
       
   351 
       
   352 </ul>
       
   353 </p>
       
   354 <p>2000-05-31  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   355 <ul>
       
   356 
       
   357 <li>python/vmailmgr.py.in (VUser.from_binary): Fixed some bugs in
       
   358 the conversion of flags.
       
   359 
       
   360 </ul>
       
   361 </p>
       
   362 <p>2000-05-25  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   363 <ul>
       
   364 
       
   365 <li>python/vmailmgr_cgi.py.in (print_html): Added code to print out
       
   366 a HTML error if the requested file could not be printed.
       
   367 (wrap_print): Print out basename+"-success" on success, and
       
   368 provide a default error response if the error file does not
       
   369 exist.
       
   370 
       
   371 <li>daemon/daemon.h (CMD): Removed a bogus "const" from the
       
   372 declarations of the CMD and CMD_FD macros.
       
   373 
       
   374 <li>daemon/autoresponse.cc (CMD_FD): Added proper command logging to
       
   375 this command.
       
   376 (CMD_FD): Fixed type -- a virtual user's password is acceptable.
       
   377 
       
   378 <li>daemon/log.cc: Added a new LOG_MESSAGE constant.
       
   379 
       
   380 <li>doc/FAQ.sgml: Added a brief section on how to configure
       
   381 qmail+patches for use with vmailmgr.
       
   382 
       
   383 <li>doc/configuration.texi (qmail-root): Added this missing section.
       
   384 
       
   385 </ul>
       
   386 </p>
       
   387 <p>2000-05-24  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   388 <ul>
       
   389 
       
   390 <li>python/vmailmgr_cgi.py.in (cgi_main): Trap trying to run the
       
   391 program outside of a CGI environment.
       
   392 
       
   393 <li>python/vmailmgr.py.in (VUser): Added this class to represent the
       
   394 data associated with a virtual user.  A special __getitem__
       
   395 routine allows the data to be read as a dictionary.
       
   396 (Daemon): More code reorganization in this class.
       
   397 (listdomain): Added this command, which returns a dictionary of
       
   398 all the users in the domain.
       
   399 (adduser): Added this command to add a virtual user.
       
   400 (autoresponse): Added this command, which executes the daemon
       
   401 "autoresponse" command.
       
   402 
       
   403 <li>python/vmailmgr_cgi.py.in (wrap_print): Added this new routine,
       
   404 which wraps a call to a vmailmgr command in a try/except block,
       
   405 and prints an output file based on the results.
       
   406 
       
   407 <li>Added SGML documentation from Dan Kuykendall.
       
   408 
       
   409 </ul>
       
   410 </p>
       
   411 <p>2000-05-16  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   412 <ul>
       
   413 
       
   414 <li>python/vmailmgr_cgi.py.in: Moved all the CGI specific
       
   415 functionality into this new module.
       
   416 
       
   417 <li>python/vmailmgr.py.in: Removed the "Response" class and turned
       
   418 error responses into exceptions.  The server socket is not closed
       
   419 at the end of a command to allow a listdomain command to read more
       
   420 data after the initial response.
       
   421 
       
   422 </ul>
       
   423 </p>
       
   424 <p>2000-05-09  Bruce Guenter  &lt;bruce@bruce-guenter.dyndns.org&gt;
       
   425 <ul>
       
   426 
       
   427 <li>commands/vdeliver.cc (cli_main): Error exits from executing
       
   428 "vdeliver-predeliver" would unconditionally result in a temporary
       
   429 failure for qmail.  Fixed to return the actual error number to
       
   430 qmail.
       
   431 
       
   432 </ul>
       
   433 </p>
       
   434 <p>2000-05-02  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   435 <ul>
       
   436 
       
   437 <li>cgi/vchforwards.cc (CGI_MAIN ): Fixed an internal glitch -- the
       
   438 new "do_enable" and "do_disable" internal variables were
       
   439 duplicated.
       
   440 
       
   441 <li>daemon/lookup.cc (lookup_and_validate): Modified to use the new
       
   442 set_defaults method.
       
   443 
       
   444 <li>commands/vchattr.cc: Make size limits refer to bytes.
       
   445 
       
   446 <li>doc/configuration.texi: Indicate that size limits are in units
       
   447 of bytes.
       
   448 
       
   449 <li>commands/vadduser.cc: Make size limits refer to bytes
       
   450 everywhere.
       
   451 
       
   452 <li>commands/vsetup.cc (setup_alias): Modified to use the new
       
   453 set_defaults method.
       
   454 
       
   455 <li>commands/vpasswd2cdb.cc (getpw): Removed set_defaults call,
       
   456 since from_record calls set_defaults after doing conversion from
       
   457 the old format data.
       
   458 
       
   459 <li>commands/vaddusers.cc (add_one): Modified to use the new
       
   460 set_defaults method.
       
   461 
       
   462 <li>lib/vpwentry/from_old.cc (from_old_record): Modified to use the
       
   463 new set_defaults method.
       
   464 
       
   465 <li>commands/vadduser.cc: Modified to use the new set_defaults
       
   466 method.
       
   467 
       
   468 <li>lib/vpwentry/defaults.cc (set_defaults): Add a flag to set the
       
   469 creation time to either now (true) or 0 (false -- for old
       
   470 records), as well as a flag to set the boolean flags.
       
   471 
       
   472 <li>lib/misc/strtou.c: Use UINT_MAX instead of (unsigned)-1.
       
   473 
       
   474 <li>lib/config/showvconfig.cc.in: Use UINT_MAX instead of
       
   475 (unsigned)-1.
       
   476 
       
   477 <li>lib/config/configrc.in: Use UINT_MAX instead of (unsigned)-1.
       
   478 
       
   479 <li>lib/misc/lookup_domain.cc (find_virtual): Use UINT_MAX instead
       
   480 of (unsigned)-1.
       
   481 
       
   482 <li>lib/vpwentry/defaults.cc (set_defaults): Use UINT_MAX instead of
       
   483 (unsigned)-1.
       
   484 
       
   485 <li>lib/misc/utoa.cc (utoa): Use UINT_MAX instead of (unsigned)-1.
       
   486 
       
   487 <li>lib/vpwentry/from_ver1.cc (from_ver1_record): Set the flags
       
   488 before returning.
       
   489 
       
   490 <li>lib/vpwentry/from_old.cc (from_old_record): Set the flags before
       
   491 returning.
       
   492 
       
   493 </ul>
       
   494 </p>
       
   495 <p>2000-04-19  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   496 <ul>
       
   497 
       
   498 <li>doc/vchattr.pod: Added note regarding personal information.
       
   499 
       
   500 <li>doc/vmailmgr-cgi.texi (Top): Added note regarding personal
       
   501 information.
       
   502 
       
   503 <li>commands/vchattr.cc: Allow changing the personal information.
       
   504 
       
   505 <li>lib/vdomain/chattr.cc (chattr): Added code to handle changing
       
   506 the personal information.
       
   507 
       
   508 </ul>
       
   509 </p>
       
   510 <p>2000-04-18  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   511 <ul>
       
   512 
       
   513 <li>doc/FAQ.texi (Does vmailmgr support IMAP?): Updated to describe
       
   514 current status of IMAP support.
       
   515 
       
   516 <li>daemon/dispatch.cc: Added autoresponse dispatch entry.
       
   517 
       
   518 <li>daemon/autoresponse.cc: Added autoresponse command from Mike Bell.
       
   519 
       
   520 </ul>
       
   521 </p>
       
   522 <p>2000-04-14  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   523 <ul>
       
   524 
       
   525 <li>Modified the spec file to put the Courier IMAP module into a
       
   526 seperate package.
       
   527 
       
   528 <li>Copied the necessary sources from Courier IMAP to build a
       
   529 minimal stand-alone libauthmod in order to build the
       
   530 authentication module without needing the Courier IMAP sources.
       
   531 
       
   532 </ul>
       
   533 </p>
       
   534 <p>2000-04-13  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   535 <ul>
       
   536 
       
   537 <li>Released version 0.96.5
       
   538 
       
   539 <li>doc/vchattr.pod: Wrote a man page for the vchattr command.
       
   540 
       
   541 </ul>
       
   542 </p>
       
   543 <p>2000-04-12  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   544 <ul>
       
   545 
       
   546 <li>commands/vdeliver.cc (cli_main): Check if the account has
       
   547 expired before delivering.
       
   548 
       
   549 <li>authenticate/authvlib.cc (check): Check if the acount has
       
   550 expired and fail if so.
       
   551 
       
   552 <li>lib/vpwentry/export_env.cc (export_env): Set
       
   553 "VUSER_MAILBOX_ENABLED" to the new flag.
       
   554 
       
   555 <li>authenticate/authvlib.cc (check): If looking up the base user
       
   556 fails, and virtual_only is set, return instead of failing hard.
       
   557 
       
   558 <li>daemon/chattr.cc (CMD): Allow mailbox enabled flag to be changed
       
   559 by virtual users.
       
   560 
       
   561 <li>commands/listvdomain.cc (show_user): Print out "(disabled)" next
       
   562 to the mailbox directory if the "is_mailbox_enabled" flag is not
       
   563 set.
       
   564 
       
   565 <li>cgi/listvdomain.cc (show_user): Adapted to using
       
   566 vpwentry::from_record instead of vpwentry::from_ver1_record.
       
   567 
       
   568 <li>lib/vpwentry/vpwentry.cc: Set the flag defaults here on creation
       
   569 instead of in set_defaults.
       
   570 
       
   571 <li>lib/vdomain/chattr.cc (chattr): Modified to use the new vpwentry
       
   572 is_mailbox_enabled flag.
       
   573 
       
   574 <li>lib/vpwentry/from_ver1.cc (from_ver1_record): Made this a
       
   575 protected non-static method.
       
   576 
       
   577 <li>lib/vpwentry/from_ver2.cc (from_ver2_record): Made this a
       
   578 protected non-static method.
       
   579 
       
   580 <li>lib/vpwentry/from_old.cc (from_old_record): Made this a
       
   581 protected non-static method.
       
   582 
       
   583 <li>lib/vpwentry/from.cc (from_record): Made this a non-static method.
       
   584 
       
   585 <li>lib/vpwentry/decode.cc: Moved the common pieces from from_ver1
       
   586 and from_ver2 into seperate routines and moved them here.
       
   587 
       
   588 <li>lib/vpwentry/from_ver2.cc (from_ver2_record): Added this routine
       
   589 to do conversions from the new binary record format.
       
   590 
       
   591 <li>lib/vpwentry/to.cc (to_record): Modified to create the new
       
   592 binary record format.
       
   593 
       
   594 <li>lib/vpwentry/from_uint.cc (from_uint): Moved this routine out of
       
   595 from_ver1.cc, as it's common to both ver1 and ver2 (and other)
       
   596 records.
       
   597 
       
   598 <li>lib/vdomain/chattr.cc: Returned the extraneous definition of
       
   599 strtou from here.
       
   600 
       
   601 <li>lib/config/read_uns.cc (read_uns): Coded to use our strtou.
       
   602 
       
   603 <li>lib/misc/strtou.c (strtou): Renamed the C++ source to a C
       
   604 source, and added a header file.  Added a null-pointer and leading
       
   605 space check.
       
   606 
       
   607 <li>lib/vpwentry/vpwentry.h (struct vpwentry ): Removed the
       
   608 enable/disable routines and added a "is_mailbox_enabled" boolean
       
   609 flag.
       
   610 
       
   611 </ul>
       
   612 </p>
       
   613 <p>2000-04-11  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   614 <ul>
       
   615 
       
   616 <li>cgi/vadduser.cc (CGI_MAIN ): Added code to handle adding
       
   617 forwarding at the same time as the user.
       
   618 
       
   619 <li>lib/misc/lookup_baseuser.cc (lookup_baseuser): Modified to use
       
   620 mystring::left instead of a hacked-up constructor call.
       
   621 
       
   622 <li>cgi/vchforwards.cc (CGI_MAIN ): Added code here to handle
       
   623 enabling and disabling the mailbox.
       
   624 
       
   625 <li>commands/vchattr.cc: Added handling in this code for the new
       
   626 flag.
       
   627 
       
   628 <li>lib/vdomain/chattr.cc (chenabled): Added this function to enable
       
   629 or disable delivery to a virtual user.
       
   630 
       
   631 <li>lib/vpwentry/is_enabled.cc (is_enabled): Modified this routine
       
   632 to return false if no mailbox path is set.
       
   633 
       
   634 <li>commands/vdeliver.cc (cli_main): Handle the "enabled" flag here
       
   635 by not doing mailbox delivery if is_enabled returns false.
       
   636 
       
   637 <li>lib/vpwentry/is_enabled.cc (is_enabled): Created this routine to
       
   638 determine if the account has been disabled.
       
   639 
       
   640 <li>lib/vpwentry/disable.cc: Created routines here to enable and
       
   641 disable an account by removing and creating a "disabled" file in
       
   642 the virtual user's mailbox directory.
       
   643 
       
   644 <li>Released version 0.96.4
       
   645 
       
   646 <li>lib/misc/exec.cc (presetenv): Changed this routine to allocate a
       
   647 new string (char*) that it never frees.  This seems to fix the
       
   648 problems with garbage making its way into the environment.
       
   649 
       
   650 </ul>
       
   651 </p>
       
   652 <p>2000-04-10  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   653 <ul>
       
   654 
       
   655 <li>lib/vpwentry/export_env.cc (export_env): Moved the setenv
       
   656 routine that exported a vpwentry to this method of vpwentry.
       
   657 
       
   658 <li>lib/misc/exec.cc (presetenv): Renamed "setenv" to this, to
       
   659 prevent confusion with any built-in "setenv" functions.
       
   660 
       
   661 <li>authenticate/authvmailmgr.cc: Made the user name, pass phrase,
       
   662 and domain name into globals, to prevent their memory from being
       
   663 deallocated prematurely.
       
   664 
       
   665 </ul>
       
   666 </p>
       
   667 <p>2000-04-09  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   668 <ul>
       
   669 
       
   670 <li>doc/vmailmgr-cgi.texi: Adjusted this documentation to fit the
       
   671 new CGIs.
       
   672 
       
   673 <li>cgi/vaddalias.cc (CGI_MAIN ): Modified to handle a
       
   674 comma-seperated list of destinations.
       
   675 
       
   676 <li>cgi/vchforwards.cc: Renamed vchalias to this file, to match the
       
   677 command-line program's name change.
       
   678 (CGI_MAIN ): Modified to handle a comma-seperated list of destinations.
       
   679 
       
   680 </ul>
       
   681 </p>
       
   682 <p>2000-04-07  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   683 <ul>
       
   684 
       
   685 <li>Updates for new mystring and fdbuf libraries.
       
   686 
       
   687 <li>commands/vsetup.cc: Added a "quiet" flag.
       
   688 
       
   689 <li>commands/vpopbull.cc: Added a "quiet" flag.
       
   690 
       
   691 <li>commands/vpasswds.cc: Added a "quiet" flag.
       
   692 
       
   693 <li>commands/vpasswd2cdb.cc: Added a "quiet" flag.
       
   694 
       
   695 <li>commands/vpasswd.cc: Added a "quiet" flag.
       
   696 
       
   697 <li>commands/vdeluser.cc: Added a "quiet" flag.
       
   698 
       
   699 <li>commands/vaddusers.cc: Added a "quiet" flag.
       
   700 
       
   701 <li>commands/vdeliver.cc: Added a "quiet" flag.
       
   702 
       
   703 <li>commands/vchforwards.cc: Added a "quiet" flag.
       
   704 
       
   705 <li>commands/vchattr.cc: Added a "quiet" flag.
       
   706 
       
   707 <li>commands/listvdomain.cc: Added a "quiet" flag.
       
   708 
       
   709 <li>commands/vadduser.cc: Added a "quiet" flag.
       
   710 
       
   711 <li>authenticate/authvlib.cc (check): make the virtual / non-virtual
       
   712 decision here rather than in authenticate, in order to handle
       
   713 "baseuser-virtuser" type usernames.  This fixes the Courier-IMAP
       
   714 auth module problems.
       
   715 
       
   716 </ul>
       
   717 </p>
       
   718 <p>2000-04-06  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   719 <ul>
       
   720 
       
   721 <li>doc/FAQ.texi (Upgrading from Previous Versions): Added this
       
   722 section to answer questions regarding what needs to be done to
       
   723 upgrade to the current version.
       
   724 
       
   725 </ul>
       
   726 </p>
       
   727 <p>2000-04-05  Bruce Guenter  &lt;bguenter@daedalus.bfsmedia.com&gt;
       
   728 <ul>
       
   729 
       
   730 <li>Released version 0.96.3
       
   731 
       
   732 </ul>
       
   733 </p>
       
   734 <p>2000-04-04  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   735 <ul>
       
   736 
       
   737 <li>doc/vmailmgr-cgi.texi (Top): Expanded the "vadduser" section to
       
   738 explain the new optional "userdir" field.
       
   739 
       
   740 <li>cgi/vadduser.cc (CGI_MAIN ): Modified to use the new adduser2
       
   741 interface.
       
   742 
       
   743 <li>cgi/vaddalias.cc (CGI_MAIN ): Modified to use the new adduser2
       
   744 interface.
       
   745 
       
   746 <li>daemon/dispatch.cc: Removed dispatch entries for adduser,
       
   747 addalias, and addaliasp.
       
   748 
       
   749 <li>daemon/adduser2.cc (CMD): Added this new command, which combines
       
   750 the functionality of adduser, addalias, and addaliasp.
       
   751 
       
   752 <li>daemon/addaliasp.cc (CMD): Modified to use build_forwards.
       
   753 
       
   754 <li>daemon/addalias.cc (CMD): Modified to use build_forwards.
       
   755 
       
   756 <li>daemon/adduser.cc (CMD): Only add non-empty forwarding addresses.
       
   757 (build_forwards): Moved the forward-list building code common to
       
   758 adduser, addalias, and addaliasp into this routine.
       
   759 
       
   760 <li>daemon/main.cc (handle_connection): Log command response before
       
   761 attempting to send data back to client.
       
   762 (abortreq): Log abort code before closing FD.
       
   763 (decode_data): Removed the test to check for empty parameters,
       
   764 since some of the modules expect this possibility.
       
   765 
       
   766 </ul>
       
   767 </p>
       
   768 <p>2000-04-03  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   769 <ul>
       
   770 
       
   771 <li>authenticate/vauthenticate.cc (getdata): Buffer doesn't need to
       
   772 be static.
       
   773 
       
   774 <li>authenticate/checkvpw.cc (getdata): buffer doesn't need to be
       
   775 static.
       
   776 
       
   777 <li>lib/vpw/vpwtable.h (class vpwtable): Moved the vpwtable class
       
   778 definition into this file.
       
   779 
       
   780 </ul>
       
   781 </p>
       
   782 <p>2000-04-01  Bruce Guenter  &lt;bruceg@daedalus.bfsmedia.com&gt;
       
   783 <ul>
       
   784 
       
   785 <li>Released version 0.96.2
       
   786 
       
   787 <li>daemon/state.cc: Since the daemon always forks, remove all of
       
   788 the uid/gid saved state, and never restore it.  This class should
       
   789 be renamed, since it does not really "save" any significant state.
       
   790 
       
   791 <li>commands/vaddalias: Fixed quoting bug in this script.
       
   792 
       
   793 </ul>
       
   794 </p>
       
   795 <p>2000-03-21  Bruce Guenter  &lt;bruceg@daedalus.bfsmedia.com&gt;
       
   796 <ul>
       
   797 
       
   798 <li>authenticate/vauthenticate.cc (main): Authenticate as virtual
       
   799 only, and print out the user data if authentication succeeds.
       
   800 
       
   801 <li>authenticate/authvlib.cc (authenticate): Fixed typo declaring
       
   802 "baseuser" twice, preventing authentication from working.
       
   803 
       
   804 </ul>
       
   805 </p>
       
   806 <p>2000-03-07  Bruce Guenter  &lt;bruceg@daedalus.bfsmedia.com&gt;
       
   807 <ul>
       
   808 
       
   809 <li>authenticate/vauthenticate.cc: Added this simple module that
       
   810 accepts domain name, user name, and pass phrase on stdin, and
       
   811 exits successfully if they can be authenticated.
       
   812 
       
   813 </ul>
       
   814 </p>
       
   815 <p>2000-02-12  Bruce Guenter  &lt;bruceg@daedalus.bfsmedia.com&gt;
       
   816 <ul>
       
   817 
       
   818 <li>commands/vaddalias: Made this mini-program into a shell script.
       
   819 
       
   820 <li>daemon/chattr.cc (CMD): Translate multiple values into a single
       
   821 NUL-delimited list.
       
   822 
       
   823 <li>commands/vsetup.cc (cli_main): Added error messages if execution
       
   824 of vsetup-pre or vsetup-post fails.
       
   825 
       
   826 <li>Removed old php3 support and placed Mike Bell's PHP3 code in.
       
   827 
       
   828 <li>Applied patches by Mike Bell to allow vsetup to run a command
       
   829 before and after executing.
       
   830 
       
   831 </ul>
       
   832 </p>
       
   833 <p>2000-02-03  Bruce Guenter  &lt;bruceg@daedalus.bfsmedia.com&gt;
       
   834 <ul>
       
   835 
       
   836 <li>doc/FAQ.texi: Fixed typo reversing virtuser and baseuser.
       
   837 
       
   838 </ul>
       
   839 </p>
       
   840 <p>2000-01-12  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   841 <ul>
       
   842 
       
   843 <li>authenticate/authvmailmgr.cc: Completed initial coding of this
       
   844 module, still needs testing.
       
   845 
       
   846 <li>authenticate/checkvpw.cc (fail): Removed unused string "r".
       
   847 
       
   848 </ul>
       
   849 </p>
       
   850 <p>2000-01-05  Bruce Guenter  &lt;bguenter@bguenter.pointsnorth.com&gt;
       
   851 <ul>
       
   852 
       
   853 <li>authenticate/authvmailmgr.cc: Started authentication module for
       
   854 Courier IMAP.
       
   855 
       
   856 <li>authenticate/authvlib.cc: Moved some of the functions out of
       
   857 checkvpw.cc and generalized them here.
       
   858 
       
   859 <li>authenticate: Moved checkvpw directory here.
       
   860 
       
   861 </ul>
       
   862 </p>
       
   863 <p>1999-10-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   864 <ul>
       
   865 
       
   866 <li>checkvpw/checkvpw.cc (authenticate): Changed logic here to
       
   867 assume a missing entry in both locals and virtualdomains is
       
   868 intended to be local.
       
   869 
       
   870 </ul>
       
   871 </p>
       
   872 <p>1999-10-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   873 <ul>
       
   874 
       
   875 <li>daemon/*.cc: Modified to use new validate_forward.
       
   876 
       
   877 <li>lib/misc/vdomain_chattr.cc (chdest): Modified to use new
       
   878 validate_forward.
       
   879 
       
   880 <li>lib/misc/vdomain_validate.cc (validate_forward): Renamed
       
   881 validate_redirect to this, and removed the handling for a
       
   882 comma-seperated list of addresses.
       
   883 
       
   884 <li>commands/vchforwards.cc (cli_main): Added code to validate the
       
   885 forwarding addresses.
       
   886 
       
   887 <li>commands/vadduser.cc (make_user): Validate the forwarding
       
   888 addresses before creating the user.
       
   889 
       
   890 </ul>
       
   891 </p>
       
   892 <p>1999-10-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   893 <ul>
       
   894 
       
   895 <li>daemon/chattr.cc (CMD): Changed call to strtol to strtoul.
       
   896 
       
   897 <li>lib/config/read_uns.cc (read_uns): Modified this routine to
       
   898 treat all negative numbers as -1, and changed the call from strtol
       
   899 to strtoul.
       
   900 
       
   901 </ul>
       
   902 </p>
       
   903 <p>1999-10-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   904 <ul>
       
   905 
       
   906 <li>doc/FAQ.texi: Updated the answers and added information about
       
   907 how mail gets delivered.
       
   908 
       
   909 <li>lib/misc/vdomain_add.cc: Removed both vdomain::addalias and
       
   910 vdomain::adduser.
       
   911 
       
   912 <li>commands/vsetup.cc (setup_alias): Removed the use of
       
   913 vdomain::addalias.
       
   914 
       
   915 <li>commands/vadduser.cc (add_alias): Removed the use of
       
   916 vdomain::addalias.
       
   917 
       
   918 <li>commands/vaddusers.cc (add_one): Removed the use of
       
   919 vdomain::adduser and vdomain::addalias.
       
   920 
       
   921 </ul>
       
   922 </p>
       
   923 <p>1999-10-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   924 <ul>
       
   925 
       
   926 <li>Released version 0.96.1
       
   927 
       
   928 <li>doc/vmailmgr-cgi.texi: Updated listvdomain documentation.
       
   929 
       
   930 <li>cgi/listvdomain.cc (show_user): Merged show_mbox and show_alias
       
   931 into this one routine.
       
   932 (load_users): Fixed length of incoming code.
       
   933 (show_user): Changed formatting of aliases.
       
   934 
       
   935 </ul>
       
   936 </p>
       
   937 <p>1999-10-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   938 <ul>
       
   939 
       
   940 <li>cgi/listvdomain.cc: Recoded to use modified listdomain protocol
       
   941 interface.
       
   942 
       
   943 <li>lib/misc/vdomain_add.cc (addalias, adduser): Call set_defaults
       
   944 on new vpwentry.
       
   945 
       
   946 <li>lib/misc/vpwentry_from_old.cc (from_old_record): Call
       
   947 set_defaults on resulting vpwentry.
       
   948 
       
   949 <li>commands/vadduser.cc (make_user): Call set_defaults on new
       
   950 vpwentry.
       
   951 
       
   952 <li>daemon/lookup.cc (lookup_and_validate): Call set_defaults on new
       
   953 vpwentry.
       
   954 
       
   955 <li>lib/misc/vpwentry.cc: Moved vpwentry::set_defaults into its own
       
   956 module, and removed the call to set_defaults from the constructors.
       
   957 
       
   958 <li>lib/misc/vpwentry_from.cc: Made the from_old_record and
       
   959 from_ver1_record public, and moved them into their own modules.
       
   960 
       
   961 <li>daemon/listdomain.cc (CMD_FD): Changed the protocol to strip the
       
   962 count from the initial message, to output each entry as a seperate
       
   963 response (with length and all), and to include full vpwentry
       
   964 details in each entry rather than requiring seperate lookups.
       
   965 
       
   966 </ul>
       
   967 </p>
       
   968 <p>1999-09-30  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   969 <ul>
       
   970 
       
   971 <li>Released version 0.96
       
   972 
       
   973 <li>checkvpw/checkvpw.cc (main): Removed extraneous ; causing bug.
       
   974 
       
   975 <li>lib/misc/exec.cc (execute): Skip over directories with identical
       
   976 parents, to prevent double execution.
       
   977 
       
   978 <li>checkvpw/checkvpw.cc (check): Fixed inverted "nodefault" flag to
       
   979 domain-&gt;lookup.
       
   980 
       
   981 <li>lib/misc/vpwentry_from.cc (from_record): Turned the if/else
       
   982 block into a switch statement.
       
   983 
       
   984 <li>commands/vadduser.cc (set_defaults): Turn off creation of a
       
   985 mailbox if the base command name is "vaddalias".
       
   986 Also, use argv0base instead of "vadduser" for the command name.
       
   987 
       
   988 <li>lib/misc/vpwentry_from.cc (from_ver1_record): Fixed bug in
       
   989 importing version 1 records.
       
   990 
       
   991 <li>commands/vdeliver.cc (dump): The input needs to be rewound here
       
   992 the second time through, so rewind it always.
       
   993 
       
   994 </ul>
       
   995 </p>
       
   996 <p>1999-09-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
   997 <ul>
       
   998 
       
   999 <li>commands/listvdomain.cc (cli_main): Print out a banner before
       
  1000 the listing.
       
  1001 
       
  1002 </ul>
       
  1003 </p>
       
  1004 <p>1999-09-27  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1005 <ul>
       
  1006 
       
  1007 <li>doc/configuration.texi: Updated the configuration documentation
       
  1008 to match current implementation aspects.
       
  1009 
       
  1010 <li>lib/misc/exec.cc (execute): Changed behavior of execute to
       
  1011 execute the global before the local directories, and to abort on
       
  1012 any error, but translate 99 to 0 (no error).
       
  1013 
       
  1014 </ul>
       
  1015 </p>
       
  1016 <p>1999-09-23  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1017 <ul>
       
  1018 
       
  1019 <li>cgi/vaddalias.cc (CGI_MAIN ): Adjusted for changed parameter
       
  1020 ordering.
       
  1021 
       
  1022 <li>daemon/log.cc: Added several password-obscuring constants,
       
  1023 rather than repeating them in each command.
       
  1024 
       
  1025 <li>daemon/lookup.cc (CMD): Changed format of result.
       
  1026 
       
  1027 <li>daemon/check.cc (CMD): Changed format of result to seperate
       
  1028 parts with a NUL.
       
  1029 
       
  1030 <li>daemon/addalias.cc (CMD): Now takes multiple destinations.
       
  1031 
       
  1032 <li>daemon/addaliasp.cc (CMD): Changed order of parameters to allow
       
  1033 for multiple destination parameters.
       
  1034 
       
  1035 <li>daemon/log.cc (logcommand): Removed all varieties of this
       
  1036 function except the one that takes a single "command" argument.
       
  1037 
       
  1038 <li>daemon/adduser.cc (CMD): Added handling for a list of forwards.
       
  1039 
       
  1040 <li>daemon/dispatch.cc (dispatch_cmd): Changed handling of commands:
       
  1041 there is now a minimum and a maximum number of arguments, and the
       
  1042 "decode_virtual" is a manditory -- if set, the "baseuser-virtual"
       
  1043 format is not allowed.  This means all the server commands now
       
  1044 require seperate domain name and virtual user name arguments (all
       
  1045 the CGIs do this anyways).
       
  1046 
       
  1047 <li>daemon/check.cc (CMD): Added handling for mailbox and multiple
       
  1048 forwards of virtual users.
       
  1049 
       
  1050 <li>daemon/dispatch.cc: Added check back into the list of commands.
       
  1051 
       
  1052 <li>cgi/vcommand.py (main): Adapted to new interface.
       
  1053 
       
  1054 <li>cgi/vmailmgr.py: Revised the interface to be somewhat more
       
  1055 object based, and tested minimally.
       
  1056 
       
  1057 </ul>
       
  1058 </p>
       
  1059 <p>1999-09-22  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1060 <ul>
       
  1061 
       
  1062 <li>cgi/listvdomain.cc (setup_format): Added handling for cell and
       
  1063 title prefix and suffix strings, as well as cell, paragraph, and
       
  1064 table alignment.
       
  1065 
       
  1066 </ul>
       
  1067 </p>
       
  1068 <p>1999-09-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1069 <ul>
       
  1070 
       
  1071 <li>cgi/vmailmgr.py: Split off most of the generic functionality
       
  1072 from vcommand.py into this module, completed base CGI
       
  1073 functionality.
       
  1074 
       
  1075 </ul>
       
  1076 </p>
       
  1077 <p>1999-09-19  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1078 <ul>
       
  1079 
       
  1080 <li>cgi/vcommand.py: Started this generic Python vmailmgr command
       
  1081 CGI.
       
  1082 
       
  1083 </ul>
       
  1084 </p>
       
  1085 <p>1999-09-16  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1086 <ul>
       
  1087 
       
  1088 <li>commands/vdeliver.cc (cli_main): Adapted to the new execution
       
  1089 framework.
       
  1090 
       
  1091 <li>checkvpw/checkvpw.cc (check): Adapted to the new execution
       
  1092 framework.
       
  1093 
       
  1094 <li>lib/misc/exec.cc (execute): Removed the old "exec" framework in
       
  1095 favour of this function, which traverses through the configuration
       
  1096 directories and tries to execute the named file.
       
  1097 
       
  1098 <li>doc/vadduser.pod: Updated this documentation.
       
  1099 
       
  1100 <li>commands/vadduser.cc: Added an option to not create a mailbox
       
  1101 for this user, allowing this program to be used in place of
       
  1102 vaddalias.
       
  1103 (add_user): Modified logic to optionally ask for a password.
       
  1104 
       
  1105 <li>commands/vconf2dir: Fixed quoting when creating the new config
       
  1106 files, and removed the "set -x" flag at the top.
       
  1107 
       
  1108 <li>commands/vchforwards.cc (cli_main): Adapted this program from
       
  1109 vchalias, and removed vchalias from the distribution.
       
  1110 
       
  1111 <li>commands/vchattr.cc: Wrote this command to change a virtual
       
  1112 user or users' attributes.
       
  1113 
       
  1114 </ul>
       
  1115 </p>
       
  1116 <p>1999-09-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1117 <ul>
       
  1118 
       
  1119 <li>checkvpw/checkvpw.cc: Login failures cause execution of
       
  1120 "config/checkvpw-loginfail", and other failures cause execution of
       
  1121 "config/checkvpw-error", both with an error message in
       
  1122 $CHECKVPW_ERROR.
       
  1123 
       
  1124 <li>commands/vdeliver.cc (deliver_partial): Rewrote loop so that
       
  1125 looping will always sleep.  If the file creation failed, it would
       
  1126 previously loop immediately.
       
  1127 
       
  1128 </ul>
       
  1129 </p>
       
  1130 <p>1999-09-14  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1131 <ul>
       
  1132 
       
  1133 <li>doc/FAQ.texi: Replaced references to vmailmgr.conf with
       
  1134 vmailmgr/
       
  1135 
       
  1136 </ul>
       
  1137 </p>
       
  1138 <p>1999-09-11  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1139 <ul>
       
  1140 
       
  1141 <li>doc/vpopbull.pod: Wrote a man page for vpopbull.
       
  1142 
       
  1143 </ul>
       
  1144 </p>
       
  1145 <p>1999-09-10  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1146 <ul>
       
  1147 
       
  1148 <li>lib/misc/vpwentry_auth.cc (authenticate): Wrote this new
       
  1149 routine, to replace the use of crypt_cmp when authenticating
       
  1150 virtual users.
       
  1151 
       
  1152 <li>lib/misc/pwentry_auth.cc (authenticate): Wrote this new routine,
       
  1153 to replace the use of crypt_cmp when authenticating users.
       
  1154 
       
  1155 </ul>
       
  1156 </p>
       
  1157 <p>1999-09-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1158 <ul>
       
  1159 
       
  1160 <li>commands/listvdomain.cc: Added options to list only users, only
       
  1161 aliases, or selected names listed on the command line.
       
  1162 
       
  1163 <li>lib/misc/vpwentry_from.cc (from_ver1_record): Fixed off-by-one
       
  1164 bug.
       
  1165 
       
  1166 <li>lib/misc/vpwentry_to.cc (to_record): Fixed problem in creating
       
  1167 records without any forwarding addresses.
       
  1168 
       
  1169 <li>commands/vadduser.cc: Commented out extra-data handling.
       
  1170 
       
  1171 <li>lib/misc/exec.cc (setenv): Commented out
       
  1172 
       
  1173 <li>lib/misc/vpwentry.h (struct vpwentry ): Commented out the extra
       
  1174 data string.
       
  1175 
       
  1176 <li>cgi/vchattr.cc (CGI_MAIN ): Wrote this simple modification to
       
  1177 vchalias, which can change any attribute.
       
  1178 
       
  1179 <li>daemon/chattr.cc (CMD): Convert the attr string to an integer
       
  1180 before running domain.chattr.
       
  1181 
       
  1182 <li>lib/misc/vdomain_chattr.cc (chattr): Added attribute handlers
       
  1183 for message size/count and account expiry.
       
  1184 
       
  1185 <li>lib/misc/vdomain.h (class vdomain): Changed attribute name
       
  1186 constants from strings to integers.
       
  1187 
       
  1188 </ul>
       
  1189 </p>
       
  1190 <p>1999-08-23  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1191 <ul>
       
  1192 
       
  1193 <li>doc/configuration.texi (Search Order): Corrected a typo: the
       
  1194 local directory is named ".vmailmgr", not "vmailmgr".
       
  1195 
       
  1196 </ul>
       
  1197 </p>
       
  1198 <p>1999-08-21  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1199 <ul>
       
  1200 
       
  1201 <li>commands/vadduser.cc: Added hard/soft quota options, and a
       
  1202 password option for vaddalias.
       
  1203 
       
  1204 <li>lib/misc/vpwentry.h (struct vpwentry ): Added hard/soft quota
       
  1205 values.
       
  1206 
       
  1207 </ul>
       
  1208 </p>
       
  1209 <p>1999-08-18  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1210 <ul>
       
  1211 
       
  1212 <li>commands/vpasswd.cc (cli_main): Modified to call
       
  1213 vdomain::chattr.
       
  1214 
       
  1215 <li>commands/vpasswds.cc (change_one): Modified to call
       
  1216 vdomain::chattr.
       
  1217 
       
  1218 <li>cgi/vchalias.cc (CGI_MAIN ): Use ATTR_DEST instead of a
       
  1219 hard-coded string.
       
  1220 
       
  1221 <li>cgi/vpasswd.cc (CGI_MAIN ): Use ATTR_PASS instead of a
       
  1222 hard-coded string.
       
  1223 
       
  1224 <li>daemon/chattr.cc (CMD): Modified to call vdomain::chattr.
       
  1225 
       
  1226 </ul>
       
  1227 </p>
       
  1228 <p>1999-08-16  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1229 <ul>
       
  1230 
       
  1231 <li>lib/misc/vdomain_chattr.cc (chattr): Created this new routine to
       
  1232 generalize attribute modification.
       
  1233 
       
  1234 </ul>
       
  1235 </p>
       
  1236 <p>1999-08-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1237 <ul>
       
  1238 
       
  1239 <li>lib/misc/exec.cc (exec_list): Takes a strlist parameter instead
       
  1240 of a string.
       
  1241 
       
  1242 <li>lib/misc/strlist.h (class strlist ): Removed the NUL constant.
       
  1243 
       
  1244 <li>lib/misc/vpwentry.h (struct vpwentry ): Removed the NUL constant
       
  1245 in favour of the new one in mystring.
       
  1246 
       
  1247 <li>lib/config/read_list.cc (read_list): Adapted to use
       
  1248 strlist::read instead of a custom list reading function.
       
  1249 
       
  1250 </ul>
       
  1251 </p>
       
  1252 <p>1999-08-14  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1253 <ul>
       
  1254 
       
  1255 <li>lib/misc/strlist.h (class keystrlist): Split off the
       
  1256 functionality to handle keyed strings ("key=value" format) into a
       
  1257 seperate class.
       
  1258 
       
  1259 <li>lib/misc/vpwentry.h (struct vpwentry ): Adapted to using strlist
       
  1260 functions.
       
  1261 
       
  1262 <li>lib/misc/strlist.h (class strlist ): Moved the string list
       
  1263 management into its own class.
       
  1264 
       
  1265 <li>commands/vquota.cc: Started writing this quota management
       
  1266 utility.
       
  1267 
       
  1268 <li>commands/vdeliver.cc (cli_main): Fixed invocation of exec*
       
  1269 functions.
       
  1270 
       
  1271 <li>commands/vadduser.cc: Added code to set the default values of
       
  1272 the new data items, and to set them when creating the user.
       
  1273 
       
  1274 <li>checkvpw/checkvpw.cc (main): Fixed invocation of exec*
       
  1275 functions.
       
  1276 
       
  1277 </ul>
       
  1278 </p>
       
  1279 <p>1999-08-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1280 <ul>
       
  1281 
       
  1282 <li>doc/configuration.texi: Did some minor re-organization, and
       
  1283 added a higher level note regarding environment variables and
       
  1284 return codes for executed programs.
       
  1285 
       
  1286 </ul>
       
  1287 </p>
       
  1288 <p>1999-08-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1289 <ul>
       
  1290 
       
  1291 <li>lib/misc/exec.cc (setenv): Set environment variables for quota,
       
  1292 message size, message count, creation time, expiry time, personal
       
  1293 data, and all the extra data.
       
  1294 (exec_list): Changed interface to all the exec_* routines: the
       
  1295 error message string is passed as a parameter, and the return
       
  1296 value is the error return code or zero.
       
  1297 
       
  1298 <li>lib/misc/vpwentry_from.cc (from_uint): Modified to accept "-*"
       
  1299 as the negative pattern.
       
  1300 
       
  1301 <li>lib/misc/utoa.cc (utoa): Moved this routine into its own module.
       
  1302 
       
  1303 </ul>
       
  1304 </p>
       
  1305 <p>1999-08-10  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1306 <ul>
       
  1307 
       
  1308 <li>cgi/vpasswd.cc (CGI_MAIN ): Modified to call "chattr".
       
  1309 
       
  1310 <li>cgi/vchalias.cc (CGI_MAIN ): Modified to call "chattr".
       
  1311 
       
  1312 <li>daemon/dispatch.cc: Removed entries for chpass, chalias, and
       
  1313 delalias.
       
  1314 
       
  1315 <li>daemon/chattr.cc (CMD): Merged the functions of chalias and
       
  1316 chpass into this new command.
       
  1317 
       
  1318 <li>lib/misc/vdomain.h (class vdomain): Removed delalias command.
       
  1319 
       
  1320 <li>lib/misc/vdomain_deluser.cc (deluser): Removed mailbox test to
       
  1321 see if the named entry was a "user".
       
  1322 
       
  1323 <li>commands/vdeliver.cc (inject): Handle failure properly here.
       
  1324 
       
  1325 </ul>
       
  1326 </p>
       
  1327 <p>1999-08-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1328 <ul>
       
  1329 
       
  1330 <li>commands/vdeliver.cc (deliver_partial): Rewrote the delivery
       
  1331 mechanism to do partial file delivery.
       
  1332 (write_envelope): Rewrote the envelope handling code to use
       
  1333 mystring_iter (big simplification).
       
  1334 
       
  1335 <li>commands/vconf2dir: Fixed non-portable increment statement.
       
  1336 
       
  1337 <li>commands/vadduser.cc: Added options for the extra virtual user
       
  1338 data, but not the code to handle the options.
       
  1339 
       
  1340 </ul>
       
  1341 </p>
       
  1342 <p>1999-08-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1343 <ul>
       
  1344 
       
  1345 <li>commands/vpasswd2cdb.cc (getpw): Call vpwentry::from_record,
       
  1346 since the original text file format is compatible with its import
       
  1347 routine.
       
  1348 
       
  1349 <li>lib/misc/vdomain_validate.cc (validate_redirect): Call exists
       
  1350 instead of lookup.
       
  1351 
       
  1352 <li>lib/misc/vdomain_lookup.cc (exists): Wrote this routine to test
       
  1353 if a name exists in a virtual domain.
       
  1354 
       
  1355 <li>lib/misc/vpwtable_exists.cc (exists): Added this routine to do a
       
  1356 simple check if a user exists, without doing any format
       
  1357 translations.
       
  1358 
       
  1359 <li>lib/misc/vpwentry.h (class vpwtable): Turned the "cdb" pointer
       
  1360 into a void pointer to allow for easier extension to non-CDB
       
  1361 formats.
       
  1362 
       
  1363 <li>lib/config/*: Added new default configuration items for the
       
  1364 quota and expiry items.
       
  1365 
       
  1366 <li>lib/misc/vdomain_*.cc: Adpoted to the new vpwentry conventions.
       
  1367 
       
  1368 <li>lib/misc/exec.cc (setenv): Always set MAILDIR to vpw-&gt;mailbox,
       
  1369 which will be empty for an alias user.
       
  1370 
       
  1371 <li>lib/misc/vpwentry.cc (set_defaults): Added this new routine to
       
  1372 set the defaults on a vpwentry from the current configuration.
       
  1373 
       
  1374 <li>lib/misc/vpwentry_from.cc (from_record): Moved this routine into
       
  1375 its own module, and added parsing for the new fields.
       
  1376 
       
  1377 <li>lib/misc/vpwentry_to.cc (to_record): Moved this routine into its
       
  1378 own module.
       
  1379 
       
  1380 <li>lib/misc/vpwentry.h (struct vpwentry ): Added new fixed fields
       
  1381 to the structure: personal, quota, msgsize, msgcount, ctime, and
       
  1382 expiry.
       
  1383 
       
  1384 </ul>
       
  1385 </p>
       
  1386 <p>1999-08-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1387 <ul>
       
  1388 
       
  1389 <li>lib/misc/vpwentry_getset.cc (get): Added this routine to get the
       
  1390 value of a data variable.
       
  1391 (set): Added this routine to add a variable to the data set,
       
  1392 replacing its value if it already exists.
       
  1393 
       
  1394 <li>lib/misc/vpwentry.cc (to_record): Rewrote this routine to output
       
  1395 the new "version 1" record format.
       
  1396 
       
  1397 <li>lib/misc/vpwentry.h (struct vpwentry ): Expanded this structure,
       
  1398 replacing the "dest" field with "mailbox" and "forwards" items,
       
  1399 and added a "datastr" field.
       
  1400 
       
  1401 <li>lib/misc/vpwentry.cc (from_old_record): Adapted this code from
       
  1402 the old vpwentry::from_record routine.
       
  1403 
       
  1404 <li>Released version 0.95
       
  1405 
       
  1406 </ul>
       
  1407 </p>
       
  1408 <p>1999-08-06  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1409 <ul>
       
  1410 
       
  1411 <li>commands/vpopbull.cc (scan_bulletins): Modified the logic here
       
  1412 to not fail if one of the bulletin scans fails.
       
  1413 
       
  1414 <li>commands/vdeliver.cc (inject): Fixed missing argv[0] in call to
       
  1415 execl here.
       
  1416 
       
  1417 </ul>
       
  1418 </p>
       
  1419 <p>1999-08-05  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1420 <ul>
       
  1421 
       
  1422 <li>commands/vpopbull.cc: Moved this program into the commands
       
  1423 directory.
       
  1424 (scan_bulletins): Added specific information to error messages.
       
  1425 
       
  1426 <li>lib/misc/exec.cc (setenv): Moved the common code to set up the
       
  1427 environment for virtual users into a common routine here from
       
  1428 checkvpw.cc and vdeliver.cc.
       
  1429 
       
  1430 </ul>
       
  1431 </p>
       
  1432 <p>1999-08-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1433 <ul>
       
  1434 
       
  1435 <li>doc/configuration.texi: Added sections for the new execution
       
  1436 hooks.
       
  1437 
       
  1438 <li>checkvpw/checkvpw.cc (check): Fixed this to set the VUSER
       
  1439 environment variable immediately after looking up the base user.
       
  1440 
       
  1441 </ul>
       
  1442 </p>
       
  1443 <p>1999-08-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1444 <ul>
       
  1445 
       
  1446 <li>checkvpw/checkvpw.cc (main): Modified to execute the contents of
       
  1447 checkvpw-postexec.
       
  1448 
       
  1449 <li>lib/config/showvconfig.cc.in: Built this new program template to
       
  1450 show the config parameters.
       
  1451 
       
  1452 <li>commands/vdeliver.cc (cli_main): Make vdeliver execute a list of
       
  1453 commands before and after doing the delivery.  Will set $MAILDIR
       
  1454 and $VUSER.
       
  1455 
       
  1456 <li>checkvpw/vpopbull.cc: Moved bulletins.cc into this file, built a
       
  1457 main routine, and added error logging.
       
  1458 
       
  1459 <li>lib/misc/exec.cc (exec_list): Created this routine to execute a
       
  1460 list of commands, returning the first error as a string.
       
  1461 (exec_one): Created this routine to shell and execute a single
       
  1462 command using "/bin/sh -c '&lt;command&gt;'".
       
  1463 
       
  1464 <li>checkvpw/checkvpw.cc: Added a hook to execute a list of programs
       
  1465 before and after running setuid.  The "before" programs are read
       
  1466 from the global config to avoid security holes.  $HOME and $USER
       
  1467 are set for both, and $MAILDIR and $VUSER are set for the "after"
       
  1468 programs.
       
  1469 
       
  1470 </ul>
       
  1471 </p>
       
  1472 <p>1999-08-02  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1473 <ul>
       
  1474 
       
  1475 <li>Released version 0.94
       
  1476 
       
  1477 <li>daemon/dispatch.cc: Commented out the "stat" and "statall"
       
  1478 commands, that no longer do anything useful (the forking daemon
       
  1479 causes the statistics to be meaningless).  Also removed the code
       
  1480 in "dispatch" to count invocations of a particular method.
       
  1481 
       
  1482 <li>daemon/lookup.cc (lookup_and_validate): Fixed a false negation
       
  1483 in the logic when checking for an existing virtual user.
       
  1484 
       
  1485 <li>lib/misc/maildir.cc (mkdirp): Fixed off-by-one bug in recursive
       
  1486 case.
       
  1487 
       
  1488 <li>commands/vdeliver.cc: Fixed bug caused by assigning from an int
       
  1489 to a bool through a pointer (since bools are only a single byte).
       
  1490 
       
  1491 <li>checkvpw/checkvpw.cc: Rewrote this code to do the password
       
  1492 checking directly without calling up to the daemon.
       
  1493 
       
  1494 <li>daemon: moved lookup_baseuser into lib/misc, removed the call to
       
  1495 setup a saved_state from it, and adjusted all the calls to
       
  1496 lookup_baseuser in the daemon to fit.
       
  1497 
       
  1498 </ul>
       
  1499 </p>
       
  1500 <p>1999-07-30  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1501 <ul>
       
  1502 
       
  1503 <li>commands/vdeliver.cc: Moved this program from clients into
       
  1504 commands, and made it work the the CLI library.
       
  1505 (cli_main): Does a call to domain.lookup now instead of a server
       
  1506 call.
       
  1507 (read_me): Rewrote to use config-&gt;qmail_root() instead of a
       
  1508 hard-coded /var/qmail.  This is the last place (verified with
       
  1509 grep) that has a hard-coded /var/qmail.
       
  1510 
       
  1511 </ul>
       
  1512 </p>
       
  1513 <p>1999-07-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1514 <ul>
       
  1515 
       
  1516 <li>lib/config/config_read.cc (config_read): Fixed a typo: I had
       
  1517 typed '=' instead of '+' to create the full name.
       
  1518 
       
  1519 </ul>
       
  1520 </p>
       
  1521 <p>1999-07-27  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1522 <ul>
       
  1523 
       
  1524 <li>daemon/chpass.cc (CMD): Calls the vdomain::chpass routine
       
  1525 instead of doing it by hand through the vpwtable code.
       
  1526 
       
  1527 <li>commands/vpasswd2cdb.cc (cli_main): Removed an extraneous call
       
  1528 to end_getpw.
       
  1529 
       
  1530 <li>lib/misc/vpwentry.h (class vpwtable): Added this new
       
  1531 abstraction, a virtual password table, that contains all the
       
  1532 low-level table manipulation routines.  All other code has been
       
  1533 adjusted to fit this model.
       
  1534 
       
  1535 </ul>
       
  1536 </p>
       
  1537 <p>1999-07-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1538 <ul>
       
  1539 
       
  1540 <li>lib/misc/lookup_domain.cc: Moved is_local and find_virtual into
       
  1541 this file from daemon/lookup.cc.
       
  1542 
       
  1543 <li>daemon/lookup.cc (CMD): Converted to using vdomain::lookup.
       
  1544 
       
  1545 <li>daemon/check.cc (CMD): Converted to using vdomain::lookup.
       
  1546 
       
  1547 <li>lib/misc/vdomain_lookup.cc (lookup): Moved the daemon function
       
  1548 lookup_virtuser into this method.
       
  1549 
       
  1550 <li>Inserted the latest cli library and adapted all the command line
       
  1551 programs to handle the changes.
       
  1552 
       
  1553 <li>Inserted the latest mystring class and adapted all the code to
       
  1554 handle it.
       
  1555 
       
  1556 <li>Rewrote the virtual user manipulation code from lib/misc/vuser*,
       
  1557 and moved it all into the vdomain class (was struct).  Adjusted
       
  1558 all other references to use this new code.
       
  1559 
       
  1560 </ul>
       
  1561 </p>
       
  1562 <p>1999-07-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1563 <ul>
       
  1564 
       
  1565 <li>Released version 0.93
       
  1566 
       
  1567 <li>daemon/adduser.cc (CMD): Prefix the user dir destination with
       
  1568 "./".
       
  1569 
       
  1570 <li>lib/misc/vuser_set.cc (vuser_set): Allow leading '/' in
       
  1571 destination string, in addition to leading '.' and '&'.
       
  1572 
       
  1573 </ul>
       
  1574 </p>
       
  1575 <p>1999-07-22  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1576 <ul>
       
  1577 
       
  1578 <li>commands/vsetup.cc (setup_passwd): Modified to use the new
       
  1579 string iterator class.
       
  1580 
       
  1581 <li>lib/misc/stringiter.h (class mystring_iter): Wrote this class to
       
  1582 provide an iterator over a newline (or NUL, even) seperated list
       
  1583 within a string.
       
  1584 
       
  1585 </ul>
       
  1586 </p>
       
  1587 <p>1999-07-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1588 <ul>
       
  1589 
       
  1590 <li>commands/vsetup.cc (setup_passwd): Changed the alias seperator
       
  1591 character from ',' to '\n'.
       
  1592 
       
  1593 <li>lib/config/read_list.cc (read_list): Wrote this routine to read
       
  1594 a config item containing a list of values.
       
  1595 
       
  1596 <li>lib/config/config_readlist.cc (config_readlist): Wrote this new
       
  1597 routine to read a list of values from a file, newline seperated.
       
  1598 
       
  1599 </ul>
       
  1600 </p>
       
  1601 <p>1999-07-19  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1602 <ul>
       
  1603 
       
  1604 <li>doc/configuration.texi: Wrote this new document describing the
       
  1605 new configuration structure, adapted from the now obsolete
       
  1606 vmailmgr.conf.sample.
       
  1607 
       
  1608 </ul>
       
  1609 </p>
       
  1610 <p>1999-07-18  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1611 <ul>
       
  1612 
       
  1613 <li>lib/config/read_*.cc: Moved the overhead for maintaining the
       
  1614 cache into these read functions instead of duplicating it in each
       
  1615 config variable function.
       
  1616 
       
  1617 <li>lib/config/build-config.sh: Create a cache for each config
       
  1618 variable in order to eliminate duplicate readings of a single
       
  1619 variable.
       
  1620 
       
  1621 <li>daemon/pwentry_table.cc (operator[]): Replaced the previous
       
  1622 implementation (a cache) with one that just calls getpwnam.  This
       
  1623 avoids creating extra dynamic data in the form of many pwentry
       
  1624 structures.
       
  1625 
       
  1626 <li>daemon/lookup.cc (lookup_baseuser): Removed an extraneous
       
  1627 re-creation of the pwentry returned from the pwentry_table.
       
  1628 
       
  1629 <li>lib/config/read_*.cc: Removed the translation from '_' to '-'
       
  1630 for filenames from the code and moved it into the build-config.sh
       
  1631 script.  This moves the constant conversion from run-time to
       
  1632 build-time.
       
  1633 
       
  1634 <li>lib/config/configrc.cc (configuration): Made the constructor
       
  1635 take a pointer instead of a reference, which was probably the
       
  1636 saner thing to do from the start.
       
  1637 
       
  1638 <li>lib/config/read_dir.cc (read_dir): Modified the logic here so
       
  1639 that the macros for creating the config reading routines can be
       
  1640 completely uniform.
       
  1641 
       
  1642 <li>daemon/state.cc (saved_state): Since the saved state is never
       
  1643 un-saved, don't try to establish what the previous state is with
       
  1644 getuid and getegid.
       
  1645 
       
  1646 <li>daemon/state.h: Turned the CHANGE_STATE macro into a no-op,
       
  1647 since the state is already saved when doing any lookup.
       
  1648 
       
  1649 <li>daemon/lookup.cc (lookup_baseuser): Set up the saved state
       
  1650 immediately upon successfully doing a base user lookup.
       
  1651 
       
  1652 <li>daemon/state.h (class saved_state): Removed the pwentry pointer
       
  1653 and made the domain a non-pointer as well.
       
  1654 
       
  1655 </ul>
       
  1656 </p>
       
  1657 <p>1999-07-17  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1658 <ul>
       
  1659 
       
  1660 <li>daemon/state.cc: Modified these routines to set up a pwentry
       
  1661 before setting up the vdomain, as well as properly restoring the
       
  1662 old config pointer.
       
  1663 
       
  1664 <li>commands/*.cc: Replaced all instances of "domain-&gt;" with
       
  1665 "domain.", since "domain" is no longer a pointer.
       
  1666 
       
  1667 <li>clients/vdeliver.cc (main): Modified to set up a pwentry before
       
  1668 setting up the vdomain.
       
  1669 
       
  1670 <li>clients/checkvpw.cc (set_user): Modified to set up a pwentry
       
  1671 before setting up the vdomain.
       
  1672 
       
  1673 <li>commands/vcommand.cc (go_home): Modified to create a global
       
  1674 pwentry named "user", and build the domain and config based on
       
  1675 that.
       
  1676 
       
  1677 <li>lib/misc/vdomain.cc (vdomain): Modified the constructors to take
       
  1678 a pwentry parameter to build the domain config from.
       
  1679 
       
  1680 <li>lib/misc/pwentry.cc: Moved this file here from daemon, added a
       
  1681 "config" structure entry, and added a default constructor.
       
  1682 (pwfile): Removed the pwfile_cache member, which was a kluge for
       
  1683 what I thought was a bug somewhere else.
       
  1684 
       
  1685 </ul>
       
  1686 </p>
       
  1687 <p>1999-07-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1688 <ul>
       
  1689 
       
  1690 <li>Forwarded-ported envelope delivery re-write from 0.92.2 for
       
  1691 clients/vdeliver.cc.
       
  1692 
       
  1693 </ul>
       
  1694 </p>
       
  1695 <p>1999-07-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1696 <ul>
       
  1697 
       
  1698 <li>daemon/lookup.cc: Converted is_local and find_virtual to use the
       
  1699 qmail_root config item.
       
  1700 
       
  1701 <li>Forwarded-ported logic fix from 0.92.1 for clients/vdeliver.cc.
       
  1702 
       
  1703 <li>clients/vdeliver.cc (inject): Use the new qmail_root config item
       
  1704 to locate the qmail-queue binary.
       
  1705 
       
  1706 </ul>
       
  1707 </p>
       
  1708 <p>1999-06-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1709 <ul>
       
  1710 
       
  1711 <li>daemon/hash_table.h: Fixed a typo in the hash table prime list
       
  1712 (the last numbers were truncated).
       
  1713 
       
  1714 </ul>
       
  1715 </p>
       
  1716 <p>1999-06-14  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1717 <ul>
       
  1718 
       
  1719 <li>doc/FAQ.texi: Added a "troubleshooting" section, to be filled in
       
  1720 as questions arrive.
       
  1721 
       
  1722 </ul>
       
  1723 </p>
       
  1724 <p>1999-06-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1725 <ul>
       
  1726 
       
  1727 <li>Modified all the sources to use the new configuration class
       
  1728 members.
       
  1729 
       
  1730 <li>commands/vcommand.cc (go_home): Initialize the password_file
       
  1731 global from config-&gt;password_file() here.
       
  1732 
       
  1733 <li>lib/config/configrc.cc: Totally re-wrote the configuration
       
  1734 system to use a subdirectory style config, with individual files
       
  1735 containing the configuration values on their first line.  The
       
  1736 configuration modules are also built by a script, and broken down
       
  1737 into individual object modules to reduce the size of programs that
       
  1738 don't use all the options.
       
  1739 
       
  1740 </ul>
       
  1741 </p>
       
  1742 <p>1999-06-05  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1743 <ul>
       
  1744 
       
  1745 <li>daemon/*.cc: Moved the calls to CHANGE_STATE to immediately
       
  1746 after validating the user, to allow the config set up by the
       
  1747 saved_state to be used immediately.
       
  1748 
       
  1749 <li>clients/checkvpw.cc (set_user): Set up a vdomain here and set
       
  1750 the config to allow for locally-configured bulletin directories.
       
  1751 (main): Moved the call to set_user higher, to allow the config to
       
  1752 be used earlier to set the error maildir.
       
  1753 
       
  1754 <li>clients/vdeliver.cc (main): Set up a vdomain and set the config
       
  1755 to its config, to load a local configuration when doing
       
  1756 deliveries.
       
  1757 
       
  1758 <li>daemon/pwentry.cc: Removed the definitions for user_dir_rel and
       
  1759 user_dir_abs, since vdomain::userdir will do the job now (it seems
       
  1760 that user_dir_abs wasn't even used, too).
       
  1761 
       
  1762 <li>daemon/state.cc: Moved the constructor and desctuctor for
       
  1763 saved_state into this object, and added a call to push a new
       
  1764 configuration if state was changed successfully.
       
  1765 
       
  1766 <li>commands/vcommand.cc: Moved the go_home routine into here, and
       
  1767 added a global "domain" pointer that will point to the current
       
  1768 virtual domain.
       
  1769 (go_home): Push the domain config onto the config stack.  Now all
       
  1770 the command programs will use a local configuration.  This routine
       
  1771 will eventually be rewritten to handle multiple domains in the
       
  1772 same user.
       
  1773 
       
  1774 <li>commands/vadduser.cc: Converted to using a vdomain object.
       
  1775 
       
  1776 <li>Converted all instances of "config." to "config-&gt;" where
       
  1777 appropriate (the vdomain class has a non-pointer config member, so
       
  1778 it doesn't count).
       
  1779 
       
  1780 <li>lib/misc/server.cc: Rewrote call and connect to take as a
       
  1781 parameter the socket filename to use.  server_call::call has a
       
  1782 default argument now of config-&gt;socket_file to prevent having to
       
  1783 change any code, but this might disappear, too.
       
  1784 
       
  1785 <li>lib/misc/configrc.cc: Turned the global 'config' item into a
       
  1786 pointer, to allow other code to essentially push down local
       
  1787 configurations onto it.  Wrote config_push and config_pop to
       
  1788 assist with this.
       
  1789 
       
  1790 <li>commands/vaddusers.cc (add_one): Make the alias name lower case
       
  1791 before using it, call vuser_adduser with the maildir argument set.
       
  1792 
       
  1793 <li>lib/misc/vuser_add.cc (vuser_adduser): Modified this routine to
       
  1794 remove the call to userdir, forcing the maildir name to be created
       
  1795 at a higher level.
       
  1796 
       
  1797 </ul>
       
  1798 </p>
       
  1799 <p>1999-06-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1800 <ul>
       
  1801 
       
  1802 <li>lib/misc/configrc.cc (configuration): Eliminated the #defined
       
  1803 default constants, as they are used only once, and moved them
       
  1804 directly into the default configuration constructor.
       
  1805 
       
  1806 <li>lib/misc/configrc.h (class configuration ): Added a "parent"
       
  1807 member item that points to the object from which the defaults for
       
  1808 this configuration was set (set to NULL in the default object).
       
  1809 
       
  1810 <li>lib/misc/vdomain.cc: Created this construct to represent a
       
  1811 virtual domain.  Copied the functionality from userdir.cc into
       
  1812 here (with the plan of removing userdir.cc in the future).  This
       
  1813 will become the status-holder for multiple domains within a single
       
  1814 real user.
       
  1815 
       
  1816 <li>lib/misc/configrc.cc (configuration): Added a new constructor
       
  1817 that copies the values from a set of defaults and reads in a
       
  1818 config file to override those defaults.  To be used for local
       
  1819 configuration handling.  Relegated the default constructor to only
       
  1820 setting the default values, and added a new global const object
       
  1821 config_defaults to hold these.
       
  1822 
       
  1823 <li>commands/*: Added a call to go_home in every cli_main.
       
  1824 
       
  1825 <li>commands/go_home.cc (go_home): Wrote this routine to chdir to
       
  1826 the user's HOME directory.
       
  1827 
       
  1828 </ul>
       
  1829 </p>
       
  1830 <p>1999-06-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1831 <ul>
       
  1832 
       
  1833 <li>commands/listvdomain.cc (cli_main): I forgot to check the return
       
  1834 value of start_getpw here, leading to a core dump when the
       
  1835 password table can't be opened.  Fixed.
       
  1836 
       
  1837 </ul>
       
  1838 </p>
       
  1839 <p>1999-06-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1840 <ul>
       
  1841 
       
  1842 <li>commands/vsetup.cc (setup_qmail_default): Changed the mode of
       
  1843 the created .qmail-default file to 0444 (minus umask) instead of
       
  1844 0666 to prevent qmail from complaining on systems where umask
       
  1845 defaults to 002 instead of 022, and to prevent inadvertent editing
       
  1846 of the .qmail-default file.
       
  1847 
       
  1848 </ul>
       
  1849 </p>
       
  1850 <p>1999-05-30  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1851 <ul>
       
  1852 
       
  1853 <li>Released version 0.92
       
  1854 
       
  1855 </ul>
       
  1856 </p>
       
  1857 <p>1999-05-28  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1858 <ul>
       
  1859 
       
  1860 <li>clients/vdeliver.cc: Rewrote the alias delivery routines to send
       
  1861 the email to qmail-queue instead of qmail-inject, since
       
  1862 qmail-inject will attempt to reformat the message.
       
  1863 
       
  1864 </ul>
       
  1865 </p>
       
  1866 <p>1999-05-27  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1867 <ul>
       
  1868 
       
  1869 <li>daemon/check.cc (CMD): Added a check to ensure that checking the
       
  1870 password for an alias fails.
       
  1871 
       
  1872 <li>doc/*: Changed references from qcc.sk.ca to em.ca.
       
  1873 
       
  1874 </ul>
       
  1875 </p>
       
  1876 <p>1999-05-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1877 <ul>
       
  1878 
       
  1879 <li>daemon/addaliasp.cc (CMD): Added this new command to add an
       
  1880 alias with a password.
       
  1881 
       
  1882 <li>doc/vmailmgr-cgi.texi: Updated the documentation for vaddalias.
       
  1883 Changed all instances of "necessary" to "required".
       
  1884 
       
  1885 <li>cgi/vaddalias.cc (CGI_MAIN ): Now allows for an optional new
       
  1886 password field pair, and calls addaliasp if they are not empty.
       
  1887 
       
  1888 <li>lib/misc/server.cc (server_call): Added a new server_call for 5
       
  1889 parameters.
       
  1890 
       
  1891 <li>daemon/log.cc (logcommand): Added a new logcommand routine to
       
  1892 handle 5 parameters.
       
  1893 
       
  1894 <li>daemon/dispatch.cc: Modified the dispatch entry for addalias.
       
  1895 
       
  1896 <li>daemon/chpass.cc (CMD): Removed the custom password checking
       
  1897 since it is now merged into lookup_and_validate.
       
  1898 
       
  1899 <li>daemon/chalias.cc (CMD): Call lookup_and_validate with the
       
  1900 "userpass" flag set to true to allow owners of virtual aliases set
       
  1901 up with a password to change their alias.
       
  1902 
       
  1903 <li>daemon/lookup.cc (lookup_and_validate): Modified to optionally
       
  1904 do comparisons against the virtual user's password if the
       
  1905 comparison against the administrator's password fails.  Removed
       
  1906 the allowance for empty passwords.  Made all the password
       
  1907 mis-match messages the same.  The admin password check is done
       
  1908 before the virtual user check to avoid giving away information
       
  1909 about virtual users.
       
  1910 
       
  1911 <li>commands/vaddalias.cc (cli_main): Set passwords on aliases by
       
  1912 passing in a '-p' or '--password' flag.
       
  1913 
       
  1914 <li>lib/misc/vuser_add.cc (vuser_addalias): Modified to allow
       
  1915 passwords on aliases.
       
  1916 
       
  1917 </ul>
       
  1918 </p>
       
  1919 <p>1999-05-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1920 <ul>
       
  1921 
       
  1922 <li>Released version 0.91
       
  1923 
       
  1924 </ul>
       
  1925 </p>
       
  1926 <p>1999-05-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1927 <ul>
       
  1928 
       
  1929 <li>daemon/chalias.cc (CMD): Bug fix: was passing "false" for
       
  1930 "mustexist" to lookup_and_validate, when it should have been
       
  1931 "true".
       
  1932 
       
  1933 <li>commands/vdelalias.cc, commands/vdeluser.cc,
       
  1934 commands/vaddusers.cc, commands/vaddalias.cc,
       
  1935 commands/vpasswds.cc, commands/vchalias.cc: Added a mechanism to
       
  1936 count and report the number of errors encountered.
       
  1937 
       
  1938 <li>doc/vmailmgr-cgi.texi: Added a chapter for the chalias command.
       
  1939 Also added sections for vdelalias and vdeluser, as well as sorting
       
  1940 the sections into alphabetical order.
       
  1941 
       
  1942 <li>cgi/vchalias.cc: Wrote the CGI program to call the chalias
       
  1943 command.
       
  1944 
       
  1945 <li>doc/vchalias.pod: Wrote the documentation page for the vchalias
       
  1946 command.
       
  1947 
       
  1948 </ul>
       
  1949 </p>
       
  1950 <p>1999-05-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1951 <ul>
       
  1952 
       
  1953 <li>lib/misc/configrc.cc (DEFAULT_DEFAULT_USERNAME): Changed the
       
  1954 default default username from '*' to '+', to avoid shell
       
  1955 screwups.  Updated documentation.
       
  1956 
       
  1957 </ul>
       
  1958 </p>
       
  1959 <p>1999-05-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1960 <ul>
       
  1961 
       
  1962 <li>doc/checkvpw.pod: Fixed filename glitch -- replaced all
       
  1963 instances of virtualhosts with virtualdomains.
       
  1964 
       
  1965 </ul>
       
  1966 </p>
       
  1967 <p>1999-05-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  1968 <ul>
       
  1969 
       
  1970 <li>lib/misc/vpwentry_putpw.cc (putpw): Changed logic of "onlyadd"
       
  1971 parameter.  If set, will fail if the name already existed.  If not
       
  1972 set, will fail if the name did not already exist.
       
  1973 
       
  1974 <li>daemon/dispatch.cc: Added a dispatch entry for chalias.
       
  1975 
       
  1976 <li>daemon/chalias.cc (CMD): Created this server command to change
       
  1977 an existing alias to a new destination, using the new vuser_set.
       
  1978 
       
  1979 <li>daemon/adduser.cc (CMD): Changed to use vuser_set.
       
  1980 
       
  1981 <li>daemon/addalias.cc (CMD): Changed to use vuser_set.
       
  1982 
       
  1983 <li>lib/misc/vuser_add.cc: Changed to use vuser_set.
       
  1984 
       
  1985 <li>commands/vadduser.cc (add_user): Changed to use vuser_set.
       
  1986 
       
  1987 <li>lib/misc/vuser_set.cc (vuser_set): Renamed vuser_add to
       
  1988 vuser_set, and moved it into this file.  vuser_set can be used to
       
  1989 change existing entries as well as to add new entries.
       
  1990 
       
  1991 <li>commands/vrehash.cc (lock_dir): Set permissions on created CDB
       
  1992 file to 0600.
       
  1993 
       
  1994 <li>commands/vpasswd2cdb.cc (cli_main): Set permissions on created
       
  1995 CDB file to 0600.
       
  1996 
       
  1997 <li>lib/misc/vpwentry_putpw.cc (putpw): Set permissions on created
       
  1998 CDB file to 0600.
       
  1999 
       
  2000 <li>lib/misc/vpwentry_delpw.cc (delpw): Set permissions on created
       
  2001 CDB file to 0600.
       
  2002 
       
  2003 <li>clients/vdeliver.cc: Changed all I/O to use fdbuf primitives.
       
  2004 (deliver): Changed permissions on created file to 0666 to 0600
       
  2005 (mail should be private).
       
  2006 
       
  2007 </ul>
       
  2008 </p>
       
  2009 <p>1999-04-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2010 <ul>
       
  2011 
       
  2012 <li>Released version 0.90.2
       
  2013 
       
  2014 </ul>
       
  2015 </p>
       
  2016 <p>1999-04-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2017 <ul>
       
  2018 
       
  2019 <li>lib/misc/userdir.cc (userdir): Use the multiple-argument
       
  2020 mystring constructor to make pasting the slices together more
       
  2021 efficient.
       
  2022 
       
  2023 <li>daemon/main.cc: Added include of &lt;stdio.h&gt; to pull in perror
       
  2024 properly.
       
  2025 
       
  2026 </ul>
       
  2027 </p>
       
  2028 <p>1999-04-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2029 <ul>
       
  2030 
       
  2031 <li>Released version 0.90.1
       
  2032 
       
  2033 </ul>
       
  2034 </p>
       
  2035 <p>1999-04-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2036 <ul>
       
  2037 
       
  2038 <li>lib/misc/vpwentry_putpw.cc: Removed include of errnos.h
       
  2039 
       
  2040 <li>lib/misc/md5-crypt.c: Added definitions for MIN and MAX if they
       
  2041 aren't defined.
       
  2042 
       
  2043 </ul>
       
  2044 </p>
       
  2045 <p>1999-04-05  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2046 <ul>
       
  2047 
       
  2048 <li>doc/vmailmgr.conf.sample: Removed the entry for
       
  2049 cdb-password-file, as that variable is not used.
       
  2050 
       
  2051 </ul>
       
  2052 </p>
       
  2053 <p>1999-04-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2054 <ul>
       
  2055 
       
  2056 <li>Released version 0.90
       
  2057 
       
  2058 <li>doc/FAQ.texi: Noted that the C++ libraries are no longer
       
  2059 needed.
       
  2060 
       
  2061 <li>clients/bulletins.cc (stat_maildir): Fixed two bugs: timestamp
       
  2062 file was named "maildir/cur/.timestamp" instead of just
       
  2063 "maildir/.timestamp"; timestamp file was opened for writing
       
  2064 without a mode, causing the resulting file to have an
       
  2065 indeterminate mode.
       
  2066 
       
  2067 <li>doc/FAQ.texi: Added an answer regarding IMAP support.
       
  2068 
       
  2069 </ul>
       
  2070 </p>
       
  2071 <p>1999-04-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2072 <ul>
       
  2073 
       
  2074 <li>daemon/main.cc (handle_connection): Only print out the "Accepted
       
  2075 connection" message if the verbose flag is set.
       
  2076 
       
  2077 </ul>
       
  2078 </p>
       
  2079 <p>1999-04-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2080 <ul>
       
  2081 
       
  2082 <li>lib/misc/md5-crypt.c (md5_crypt_r): This routine depended on the
       
  2083 result of "strncpy" pointing to the end of the destination
       
  2084 string.  This is non-standard behavior.  Fixed such that the "cp"
       
  2085 pointer tracks its position manually.
       
  2086 
       
  2087 <li>cgi/listvdomain.cc: Converted to fdbuf.
       
  2088 
       
  2089 <li>daemon/main.cc (usage): Converted to fdbuf.
       
  2090 
       
  2091 <li>daemon/log.cc: Converted to fdbuf.
       
  2092 
       
  2093 <li>daemon/map_table.cc (map_table): Converted to fdbuf.
       
  2094 
       
  2095 <li>daemon/list_table.cc (list_table): Converted to fdbuf.
       
  2096 
       
  2097 <li>commands/*: Converted from iostream to fdbuf.
       
  2098 
       
  2099 <li>lib/cli/main.cc: Use the new "operator&lt;&lt;" methods of fdobuf.
       
  2100 
       
  2101 <li>lib/misc/validate.cc (validate_redirect): Converted from using
       
  2102 ostrstream to mystring for growing error messages.
       
  2103 
       
  2104 <li>lib/misc/configrc.cc (read_config): Use the new "operator&lt;&lt;"
       
  2105 methods of fdobuf for writing messages.
       
  2106 
       
  2107 <li>lib/misc/passwdfn.cc: Converted to using fdbuf objects.
       
  2108 
       
  2109 </ul>
       
  2110 </p>
       
  2111 <p>1999-03-31  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2112 <ul>
       
  2113 
       
  2114 <li>lib/misc/pwcrypt.cc: Adapted these routines to using the GNU MD5
       
  2115 library and the md5_crypt routine.
       
  2116 (crypt_cmp): Revised the algorithm here to use the old MD5 routine
       
  2117 only for old passcodes, md5_crypt for hashes starting with "$1$",
       
  2118 and crypt otherwise.  This should be compatible with all
       
  2119 implementations.
       
  2120 
       
  2121 <li>lib/misc/configrc.cc (read_config): Modified to use fdibuf
       
  2122 instead of ifstream.
       
  2123 (cmp): Fixed logic to properly parse "STR *= *STR" instead of
       
  2124 "STR *(=+ *)+STR".
       
  2125 
       
  2126 <li>Changed the copying policy to GPL.
       
  2127 
       
  2128 </ul>
       
  2129 </p>
       
  2130 <p>1999-03-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2131 <ul>
       
  2132 
       
  2133 <li>Released version 0.89.1
       
  2134 
       
  2135 <li>configure.in: Add a --enable-md5 flag to set USE_MD5.
       
  2136 
       
  2137 <li>lib/misc/pwcrypt.cc: Imported implementation of crypt_cmp and
       
  2138 pwcrypt from 0.87, using USE_MD5 as a selector.
       
  2139 
       
  2140 </ul>
       
  2141 </p>
       
  2142 <p>1999-03-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2143 <ul>
       
  2144 
       
  2145 <li>Released version 0.89
       
  2146 
       
  2147 <li>daemon/main.cc (handle_connection): Move the exit(0) out of the
       
  2148 if block so that the child always exits.
       
  2149 
       
  2150 <li>daemon/fork.cc (do_fork): Bump up the fork counters in the child
       
  2151 as well as the parent so that the accounting commands work
       
  2152 properly.
       
  2153 
       
  2154 <li>clients/bulletins.cc (stat_maildir): Fixed type: open the
       
  2155 timestamp file for output, not the maildir.
       
  2156 
       
  2157 </ul>
       
  2158 </p>
       
  2159 <p>1999-03-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2160 <ul>
       
  2161 
       
  2162 <li>clients/bulletins.cc (stat_maildir): The timestamp on the "cur"
       
  2163 directory is unreliable.  Create a zero-length ".timestamp" file
       
  2164 and use its modification mode for last-login information.
       
  2165 
       
  2166 </ul>
       
  2167 </p>
       
  2168 <p>1999-03-18  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2169 <ul>
       
  2170 
       
  2171 <li>daemon/listdomain.cc (CMD): Fixed a non-incrementing loop
       
  2172 counter.
       
  2173 
       
  2174 <li>daemon/fork.cc (handle_children): Now checks for both pid == -1
       
  2175 and pid == 0 to terminate the wait loop.
       
  2176 
       
  2177 <li>lib/misc/vpwentry_putpw.cc (putpw): If the input file does not
       
  2178 exist, skip the loop and add the record to a new output file.
       
  2179 
       
  2180 <li>lib/cdb++/cdb_reader.cc (cdb_reader): Set the failed flag to the
       
  2181 result of opening the file.
       
  2182 
       
  2183 <li>lib/misc/vpwentry_putpw.cc (putpw): Fixed inverted boolean bug.
       
  2184 
       
  2185 <li>daemon/lookup.cc (lookup_baseuser): Fixed bug: the pwentry
       
  2186 pointer returned by operator[] on the pwentry_table gets deleted
       
  2187 when the pwentry_table goes out of scope (and all kinds of weird
       
  2188 things happen to the data).
       
  2189 
       
  2190 <li>daemon/pwentry.cc (pwfile): Cache the value of pwfile for future
       
  2191 calls.
       
  2192 
       
  2193 <li>daemon/lookup.cc (lookup_baseuser): Use "right" instead of the
       
  2194 silly pointer increment logic to get the virtual name substring.
       
  2195 
       
  2196 </ul>
       
  2197 </p>
       
  2198 <p>1999-03-17  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2199 <ul>
       
  2200 
       
  2201 <li>daemon/dispatch.cc (dispatch_cmd): Remove all fork handling from
       
  2202 this routine.
       
  2203 
       
  2204 <li>daemon/main.cc (handle_connection): Call do_fork immediately
       
  2205 after accepting the connection.
       
  2206 
       
  2207 </ul>
       
  2208 </p>
       
  2209 <p>1999-03-16  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2210 <ul>
       
  2211 
       
  2212 <li>commands/vsetup.cc (setup_qmail_default): Set the initial value
       
  2213 of .qmail-default to "|@BINDIR@/vdeliver".
       
  2214 
       
  2215 <li>commands/vrehash.cc: Rewrote to use CDB functions.
       
  2216 
       
  2217 <li>daemon/listdomain.cc (CMD): Send output to 'fd' instead of
       
  2218 hard-coded file descriptor 2.
       
  2219 
       
  2220 <li>daemon/dispatch.cc (dispatch_cmd): Pass the file descriptor to
       
  2221 the dispatched function.
       
  2222 
       
  2223 <li>daemon/main.cc (handle_connection): Modified logic to better
       
  2224 suit the always-fork mentality.
       
  2225 
       
  2226 <li>daemon/dispatch.cc (dispatch_cmd): Changed logic to always
       
  2227 fork.
       
  2228 
       
  2229 <li>At this point, all cache support in vmailmgrd has been removed,
       
  2230 and all virtual password table functions will read CDBs.
       
  2231 
       
  2232 <li>daemon/lookup.cc: Converted the functions here to using the
       
  2233 tables instead of the caches.
       
  2234 
       
  2235 <li>daemon/pwentry_table.cc (pwentry_table): Converted the
       
  2236 implementation of pwentry_reader into this class.
       
  2237 
       
  2238 <li>daemon/hash_table.h (class hash_table): Fixed a long-standing
       
  2239 const method issue.
       
  2240 
       
  2241 <li>daemon/list_table.cc (list_table): Converted the implementation
       
  2242 of list_reader into this class.
       
  2243 
       
  2244 <li>daemon/map_table.cc (map_table): Converted the implementation of
       
  2245 map_reader into this class.
       
  2246 
       
  2247 <li>daemon/listdomain.cc (CMD): Removed the use of the vpwentry
       
  2248 cache table.
       
  2249 
       
  2250 <li>lib/misc/vpwentry_get.cc (rewind_getpw): Wrote this routine to
       
  2251 rewind an open cdb table witout re-opening it.
       
  2252 (getpw): Converted to using autodelete.
       
  2253 
       
  2254 <li>daemon/chpass.cc (CMD): Removed the use of the vpwentry cache
       
  2255 table.
       
  2256 
       
  2257 <li>daemon/lookup.cc (lookup_virtuser): Removed the use of the
       
  2258 vpwentry cache table.
       
  2259 
       
  2260 <li>daemon/pwentry.h (struct pwentry): Removed the vpwtable entry.
       
  2261 
       
  2262 </ul>
       
  2263 </p>
       
  2264 <p>1999-03-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2265 <ul>
       
  2266 
       
  2267 <li>lib/misc/vpwentry_*.cc: Append ".cdb" to the filename for the
       
  2268 CDB file name.
       
  2269 
       
  2270 <li>lib/misc/configrc.cc: Removed the cdb_password_file entry.
       
  2271 
       
  2272 </ul>
       
  2273 </p>
       
  2274 <p>1999-03-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2275 <ul>
       
  2276 
       
  2277 <li>lib/misc/vpwentry_putpw.cc (putpw): Converted to using CDB
       
  2278 functions.
       
  2279 
       
  2280 <li>commands/passwd2cdb.cc (cli_main): Converted to use to_record.
       
  2281 
       
  2282 <li>lib/misc/vpwentry.cc (to_record): Wrote this one-liner to build
       
  2283 a CDB record from the entry.
       
  2284 
       
  2285 <li>lib/misc/vpwentry_delpw.cc (delpw): Converted to using CDB
       
  2286 functions.
       
  2287 
       
  2288 <li>lib/misc/vpwentry_get.cc (start_getpw): Rewrote to use
       
  2289 vpwentry::from_record.
       
  2290 
       
  2291 <li>lib/misc/vpwentry_getpw.cc (getpw_byname): Rewrote to use
       
  2292 vpwentry::from_record.
       
  2293 
       
  2294 <li>lib/misc/vpwentry.cc (from_record): Wrote this routine to build
       
  2295 a vpwentry from a CDB record.
       
  2296 
       
  2297 </ul>
       
  2298 </p>
       
  2299 <p>1999-03-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2300 <ul>
       
  2301 
       
  2302 <li>lib/misc/vpwentry_getpw.cc (getpw_byname): Converted to using
       
  2303 CDB functions.
       
  2304 
       
  2305 <li>lib/misc/vpwentry_get.cc: Converted to using CDB functions.
       
  2306 
       
  2307 <li>lib/misc/configrc.cc: Added support for configuring the CDB
       
  2308 password table name.
       
  2309 
       
  2310 <li>commands/passwd2cdb.cc: Wrote this program to convert a standard
       
  2311 virtual password table into a CDB table.  The initial record
       
  2312 format is identical to the old to reduce library conversion
       
  2313 issues.
       
  2314 
       
  2315 <li>lib/misc/vpwentry_get.cc (start_getpw): This routine now returns
       
  2316 bool to indicate if the table was opened successfully.
       
  2317 
       
  2318 <li>Major reorganization of the libraries and header files.  All the
       
  2319 libraries are in subdirectories under "lib", and the headers under
       
  2320 "include" (with a pile of symlinks).
       
  2321 
       
  2322 </ul>
       
  2323 </p>
       
  2324 <p>1999-03-11  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2325 <ul>
       
  2326 
       
  2327 <li>Released version 0.88
       
  2328 
       
  2329 <li>configure.in: Check for libinet and libsocket.
       
  2330 
       
  2331 </ul>
       
  2332 </p>
       
  2333 <p>1999-03-10  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2334 <ul>
       
  2335 
       
  2336 <li>doc/vmailmgr-cgi.texi (Top): Removed warning about passwords
       
  2337 being limited to eight characters.
       
  2338 
       
  2339 <li>commands/vpasswds.cc (change_one): Removed warning about
       
  2340 passwords being truncated to eight characters.
       
  2341 
       
  2342 <li>lib/passwdfn.cc (getpasswd_interactive): Removed warning about
       
  2343 passwords being truncated to eight characters.
       
  2344 (getpasswd_stdin): Removed another eight character warning.
       
  2345 
       
  2346 </ul>
       
  2347 </p>
       
  2348 <p>1999-03-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2349 <ul>
       
  2350 
       
  2351 <li>lib/pwcrypt.cc: Add a passcode type digit to the MD5 hashes on
       
  2352 output, and check for this digit on comparison to determine what
       
  2353 type of hashing to use.
       
  2354 
       
  2355 </ul>
       
  2356 </p>
       
  2357 <p>1999-03-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2358 <ul>
       
  2359 
       
  2360 <li>daemon/check.cc (CMD): Tidied up result string creation code.
       
  2361 
       
  2362 <li>lib/vpwentry_getpw.cc (getpw_byname): Copied logic from getpw.
       
  2363 
       
  2364 <li>lib/vpwentry_get.cc (getpw): Fixed minor logic flaws.
       
  2365 
       
  2366 <li>lib-dbi/passcode.cc: Added a stub for MD5 authentication.
       
  2367 
       
  2368 <li>daemon/chpass.cc (CMD): Use renamed pwcrypt.
       
  2369 
       
  2370 <li>daemon/adduser.cc (CMD): Use renamed pwcrypt.
       
  2371 
       
  2372 <li>commands/vadduser.cc (add_user): Use renamed pwcrypt.
       
  2373 
       
  2374 <li>lib/vuser_add.cc (vuser_adduser): Use renamed pwcrypt.
       
  2375 
       
  2376 <li>lib/vuser_chpass.cc (vuser_chpass): Use renamed pwcrypt.
       
  2377 
       
  2378 <li>lib/pwcrypt.cc (crypt_cmp): Modified to automatically handle MD5
       
  2379 hashed passcodes.
       
  2380 Renamed encrypt to pwcrypt, which calls encrypt_md5 to produce MD5
       
  2381 hashed passcodes.
       
  2382 
       
  2383 <li>Completed conversion of source packaging from custom makefiles
       
  2384 to automake.
       
  2385 
       
  2386 </ul>
       
  2387 </p>
       
  2388 <p>1999-02-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2389 <ul>
       
  2390 
       
  2391 <li>Released version 0.87
       
  2392 
       
  2393 <li>Removed my kludged handling for building shared libraries.  This
       
  2394 greatly simplifies the process of moving to both automake and
       
  2395 libtool.  The executables are somewhat larger, but still come in
       
  2396 under about 25K each (on i386 Linux).
       
  2397 
       
  2398 <li>clients/bulletins.cc (scan_bulletins): Skip scanning the local
       
  2399 bulletin directory if the user is non-virtual.
       
  2400 
       
  2401 <li>clients/checkvpw.cc (struct user_data): Added a non_virtual flag
       
  2402 to this data, indicating that the user is not a virtual user.
       
  2403 (main): Pass the non_virtual flag into scan_bulletins.
       
  2404 
       
  2405 <li>lib/ac-wait.h: Moved the #include ladder that is required to use
       
  2406 wait(2) functions here.
       
  2407 
       
  2408 <li>lib/ac-dirent.h: Moved the #include ladder that is required to
       
  2409 use dirent functions here.
       
  2410 
       
  2411 <li>lib/ac-time.h: Moved the #include ladder that is required to use
       
  2412 time functions here, and rewrote all the files that include either
       
  2413 &lt;time.h&gt; or &lt;sys/time.h&gt; to instead include "ac-time.h"
       
  2414 
       
  2415 <li>commands/vpasswds.cc (cli_main): Removed call to srandom.
       
  2416 
       
  2417 <li>commands/vpasswd.cc (cli_main): Removed call to srandom.
       
  2418 
       
  2419 <li>commands/vaddusers.cc (cli_main): Removed call to srandom.
       
  2420 
       
  2421 <li>commands/vadduser.cc (cli_main): Removed call to srandom.
       
  2422 
       
  2423 <li>lib-cli/main.cc (main): Call srandom here to give all the CLI
       
  2424 programs a properly initialized random function automatically.
       
  2425 
       
  2426 </ul>
       
  2427 </p>
       
  2428 <p>1999-02-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2429 <ul>
       
  2430 
       
  2431 <li>daemon/main.cc: All signal handlers call signal to re-enable
       
  2432 signal handling on systems that reset signals.
       
  2433 
       
  2434 <li>daemon/fork.cc (handle_children): Re-assert the SIGCHLD signal
       
  2435 handler after a signal is received, since some systems will reset
       
  2436 the behavior of signals after they've been received.
       
  2437 
       
  2438 </ul>
       
  2439 </p>
       
  2440 <p>1999-02-22  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2441 <ul>
       
  2442 
       
  2443 <li>lib-cgi/cgi-base.cc (main): Eliminated the timezone setup since
       
  2444 it is totally unnecessary.
       
  2445 
       
  2446 </ul>
       
  2447 </p>
       
  2448 <p>1999-02-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2449 <ul>
       
  2450 
       
  2451 <li>lib-dbi/user.h: Moved the password validation method out of the
       
  2452 ruser/vuser classes into struct passcode.  This class may
       
  2453 eventually be split into multiple classes, one per passcode type.
       
  2454 
       
  2455 </ul>
       
  2456 </p>
       
  2457 <p>1999-02-06  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2458 <ul>
       
  2459 
       
  2460 <li>Released version 0.86
       
  2461 
       
  2462 <li>clients/bulletins.cc: Changed logic in all routines to not fail
       
  2463 if an error occurrs.
       
  2464 (link_file): Fixed several logic flaws.
       
  2465 
       
  2466 </ul>
       
  2467 </p>
       
  2468 <p>1999-01-30  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2469 <ul>
       
  2470 
       
  2471 <li>clients/bulletins.cc: Completed prototype code.
       
  2472 
       
  2473 </ul>
       
  2474 </p>
       
  2475 <p>1999-01-28  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2476 <ul>
       
  2477 
       
  2478 <li>clients/bulletins.cc (scan_bulletins): Roughed-in bulletin
       
  2479 scanning support.
       
  2480 
       
  2481 <li>clients/checkvpw.cc (main): Added call to scan bulletins.
       
  2482 
       
  2483 <li>lib/configrc.h (class configuration ): Added variables to be
       
  2484 used to set up bulletin directories.
       
  2485 
       
  2486 </ul>
       
  2487 </p>
       
  2488 <p>1999-01-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2489 <ul>
       
  2490 
       
  2491 <li>commands/vadduser.cc: Modified to accept a "directory" argument
       
  2492 of where to put the user's mailbox.
       
  2493 
       
  2494 </ul>
       
  2495 </p>
       
  2496 <p>1999-01-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2497 <ul>
       
  2498 
       
  2499 <li>Rewrote various sources to take advantage of new mystring
       
  2500 library constructor functions.
       
  2501 
       
  2502 <li>Inserted revised mystring library.
       
  2503 
       
  2504 </ul>
       
  2505 </p>
       
  2506 <p>1999-01-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2507 <ul>
       
  2508 
       
  2509 <li>Released version 0.85
       
  2510 
       
  2511 <li>daemon/vpwentry_cache.cc (dirname): Fixed stupid bug -- used
       
  2512 "right" instead of "left" to get the directory part of the
       
  2513 filename.  This bug was introduced by the following change.
       
  2514 
       
  2515 <li>All files: reworked code to remove cases where an automatic
       
  2516 conversion from type mystring to "const char*' was expected.
       
  2517 Instead, all the code uses the c_str() function in mystring.
       
  2518 
       
  2519 <li>Added a note in the FAQ regarding the default username.
       
  2520 
       
  2521 <li>lib-cli/main.cc: Rewrote the CLI library to remove dependance on
       
  2522 the GNU libiberty getopts.
       
  2523 
       
  2524 </ul>
       
  2525 </p>
       
  2526 <p>1998-12-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2527 <ul>
       
  2528 
       
  2529 <li>clients/vdeliver.cc (main): Changed the default for adding the
       
  2530 leading "From " line to false.
       
  2531 
       
  2532 <li>Released version 0.84
       
  2533 
       
  2534 </ul>
       
  2535 </p>
       
  2536 <p>1998-12-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2537 <ul>
       
  2538 
       
  2539 <li>lib/response_read.cc (read): Removed the __GNUG__ cruft here
       
  2540 that was only really necessary to optimize on old "mystring" use
       
  2541 (and probably only added nearly useless complexity even then).
       
  2542 
       
  2543 <li>lib/userdir.cc (userdir): Added a work-around for the apparent
       
  2544 egcs inlining bug to fix those core dumps when running vadduser
       
  2545 and friends.  Using egcs -finline-functions causes them to core
       
  2546 dump, without inlining everything works OK.
       
  2547 
       
  2548 </ul>
       
  2549 </p>
       
  2550 <p>1998-12-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2551 <ul>
       
  2552 
       
  2553 <li>commands/vadduser.cc (cli_main): Fixed off-by-one error
       
  2554 introduced by the use of lib-cli.
       
  2555 
       
  2556 </ul>
       
  2557 </p>
       
  2558 <p>1998-12-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2559 <ul>
       
  2560 
       
  2561 <li>configure.in: Added a check to determine if the C++ compiler is
       
  2562 buggy and abort if so.
       
  2563 
       
  2564 </ul>
       
  2565 </p>
       
  2566 <p>1998-12-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2567 <ul>
       
  2568 
       
  2569 <li>configure.in: Modified the tests for -fno-exceptions and
       
  2570 -fno-rtti to actually run the C++ compiler and check its result.
       
  2571 
       
  2572 </ul>
       
  2573 </p>
       
  2574 <p>1998-12-02  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2575 <ul>
       
  2576 
       
  2577 <li>commands/*.cc: Refitted all the command programs to use lib-cli.
       
  2578 
       
  2579 </ul>
       
  2580 </p>
       
  2581 <p>1998-11-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2582 <ul>
       
  2583 
       
  2584 <li>commands/vaddalias.cc: Refitted to use lib-cli.
       
  2585 
       
  2586 <li>lib-cli/main.cc: Wrote a top-level command-line interface
       
  2587 helper, which handles automatic help-screen generation, short and
       
  2588 long argument parsing, and will eventually handle switching
       
  2589 between "standard" command use and server-call usages.
       
  2590 
       
  2591 </ul>
       
  2592 </p>
       
  2593 <p>1998-11-28  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2594 <ul>
       
  2595 
       
  2596 <li>commands/listvdomain.cc: Wrote this program to list the contents
       
  2597 of a virtual domain.
       
  2598 
       
  2599 <li>configure.in: Added a somewhat poor hack to handle support for
       
  2600 static vs shared libraries.
       
  2601 
       
  2602 <li>lib/vpwentry_get.cc: added start_getpw, end_getpw, and getpw
       
  2603 routines.
       
  2604 
       
  2605 </ul>
       
  2606 </p>
       
  2607 <p>1998-11-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2608 <ul>
       
  2609 
       
  2610 <li>daemon/main.cc: Fixed handling of aborted and timed out
       
  2611 requests.  A timed out request will result in two error messages,
       
  2612 one from the alarm, and one from the failed read.
       
  2613 
       
  2614 </ul>
       
  2615 </p>
       
  2616 <p>1998-11-07  Bruce Guenter  &lt;bguenter@hal.qcc.sk.ca&gt;
       
  2617 <ul>
       
  2618 
       
  2619 <li>Released version 0.83
       
  2620 
       
  2621 <li>doc/vmailmgr-cgi.texi: Added a section to describe the use of
       
  2622 the listvdomain CGI.
       
  2623 
       
  2624 <li>cgi/listvdomain.cc (show_dest): Split original show_user into
       
  2625 show_dest which calls show_mbox or show_alias.
       
  2626 (show_mbox): Modified output to show mailbox destination.
       
  2627 (CGI_MAIN ): Accepts form inputs mboxlink and aliaslink, which are
       
  2628 links inserted on each mailbox or alias name, with '%' replaced by
       
  2629 the mailbox or alias name.
       
  2630 
       
  2631 </ul>
       
  2632 </p>
       
  2633 <p>1998-10-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2634 <ul>
       
  2635 
       
  2636 <li>daemon/main.cc (handle_connection): It appears that accept may
       
  2637 return with an error if a signal occurred while the accept was
       
  2638 being processed.  So, loop around accept until a valid fd is
       
  2639 returned.
       
  2640 
       
  2641 </ul>
       
  2642 </p>
       
  2643 <p>1998-10-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2644 <ul>
       
  2645 
       
  2646 <li>lib/cgi-*: Moved these files into lib-cgi.
       
  2647 
       
  2648 </ul>
       
  2649 </p>
       
  2650 <p>1998-10-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2651 <ul>
       
  2652 
       
  2653 <li>*/*.cc, */*.h: Changed all remaining instances of "const
       
  2654 mystring&" to "mystring".
       
  2655 
       
  2656 </ul>
       
  2657 </p>
       
  2658 <p>1998-09-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2659 <ul>
       
  2660 
       
  2661 <li>lib/server.cc, lib/response*.cc: Changed all instances of "const
       
  2662 mystring&" to "mystring".
       
  2663 
       
  2664 <li>cgi/listvdomain.cc (CGI_MAIN ): Forgot to output a content type
       
  2665 before the HTML content.  Fixed.
       
  2666 (show_domain): The user list is now sorted on output.
       
  2667 
       
  2668 <li>lib/cgi-args.cc: Changed all instances of "const mystring&" to
       
  2669 "mystring".
       
  2670 
       
  2671 <li>lib/cgi-base.cc: Exported content_type function.
       
  2672 Changed all instances of "const mystring&" to "mystring".
       
  2673 
       
  2674 </ul>
       
  2675 </p>
       
  2676 <p>1998-09-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2677 <ul>
       
  2678 
       
  2679 <li>Released version 0.82
       
  2680 
       
  2681 </ul>
       
  2682 </p>
       
  2683 <p>1998-09-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2684 <ul>
       
  2685 
       
  2686 <li>daemon/main.cc (exit_fn): Check the count of active forked
       
  2687 processes and sleep until they are all no longer active.
       
  2688 
       
  2689 <li>daemon/daemon.h: Moved parts of this file into command.h and
       
  2690 log.h.
       
  2691 
       
  2692 <li>daemon/*.cc: Replaced all instances of "cout" that produce log
       
  2693 messages with "log()" or "log(msg)".
       
  2694 
       
  2695 <li>daemon/log.cc (log): Added new routine that prefixes log lines
       
  2696 with "[pid] " if the log is being output from a child process.
       
  2697 
       
  2698 <li>cgi/listvdomain.cc (show_domain): Fixed loop logic to properly
       
  2699 truncate the buffer when repeating.  Set up the output to display
       
  2700 a table instead of a list.
       
  2701 (show_user): Added this routine to output a single user, doing a
       
  2702 lookup to determine if the name is a mailbox or alias.
       
  2703 
       
  2704 <li>daemon/dispatch.cc: Changed all the entries that would modify a
       
  2705 user to be "forked" methods.
       
  2706 
       
  2707 </ul>
       
  2708 </p>
       
  2709 <p>1998-09-23  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2710 <ul>
       
  2711 
       
  2712 <li>daemon/listdomain.cc (CMD): write_buf returns true on success,
       
  2713 not false.  Fixed.
       
  2714 
       
  2715 <li>lib/response_message.cc (message): Fixed a minor bug: the "msg"
       
  2716 portion of the response was treated as a NUL-terminated C string
       
  2717 instead of as binary data, causing potential truncation when used
       
  2718 with the listdomain facility.
       
  2719 
       
  2720 </ul>
       
  2721 </p>
       
  2722 <p>1998-09-21  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2723 <ul>
       
  2724 
       
  2725 <li>clients/checkvpw.cc (authenticate): Modified to handle extra
       
  2726 maildir value in string, eliminating an extra lookup.
       
  2727 
       
  2728 <li>daemon/check.cc (CMD): Modified return string to include a
       
  2729 maildir for virtual users.
       
  2730 
       
  2731 <li>daemon/fork.cc: Removed all the code that dealt with process
       
  2732 slots to fix a race condition: the forked process could exit
       
  2733 before the parent registers it as a child, causing the active
       
  2734 process counts to become incorrect and eventually prevent any
       
  2735 further forks.
       
  2736 
       
  2737 </ul>
       
  2738 </p>
       
  2739 <p>1998-09-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2740 <ul>
       
  2741 
       
  2742 <li>daemon/main.cc (handle_connection): Modified to use new fork
       
  2743 logic.
       
  2744 (usage): Added -v/-V option to usage message.
       
  2745 
       
  2746 <li>daemon/dispatch.cc (dispatch_cmd): Fixed logic of "did_fork"
       
  2747 flag to become two flags: needs_write and needs_exit.
       
  2748 
       
  2749 <li>daemon/main.cc (main): Removed use of atexit(exit_fn) to
       
  2750 automatically remove the socket file, since it must not be removed
       
  2751 when exiting from a forked routine.
       
  2752 
       
  2753 <li>daemon/dispatch.cc (dispatch_cmd): dup2 returns -1, not
       
  2754 non-zero, on error.  Fixed.
       
  2755 
       
  2756 <li>doc/vmailmgr.pod: Added the full list of programs that are part
       
  2757 of this package to a "SEE ALSO" list.
       
  2758 
       
  2759 </ul>
       
  2760 </p>
       
  2761 <p>1998-09-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2762 <ul>
       
  2763 
       
  2764 <li>clients/checkvpw.cc (main): Fixed design flaw in the "missing
       
  2765 maildir" design caused by setting the MAILDIR environment variable
       
  2766 before checking for the existance of the maildir.
       
  2767 (find_maildir): Changed search logic -- if no matching string is
       
  2768 found, indicate that the last argument is the "maildir" argument.
       
  2769 (main): Removed several redundant checks that were a result of the
       
  2770 above change.
       
  2771 
       
  2772 </ul>
       
  2773 </p>
       
  2774 <p>1998-09-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2775 <ul>
       
  2776 
       
  2777 <li>lib/response_read.cc (read_response): Fixed the missing "break"
       
  2778 in the switch statement.
       
  2779 
       
  2780 </ul>
       
  2781 </p>
       
  2782 <p>1998-09-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2783 <ul>
       
  2784 
       
  2785 <li>daemon/main.cc (handle_intr): Ignore PIPE signals while exiting,
       
  2786 as there is a potential for an infinite loop to occur if stdout is
       
  2787 a pipe that closes before this program exits.
       
  2788 
       
  2789 </ul>
       
  2790 </p>
       
  2791 <p>1998-09-05  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2792 <ul>
       
  2793 
       
  2794 <li>lib/response_read.cc (receive_string): Moved this routine here
       
  2795 from lib/server.cc.
       
  2796 (read): Moved the former implementation of response::response(int)
       
  2797 into a static read_response routine, and renamed it response::read.
       
  2798 
       
  2799 <li>lib/server.cc: Fixed several compile bugs.
       
  2800 
       
  2801 <li>cgi/listvdomain.cc: Fixed compile bugs, still not tested.
       
  2802 
       
  2803 </ul>
       
  2804 </p>
       
  2805 <p>1998-08-21  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2806 <ul>
       
  2807 
       
  2808 <li>cgi/listvdomain.cc (CGI_MAIN ): Completed the preliminary
       
  2809 implementation of this CGI.
       
  2810 
       
  2811 <li>lib/server.cc (call): Modified to use the new response
       
  2812 constructor to read the response from the client.
       
  2813 
       
  2814 <li>lib/response.h (struct response): Added a constructor to read
       
  2815 the data from a file descriptor.
       
  2816 
       
  2817 </ul>
       
  2818 </p>
       
  2819 <p>1998-08-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2820 <ul>
       
  2821 
       
  2822 <li>daemon/lookup.cc (lookup_and_validate): Fixed the behavior when
       
  2823 the password table contains a "default" user, the requested user
       
  2824 does not exist, and the "mustexist" flag is set.
       
  2825 
       
  2826 </ul>
       
  2827 </p>
       
  2828 <p>1998-07-31  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2829 <ul>
       
  2830 
       
  2831 <li>cgi/listvdomain.cc: Started this CGI program to list the users
       
  2832 in a virtualdomain, using the new "listdomain" server function.
       
  2833 
       
  2834 <li>lib/server.h (class server_call): Added a routine 'socket' to
       
  2835 return the open socket.
       
  2836 
       
  2837 <li>lib/server.cc (call): Modified to record the file descriptor for
       
  2838 the connection and to close it when the server_call is destructed.
       
  2839 
       
  2840 </ul>
       
  2841 </p>
       
  2842 <p>1998-07-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2843 <ul>
       
  2844 
       
  2845 <li>daemon/dispatch.cc (dispatch_cmd): In the case of a forked
       
  2846 dispatch, move the output to fd #2 (usually stderr), to give it a
       
  2847 constant location.
       
  2848 
       
  2849 <li>lib/response.h (struct response): Added the 'maxsize' constant
       
  2850 representing the maximum size of any one transmitted message.
       
  2851 
       
  2852 <li>daemon/listdomain.cc (CMD(listdomain)): Completed implementation
       
  2853 of this command.
       
  2854 
       
  2855 <li>daemon/lookup.cc: Moved the functions is_local and find_virtual
       
  2856 into this file from dispatch.cc.
       
  2857 
       
  2858 </ul>
       
  2859 </p>
       
  2860 <p>1998-07-21  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2861 <ul>
       
  2862 
       
  2863 <li>daemon/listdomain.cc (CMD(listdomain)): Started building this
       
  2864 routine to list the users in a virtual domain.
       
  2865 
       
  2866 </ul>
       
  2867 </p>
       
  2868 <p>1998-07-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2869 <ul>
       
  2870 
       
  2871 <li>daemon/main.cc (parse_options): Added support for a "verbose"
       
  2872 flag.
       
  2873 
       
  2874 <li>daemon/fork.cc (do_fork): Wrote this new routine to fork a new
       
  2875 process and record its pid in a table (if slots are available in
       
  2876 the table).
       
  2877 (handle_children): Wrote this new routine to handle any children
       
  2878 that were forked and have exited.
       
  2879 
       
  2880 <li>daemon/main.cc (handle_connection): Added support for commands
       
  2881 that cause forked connections.
       
  2882 
       
  2883 <li>lib/configrc.h (class configuration ): Added new configuration
       
  2884 variable "max_fork" -- the maximum number of forked processes to
       
  2885 handle.
       
  2886 
       
  2887 <li>daemon/main.cc (handle_connection): Modified this routine to
       
  2888 simply close the socket fd and continue if the previous operation
       
  2889 forked (the other "half" of the fork will handle the output).
       
  2890 
       
  2891 <li>daemon/dispatch.cc (struct dispatch ): Added a field to this
       
  2892 structure to indicate that the operation needs to fork.
       
  2893 
       
  2894 </ul>
       
  2895 </p>
       
  2896 <p>1998-07-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2897 <ul>
       
  2898 
       
  2899 <li>Released version 0.80
       
  2900 
       
  2901 <li>clients/checkvpw.cc (getdata): Fixed a longstanding error in
       
  2902 setting the password/stamp fields.  Fortunately, this error had no
       
  2903 impact at all on the data we use, but would have been immediately
       
  2904 visible if we were to try to use the timestamp.
       
  2905 
       
  2906 <li>daemon/lookup.cc (lookup_virtuser): Added code to look up a
       
  2907 default user if the lookup of a named user fails.
       
  2908 
       
  2909 <li>lib/configrc.h (class configuration ): Added a new configuration
       
  2910 variable "default_username".
       
  2911 
       
  2912 <li>clients/vdeliver.cc (build_command): Fixed a bug that would
       
  2913 cause an infinite loop when delivering to multiple destinations.
       
  2914 (build_command): Moved the appending of the hostname from enqueue
       
  2915 into here, to allow it to be added on each recipient.
       
  2916 
       
  2917 </ul>
       
  2918 </p>
       
  2919 <p>1998-06-17  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2920 <ul>
       
  2921 
       
  2922 <li>doc/vrehash.pod: Started man page for vrehash.
       
  2923 
       
  2924 <li>commands/vrehash.cc: Wrote this program to move all users
       
  2925 directories around into the proper hashed directory (see the man
       
  2926 page).
       
  2927 
       
  2928 <li>commands/vpasswds.cc (change_one): Fixed incorrect status
       
  2929 message (was "vpasswd:" should be "vpasswds:").
       
  2930 
       
  2931 </ul>
       
  2932 </p>
       
  2933 <p>1998-06-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2934 <ul>
       
  2935 
       
  2936 <li>lib/maildir.cc (make_maildir): Modified this routine to make all
       
  2937 the directories leading up to the named directory.
       
  2938 
       
  2939 <li>lib/configrc.h (class configuration ): Added the fields
       
  2940 user_dir_bits and user_dir_slices to support userdir.
       
  2941 
       
  2942 <li>lib/vuser_add.cc (vuser_add): Modified an error message to make
       
  2943 it more informative.
       
  2944 
       
  2945 <li>daemon/pwentry.cc (user_dir_abs): Modified to use userdir.
       
  2946 (user_dir_rel): Modified to use userdir.
       
  2947 
       
  2948 <li>lib/vuser_add.cc (vuser_adduser): Modified to use userdir.
       
  2949 
       
  2950 <li>lib/userdir.cc (userdir): Wrote this routine, which produces a
       
  2951 relative user directory name, including a hashed-out path and
       
  2952 subdirectories, from a username.
       
  2953 
       
  2954 </ul>
       
  2955 </p>
       
  2956 <p>1998-06-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2957 <ul>
       
  2958 
       
  2959 <li>clients/checkvpw.cc (main): Added a test to check if the user's
       
  2960 maildir exists and, if not, set the maildir to the configured
       
  2961 "error_maildir" string.
       
  2962 
       
  2963 <li>daemon/main.cc (handle_intr): Fixed shutdown logic to handle
       
  2964 both cases: interrupted while handing a connection, or while
       
  2965 waiting for a connection.
       
  2966 
       
  2967 <li>lib/configrc.h (class configuration ): Added new configuration
       
  2968 variable "error_maildir", which is a read-only maildir that
       
  2969 contains an error mail message.
       
  2970 
       
  2971 </ul>
       
  2972 </p>
       
  2973 <p>1998-06-11  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2974 <ul>
       
  2975 
       
  2976 <li>lib/configrc.cc (configuration): Commented out the code to read
       
  2977 a local configuration file.
       
  2978 
       
  2979 <li>lib/configrc.h: Moved the DEFAULT_* definitions out of here and
       
  2980 into configrc.cc again.
       
  2981 
       
  2982 <li>Backed out all the vdomain and configuration patches, in order
       
  2983 to fix all the confusion I had been generating.
       
  2984 
       
  2985 <li>daemon/main.cc (main): Changed the "interrupt" logic to exit
       
  2986 after the current request instead of potentially exiting during
       
  2987 the request (and leaving files in a indeterminate state).
       
  2988 
       
  2989 </ul>
       
  2990 </p>
       
  2991 <p>1998-06-09  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  2992 <ul>
       
  2993 
       
  2994 <li>daemon/vdomain.h (struct vdomain): Added a "config" item to this
       
  2995 class.
       
  2996 
       
  2997 </ul>
       
  2998 </p>
       
  2999 <p>1998-06-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3000 <ul>
       
  3001 
       
  3002 <li>daemon/state.h (class saved_state): Added code to effectively
       
  3003 push/pop a local configuration when entering a saved_state.
       
  3004 
       
  3005 <li>*/*.cc: Changed the use of the "config" variable to account for
       
  3006 it being a pointer.
       
  3007 
       
  3008 <li>commands/*.cc: Added the line "config = local_config();" to the
       
  3009 main routine before anything else is executed.
       
  3010 
       
  3011 <li>lib/configrc.cc (local_config): Added this routine to create a
       
  3012 local configuration based on the given home directory.
       
  3013 
       
  3014 <li>lib/configrc.h: Moved the DEFAULT_* definitions out of here and
       
  3015 into configrc.cc (the only place they are referenced).
       
  3016 Modified the constructors to support "stacking" of configurations.
       
  3017 Made the global "config" variable into a pointer to allow it to
       
  3018 change.
       
  3019 
       
  3020 <li>daemon/vdomain.h (struct vdomain): Wrote this new structure to
       
  3021 encapsulate a virtual domain.  These domains are stored in a hash
       
  3022 table "vdomains", indexed by base directory.
       
  3023 
       
  3024 <li>daemon/chpass.cc, daemon/lookup.cc: Adjusted to use the new
       
  3025 vdomains global.
       
  3026 
       
  3027 <li>daemon/pwentry.h (struct pwentry): Removed the vpwentry_cache
       
  3028 from this structure.  This will eliminate the expensive lookups at
       
  3029 startup (the file "passwd" is looked up for each real user) and a
       
  3030 significant amount of memory overhead.
       
  3031 
       
  3032 </ul>
       
  3033 </p>
       
  3034 <p>1998-06-05  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3035 <ul>
       
  3036 
       
  3037 <li>Released version 0.79
       
  3038 
       
  3039 </ul>
       
  3040 </p>
       
  3041 <p>1998-06-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3042 <ul>
       
  3043 
       
  3044 <li>lib/passwdfn.cc: Got rid of __GLIBC__ ifdef for crypt.h
       
  3045 
       
  3046 <li>lib/pwcrypt.cc: Got rid of __GLIBC__ ifdef for crypt.h
       
  3047 
       
  3048 </ul>
       
  3049 </p>
       
  3050 <p>1998-05-31  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3051 <ul>
       
  3052 
       
  3053 <li>lib/configrc.h: Removed the comment regarding DO_SHADOW.
       
  3054 
       
  3055 <li>daemon/pwentry_cache.cc: Modified the reader to make only a
       
  3056 single pass through the password and shadow password files.
       
  3057 
       
  3058 <li>lib/configrc.h: Renamed lib/config.h to this to avoid name
       
  3059 conflicts with the autoconf/configure-generated config.h.
       
  3060 
       
  3061 <li>various: Fixups mandated by the use of autoconf.
       
  3062 
       
  3063 </ul>
       
  3064 </p>
       
  3065 <p>1998-05-29  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3066 <ul>
       
  3067 
       
  3068 <li>daemon/dispatch.cc: Made the "echo" daemon command conditionally
       
  3069 compiled if TEST_DAEMON is defined.
       
  3070 
       
  3071 <li>daemon/vpwentry_cache.cc: Added code to log when the virtual
       
  3072 password caches are loaded/reloaded.
       
  3073 
       
  3074 <li>daemon/pwentry_cache.cc: Added code to log when the password
       
  3075 cache is loaded/reloaded.
       
  3076 
       
  3077 <li>commands/vsetup.cc (setup_passwd): Modified to use the new
       
  3078 postmaster config variables.
       
  3079 
       
  3080 <li>lib/config.cc (read_config): Changed the "postmaster"
       
  3081 configuration variable into "postmaster_email" and added
       
  3082 "postmaster_aliases".
       
  3083 
       
  3084 </ul>
       
  3085 </p>
       
  3086 <p>1998-05-27  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3087 <ul>
       
  3088 
       
  3089 <li>Released version 0.78
       
  3090 
       
  3091 <li>lib/vpwentry_putpw.cc (putpw): Fixed logic to deal with an
       
  3092 existant but non-readable original password file.
       
  3093 
       
  3094 <li>lib/vuser_add.cc (vuser_add): Changed the order of creating the
       
  3095 maildir and adding the user to the passwd file.  This allows the
       
  3096 maildir to be erased if adding the user fails, since the newly
       
  3097 created maildir is guaranteed to be empty.
       
  3098 
       
  3099 <li>lib/maildir.cc (make_maildir): Modified the code to remove any
       
  3100 newly-created directories if creation of any directory fails.
       
  3101 
       
  3102 <li>lib/passwdfn.cc (getpasswd_stdin): Changed use of "gets" to
       
  3103 "cin.get".
       
  3104 
       
  3105 </ul>
       
  3106 </p>
       
  3107 <p>1998-05-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3108 <ul>
       
  3109 
       
  3110 <li>commands/vpasswd.cc (main): Changed the "fprintf" to use
       
  3111 IOStreams.
       
  3112 
       
  3113 <li>lib/passwdfn.cc (getpasswd_*): Print a warning if the password
       
  3114 is longer than 8 characters.
       
  3115 
       
  3116 <li>commands/vpasswds.cc: Wrote this new program to change the
       
  3117 passwords of a list of users.  The input for this list is taken
       
  3118 from standard input and is of the form "name password".  Anything
       
  3119 following the password is ignored.
       
  3120 
       
  3121 <li>lib/config.cc: Added a new configuration item: postmaster.
       
  3122 
       
  3123 <li>commands/vadduser.cc (main): Removed the call to setup.
       
  3124 
       
  3125 <li>commands/vaddusers.cc (main): Removed the call to setup.
       
  3126 
       
  3127 <li>commands/vsetup.cc: Wrote this program to set up a new virtual
       
  3128 domain with the proper ".qmail-default" file and a users
       
  3129 directory, along with some useful system aliases.
       
  3130 
       
  3131 <li>daemon/vpwentry_cache.cc (write): Use "rename" system call.
       
  3132 
       
  3133 <li>lib/vpwentry_putpw.cc (putpw): Use "rename" sytem call.
       
  3134 
       
  3135 <li>lib/vpwentry_delpw.cc (delpw): Use "rename" system call instead
       
  3136 of "unlink/link/unlink" combination to guarantee atomicity of the
       
  3137 operation.
       
  3138 
       
  3139 <li>commands/_setup.cc (setup): Moved this routine out of
       
  3140 vadduser.cc so that it could be shared with vaddusers.cc.  It
       
  3141 should probably go into the shared library under a different
       
  3142 name.
       
  3143 
       
  3144 <li>commands/vaddusers.cc: Wrote this new program that adds a list
       
  3145 of users.  The input for this list is taken from standard input
       
  3146 and is of the form "name password [alias ...]".
       
  3147 
       
  3148 <li>lib/vpwentry_putpw.cc (putpw): Fixed a bug in the logic that
       
  3149 prevented the temporary password file from being renamed to a
       
  3150 non-existant original file.
       
  3151 
       
  3152 </ul>
       
  3153 </p>
       
  3154 <p>1998-05-25  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3155 <ul>
       
  3156 
       
  3157 <li>Released version 0.77
       
  3158 
       
  3159 <li>lib/vpwentry_putpw.cc (putpw): Fixed bug that would cause a
       
  3160 failed addition to leave behind a temporary file as well as merged
       
  3161 the case if the file does not already exist.
       
  3162 
       
  3163 </ul>
       
  3164 </p>
       
  3165 <p>1998-05-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3166 <ul>
       
  3167 
       
  3168 <li>daemon/pwentry_cache.cc: Fixed this code to deal with shadow
       
  3169 passwords.  Thanks to Andrew Gillespie for the initial patch to
       
  3170 show the problems.  The new code properly deals with caching both
       
  3171 the contents of /etc/shadow and /etc/passwd, as well as handling
       
  3172 the case where shadow passwords don't exist.
       
  3173 
       
  3174 </ul>
       
  3175 </p>
       
  3176 <p>1998-05-22  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3177 <ul>
       
  3178 
       
  3179 <li>Released version 0.76
       
  3180 
       
  3181 <li>daemon/file_cache.h (write_file): Call force_valid to avoid
       
  3182 having to re-read the cached table immediately after having
       
  3183 written its contents.  Do this _before_ unlocking the directory to
       
  3184 avoid a race condition.
       
  3185 
       
  3186 <li>daemon/file_cache.cc (force_valid): Added this routine to force
       
  3187 the cache state to indicate that the file is valid (if the file is
       
  3188 present).
       
  3189 
       
  3190 </ul>
       
  3191 </p>
       
  3192 <p>1998-05-15  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3193 <ul>
       
  3194 
       
  3195 <li>daemon/dispatch.cc (find_virtual): Fixed bug preventing use of
       
  3196 wildcards in virtualdomains.
       
  3197 
       
  3198 </ul>
       
  3199 </p>
       
  3200 <p>1998-05-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3201 <ul>
       
  3202 
       
  3203 <li>daemon/vpwentry_cache.cc (write): Set the new file mode to 0600.
       
  3204 
       
  3205 <li>lib/vpwentry_putpw.cc (putpw): Set the new file mode to 0600,
       
  3206 not 0700 (no execute bit).
       
  3207 
       
  3208 </ul>
       
  3209 </p>
       
  3210 <p>1998-05-12  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3211 <ul>
       
  3212 
       
  3213 <li>daemon/vpwentry_cache.cc (operator): Modified code to delete
       
  3214 entries that fail insertion into the table (ie duplicates).
       
  3215 
       
  3216 <li>daemon/chpass.cc (CMD): Removed the calls to begin/end_modify.
       
  3217 
       
  3218 <li>daemon/file_cache.h (file_cache_writer::write_file): Removed the
       
  3219 begin/end_modify routines and bundled them into this routine.
       
  3220 
       
  3221 </ul>
       
  3222 </p>
       
  3223 <p>1998-05-11  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3224 <ul>
       
  3225 
       
  3226 <li>daemon/vpwentry_cache.cc (unlock): Fixed bug in unlocking the
       
  3227 directory.
       
  3228 
       
  3229 <li>daemon/chpass.cc (CMD): Modified to use the file cache to modify
       
  3230 the password table instead of the vuser_chpass routine.
       
  3231 
       
  3232 </ul>
       
  3233 </p>
       
  3234 <p>1998-05-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3235 <ul>
       
  3236 
       
  3237 <li>Released version 0.75
       
  3238 
       
  3239 <li>daemon/main.cc (TIMEOUT): Changed the connection timeout to one
       
  3240 second, as values larger than that are useful only for debugging
       
  3241 the connection handling code.
       
  3242 
       
  3243 <li>lib/vpwentry_putpw.cc (putpw): Modified to use '\n' instead of
       
  3244 the endl operator to mark line ends.
       
  3245 
       
  3246 <li>lib/vpwentry_delpw.cc (delpw): Modified to use '\n' instead of
       
  3247 the endl operator to mark line ends (allows the output stream to
       
  3248 properly buffer writes).
       
  3249 
       
  3250 </ul>
       
  3251 </p>
       
  3252 <p>1998-05-07  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3253 <ul>
       
  3254 
       
  3255 <li>clients/checkvpw.cc, clients/vdeliver.cc: Moved these to files
       
  3256 from "commands" to the "clients" subdirectory
       
  3257 
       
  3258 <li>daemon/pwentry_cache.cc (operator): Convert the user names to
       
  3259 lowercase before inserting.
       
  3260 
       
  3261 <li>daemon/vpwentry_cache.cc (operator): Fixed bug: make the
       
  3262 virtual users' names lowercase before inserting into the table.
       
  3263 
       
  3264 <li>daemon/check.cc (CMD): Fixed bug: initialize virtpw pointer.
       
  3265 
       
  3266 <li>daemon/lookup.cc (lookup_maildir): Removed obsolete routine.
       
  3267 (CMD): Fixed bug: must initialize the pointers that previously
       
  3268 used autodelete.
       
  3269 
       
  3270 <li>daemon/vpwentry_cache.cc (operator): Fixed a bug that caused the
       
  3271 password and destination strings to be both stored in the password
       
  3272 field.
       
  3273 
       
  3274 <li>daemon/file_cache.cc (validate_cache): Check both the last
       
  3275 modification time on the file and the inode number to determine if
       
  3276 the file has changed.
       
  3277 
       
  3278 <li>daemon/*.cc: Changed all variables of type "autodelete&lt;vpwentry&gt;"
       
  3279 back to type "vpwentry*".
       
  3280 
       
  3281 <li>daemon/pwentry.cc: Removed the "getpw_byname" routine, now
       
  3282 obsoleted by the pwentry_cache.
       
  3283 
       
  3284 <li>daemon/lookup.cc (lookup_virtuser): Modified to handle the new
       
  3285 vpwtable cache in the pwentry.
       
  3286 
       
  3287 <li>daemon/pwentry.cc (pwentry): Initialize the vpwtable on
       
  3288 creation.
       
  3289 
       
  3290 <li>daemon/pwentry.h (struct pwentry): Added a vpwentry_cache to
       
  3291 this object.
       
  3292 
       
  3293 <li>daemon/vpwentry_cache.cc (write): Changed the end-of-line marker
       
  3294 from endl to "\n", as endl will cause the buffer to be flushed.
       
  3295 
       
  3296 <li>daemon/main.cc (read_data): Removed support for protocol one
       
  3297 requests (which allows me to remove one more read syscall from the
       
  3298 fast path, shrinking it down to a total of two reads).
       
  3299 
       
  3300 </ul>
       
  3301 </p>
       
  3302 <p>1998-05-06  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3303 <ul>
       
  3304 
       
  3305 <li>daemon/main.cc (read_data): Modified to read messages using
       
  3306 either protocol one or two.
       
  3307 
       
  3308 <li>lib/server.cc (build_msg): Modified to build messages using
       
  3309 protocol 2.
       
  3310 
       
  3311 <li>daemon/qmail.*: Removed these obsolete source files.
       
  3312 
       
  3313 <li>daemon/dispatch.cc (find_virtual): Wrote this routine that
       
  3314 mimics the old behavior of find_virtual from qmail.cc to find a
       
  3315 mapping from a virtual domain name to a prefix, using a map_cache
       
  3316 on control/virtualdomains.
       
  3317 
       
  3318 <li>daemon/file_cache.h (class file_cache): Modified the behavior to
       
  3319 automatically load the cache on construction, instead of waiting.
       
  3320 
       
  3321 <li>daemon/map_cache.h: Wrote the classes for map_cache, a generic
       
  3322 qmail-style map-file cache (the key and value pair is separated by
       
  3323 a colon, one per line).
       
  3324 
       
  3325 <li>daemon/list_cache.h: Renamed locals_cache to list_cache, as a
       
  3326 generic list-file cache class.
       
  3327 
       
  3328 <li>daemon/dispatch.cc (is_local): Fixed to check the cached result.
       
  3329 
       
  3330 <li>daemon/file_cache.cc: Moved the actual code for file_cache_base
       
  3331 here.
       
  3332 
       
  3333 <li>daemon/file_cache.h (class file_cache_base): Created this class
       
  3334 to contain the common code in the file_cache template.
       
  3335 
       
  3336 <li>daemon/lookup.cc (lookup_baseuser): fixed the lookup to only
       
  3337 read the cached "pwentries" object once per invocation, and to
       
  3338 check the result.
       
  3339 
       
  3340 <li>daemon/qmail.cc (is_local): Removed this routine, as its
       
  3341 functionality can be duplicated with a locals cache.
       
  3342 
       
  3343 <li>daemon/locals_cache.cc: Wrote this object to cache the "locals"
       
  3344 table used by qmail to determine what domains are "local".
       
  3345 
       
  3346 <li>daemon/qmail.cc: Moved this object here from lib.
       
  3347 
       
  3348 <li>daemon/*.cc: Changed all variables of type "autodelete&lt;pwentry&gt;"
       
  3349 back to type "pwentry*", as the lookup functions that would set
       
  3350 these variables now return non-deletable references.
       
  3351 
       
  3352 <li>daemon/lookup.cc: Modified the various lookup routines that look
       
  3353 up base users to use the pwentries cache.
       
  3354 
       
  3355 <li>daemon/file_cache.h:
       
  3356 <li>daemon/hash_table.h:
       
  3357 <li>daemon/crc32.h:
       
  3358 <li>daemon/crc32.cc:
       
  3359 <li>daemon/crc_hash.h:
       
  3360 <li>daemon/pwentry_cache.cc:
       
  3361 <li>daemon/pwentry_cache.h:
       
  3362 <li>daemon/vpwentry_cache.cc:
       
  3363 <li>daemon/vpwentry_cache.h: Merged from temporary development
       
  3364 tree.  Current functionality consists of a generic hash table,
       
  3365 mapping from mystring keys to generic objects; a file cache that
       
  3366 will automatically reload a cached object only when necessary; and
       
  3367 specific code for building caches of the base user password table
       
  3368 (pwentry_cache) and virtual password tables (vpwentry_cache).
       
  3369 
       
  3370 <li>lib/vpwentry_putpw.cc (putpw): Now opens the temporary file with
       
  3371 "noreplace" to avoid races, and mode 0700.
       
  3372 
       
  3373 <li>lib/vpwentry_delpw.cc (delpw): Now opens the temporary file with
       
  3374 "noreplace" to avoid races, and mode 0700.
       
  3375 
       
  3376 </ul>
       
  3377 </p>
       
  3378 <p>1998-05-04  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3379 <ul>
       
  3380 
       
  3381 <li>daemon/pwentry.*: Moved these files here from lib, as no other
       
  3382 module uses them.
       
  3383 
       
  3384 <li>lib/pwentry.cc (getpw_byname): Moved this function here from
       
  3385 pwentry_getpw.cc.
       
  3386 
       
  3387 <li>lib/vpwentry_delpw.cc: Renamed this file from pwentry_delpw.cc
       
  3388 
       
  3389 <li>lib/vpwentry_putpw.cc: Renamed this file from pwentry_putpw.cc
       
  3390 
       
  3391 <li>lib/vpwentry_getpw.cc: Added the getpw_byname function from
       
  3392 pwentry_getpw.cc.
       
  3393 
       
  3394 <li>lib/pwentry_getpw.cc: Removed the vpwentry function.
       
  3395 
       
  3396 </ul>
       
  3397 </p>
       
  3398 <p>1998-05-03  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3399 <ul>
       
  3400 
       
  3401 <li>lib/vuser.h: Only include "vpwentry.h", not "pwentry.h"
       
  3402 
       
  3403 <li>lib/vpwentry.cc: Moved the vpwentry constructors and destructors
       
  3404 here.
       
  3405 
       
  3406 <li>lib/pwentry.cc: Removed the vpwentry portions.
       
  3407 
       
  3408 <li>lib/pwentry.h: Removed the portions that only deal with
       
  3409 vpwentry's.
       
  3410 
       
  3411 <li>lib/vpwentry.h: Split the portions of pwentry.h that only deal
       
  3412 with vpwentry's into this file.
       
  3413 
       
  3414 <li>spec: Forgot to add a call to "ldconfig" in %post.
       
  3415 
       
  3416 </ul>
       
  3417 </p>
       
  3418 <p>1998-04-24  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3419 <ul>
       
  3420 
       
  3421 <li>Released version 0.74.
       
  3422 
       
  3423 </ul>
       
  3424 </p>
       
  3425 <p>1998-04-23  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3426 <ul>
       
  3427 
       
  3428 <li>daemon/chpass.cc (CMD): modified to use save_state.
       
  3429 
       
  3430 <li>daemon/deluser.cc (CMD): modified to use save_state.
       
  3431 
       
  3432 <li>daemon/delalias.cc (CMD): modified to use save_state.
       
  3433 
       
  3434 <li>daemon/addalias.cc (CMD): modified to use save_state and
       
  3435 lookup_and_validate.
       
  3436 
       
  3437 <li>daemon/adduser.cc (CMD): Modified to use save_state.
       
  3438 
       
  3439 <li>daemon/state.h (class saved_state): Created this class from
       
  3440 saved_uidgid -- it also does a chdir to the user's home
       
  3441 directory.  By doing so, it allows the use of relative paths as if
       
  3442 operating as the given user.
       
  3443 
       
  3444 <li>daemon/lookup.cc (lookup_and_validate): Modified to optionally
       
  3445 create a new vpwentry if the named virtual shouldn't and doesn't
       
  3446 exist yet.
       
  3447 
       
  3448 <li>daemon/adduser.cc (CMD): Modified to use lookup_and_validate and
       
  3449 pwentry::user_dir_rel.
       
  3450 
       
  3451 <li>lib/pwentry.cc (user_dir_rel, user_dir_abs): Created these two
       
  3452 routines that return the relative (to home) and absolute directory
       
  3453 name of a new virtual user's directory according to the configured
       
  3454 user_dir parameter.
       
  3455 
       
  3456 <li>commands/checkvpw.cc: Added function declarations missing on
       
  3457 Solaris.
       
  3458 
       
  3459 <li>commands/vdeliver.cc: Added function declarations missing on
       
  3460 Solaris.
       
  3461 
       
  3462 <li>lib/cgi-base.cc: Added function declarations missing on Solaris.
       
  3463 
       
  3464 <li>commands/vpasswd.cc: Added function declarations missing on
       
  3465 Solaris.
       
  3466 
       
  3467 <li>commands/vadduser.cc: Added function declarations missing on
       
  3468 Solaris.
       
  3469 
       
  3470 <li>lib/pwcrypt.cc: Added function declarations missing on Solaris.
       
  3471 
       
  3472 <li>daemon/dispatch.cc (dispatch_cmd): Add the domain name to the
       
  3473 error message for an invalid domain name, as the request won't
       
  3474 have been printed by the time this happens.
       
  3475 
       
  3476 </ul>
       
  3477 </p>
       
  3478 <p>1998-04-21  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3479 <ul>
       
  3480 
       
  3481 <li>commands/vadduser.cc (add_alias): Fixed bug: this routine
       
  3482 previously looked up the user name instead of the alias when
       
  3483 checking for the existance of the alias.
       
  3484 
       
  3485 <li>lib/validate.cc (validate_field): Fixed bug: find_first returns
       
  3486 -1 if nothing is found, not zero.
       
  3487 
       
  3488 <li>commands/vadduser.cc (add_alias): No longer necessary to add the
       
  3489 '&' prefix.
       
  3490 
       
  3491 <li>commands/vaddalias.cc (main): No longer neccessary to add the
       
  3492 '&' prefix.
       
  3493 
       
  3494 <li>lib/vuser_add.cc (vuser_addalias): Automatically prepend a '&'
       
  3495 to the destination.
       
  3496 
       
  3497 <li>daemon/addalias.cc (CMD(addalias)): Call validate_redirect
       
  3498 before adding the alias.
       
  3499 
       
  3500 </ul>
       
  3501 </p>
       
  3502 <p>1998-04-17  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3503 <ul>
       
  3504 
       
  3505 <li>commands/vaddalias.cc (main): Removed the destination validation
       
  3506 code from this program and made it call validate_redirect.
       
  3507 
       
  3508 <li>lib/validate.cc (validate_redirect): Created this routine to
       
  3509 validate a redirect destination.
       
  3510 
       
  3511 </ul>
       
  3512 </p>
       
  3513 <p>1998-04-16  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3514 <ul>
       
  3515 
       
  3516 <li>lib/validate.cc (validate_username): Revised this to disallow
       
  3517 '/' in user names.
       
  3518 
       
  3519 <li>vmailmgr.conf.sample: Added notes regarding which component(s)
       
  3520 uses each of the listed settings.
       
  3521 
       
  3522 <li>lib/config.h: Removed the macro definitions that just served as
       
  3523 aliases for parts of the configuration class.
       
  3524 
       
  3525 </ul>
       
  3526 </p>
       
  3527 <p>1998-04-14  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3528 <ul>
       
  3529 
       
  3530 <li>daemon/lookup.cc: Removed the 'userlookup' routine.
       
  3531 
       
  3532 <li>lib/maildir.cc (make_maildir): Moved this routine here from
       
  3533 vuser_add.
       
  3534 (delete_maildir): Moved this routine here from vuser_deluser,
       
  3535 renamed from deltree.
       
  3536 
       
  3537 </ul>
       
  3538 </p>
       
  3539 <p>1998-04-13  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3540 <ul>
       
  3541 
       
  3542 <li>lib/vuser_add.cc (vuser_add): Use validate routines instead of
       
  3543 hard-coded checks.
       
  3544 (vuser_adduser): Renamed the simple vuser_add to vuser_adduser to
       
  3545 avoid confusion between the two vuser_add routines.
       
  3546 
       
  3547 <li>lib/validate.cc (validate_username): Wrote this routine to
       
  3548 ensure that a username is valid; returns true if so.
       
  3549 
       
  3550 <li>daemon/delalias.cc (CMD(delalias)): Switched from userlookup to
       
  3551 lookup_and_validate.
       
  3552 
       
  3553 <li>daemon/addalias.cc (CMD(addalias)): Switched from userlookup to
       
  3554 lookup_{baseuser,virtuser}.  Removed check for invalid alias name
       
  3555 (already done by vuser_addalias).
       
  3556 
       
  3557 <li>daemon/deluser.cc (CMD(deluser)): Switched from userlookup to
       
  3558 lookup_and_validate.
       
  3559 
       
  3560 <li>daemon/adduser.cc (CMD(adduser)): Switched from userlookup to
       
  3561 lookup_{baseuser,virtuser}.  Removed check for invalid user name
       
  3562 (already done by vuser_add).  Removed duplicated code from
       
  3563 vuser_adduser.
       
  3564 
       
  3565 <li>daemon/check.cc (CMD(check)): Switched from userlookup to
       
  3566 lookup_{baseuser,virtuser}.
       
  3567 
       
  3568 <li>daemon/chpass.cc (CMD(chpass)): Switched from userlookup to
       
  3569 lookup_and_validate.
       
  3570 
       
  3571 <li>daemon/lookup.cc (lookup_and_validate): Wrote this routine,
       
  3572 which looks up base and virtual users and validates them,
       
  3573 replacing several lines of common code in many of the interfaces.
       
  3574 
       
  3575 <li>commands/checkvpw.cc (main): Use the separators configuration
       
  3576 item instead of just '@'.
       
  3577 
       
  3578 <li>lib/config.cc (read_config): Added a new configuration option,
       
  3579 "separators", which lists valid separators between the user name
       
  3580 and virtual domain name when logging in via checkvpw.  Defaults to
       
  3581 "@:"
       
  3582 
       
  3583 <li>lib/mystring.cc (find_first): Added this routine, finds the
       
  3584 first character that matches any one in a set.
       
  3585 
       
  3586 <li>daemon/lookup.cc (userlookup): Split this function into its two
       
  3587 parts, lookup_baseuser and lookup_virtuser.
       
  3588 
       
  3589 </ul>
       
  3590 </p>
       
  3591 <p>1998-04-11  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3592 <ul>
       
  3593 
       
  3594 <li>commands/vaddalias.cc (main): Modified this code to handle (and
       
  3595 check) multiple recipients.
       
  3596 
       
  3597 <li>commands/vdeliver.cc (enqueue): Split this routine into three
       
  3598 parts, and added the functionality to deal with multiple
       
  3599 recipients in a destination address (separated by commas).
       
  3600 
       
  3601 </ul>
       
  3602 </p>
       
  3603 <p>1998-04-08  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3604 <ul>
       
  3605 
       
  3606 <li>commands/vdeliver.cc (enqueue): Changed the calls to setenv to
       
  3607 equivalent calls to putenv, as some system's don't have setenv.
       
  3608 
       
  3609 <li>commands/checkvpw.cc (set_environ): Changed the calls to setenv
       
  3610 to equivalent calls to putenv, as some system's don't have setenv.
       
  3611 
       
  3612 </ul>
       
  3613 </p>
       
  3614 <p>1998-04-05  Bruce Guenter  &lt;bguenter@hal.qcc.sk.ca&gt;
       
  3615 <ul>
       
  3616 
       
  3617 <li>Released version 0.73
       
  3618 
       
  3619 <li>commands/vdeliver.cc (main): Fixed bug with handling of ??LINE
       
  3620 environment variables (local variables had erroneously overridden
       
  3621 previously global variables).
       
  3622 
       
  3623 <li>vmailmgr-cgi.texi: Filled in the details for the form fields of
       
  3624 vpasswd.
       
  3625 
       
  3626 <li>cgi/*.cc: Remove the "CGI_INPUT" lines for "vdomain" and
       
  3627 "password", as they are defined by the top-level CGI constructor.
       
  3628 
       
  3629 <li>lib/cgi-base.cc (CGI): Add "vdomain" and "password" to the list
       
  3630 of fields that are automatically retrieved for all the CGIs, as
       
  3631 all CGIs will operate on a virtual domain, and all require a
       
  3632 password.
       
  3633 
       
  3634 </ul>
       
  3635 </p>
       
  3636 <p>1998-04-02  Bruce Guenter  &lt;bguenter@hal.qcc.sk.ca&gt;
       
  3637 <ul>
       
  3638 
       
  3639 <li>vmailmgr-cgi.texi: Started writing documentation on how to
       
  3640 configure the CGI programs.
       
  3641 
       
  3642 </ul>
       
  3643 </p>
       
  3644 <p>1998-04-01  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3645 <ul>
       
  3646 
       
  3647 <li>HOWTO.texi: Started writing instructions on how to do certain
       
  3648 tasks with vmailmgr.
       
  3649 
       
  3650 </ul>
       
  3651 </p>
       
  3652 <p>1998-03-31  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3653 <ul>
       
  3654 
       
  3655 <li>lib/config.cc (read_config): Rewrote this routine to only go
       
  3656 through the file once (instead of once per variable), and to print
       
  3657 out errors on invalid lines.
       
  3658 
       
  3659 </ul>
       
  3660 </p>
       
  3661 <p>1998-03-29  Bruce Guenter  &lt;bguenter@hal.qcc.sk.ca&gt;
       
  3662 <ul>
       
  3663 
       
  3664 <li>various: Use pwentry::pwfile and pwentry::user_dir in place of
       
  3665 computing their values repeatedly.
       
  3666 
       
  3667 <li>lib/pwentry.cc (pwentry::pwfile): Wrote this routine, returns
       
  3668 the password file name for the given base user.
       
  3669 (pwentry::user_dir): Returns the user directory for the given base
       
  3670 user.
       
  3671 
       
  3672 <li>lib/config.cc (post_process): Wrote this routine to "tidy up"
       
  3673 some of the configuration strings, such as directories that should
       
  3674 always have a trailing slash ('/').
       
  3675 
       
  3676 <li>lib/config.h: Change all the defined configuration macros
       
  3677 (except for DO_SHADOW) to their configuration variables.
       
  3678 
       
  3679 <li>various: Treat the configuration defines as variables instead of
       
  3680 as constant strings.
       
  3681 
       
  3682 <li>lib/config.cc (configuration): Initialize all the strings to
       
  3683 default values.
       
  3684 
       
  3685 </ul>
       
  3686 </p>
       
  3687 <p>1998-03-28  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3688 <ul>
       
  3689 
       
  3690 <li>lib/config.cc: Started this module, which can read a
       
  3691 configuration file for default values at runtime.  The default
       
  3692 configuration initialization will read both a global configuration
       
  3693 file and a local one.
       
  3694 
       
  3695 </ul>
       
  3696 </p>
       
  3697 <p>1998-03-26  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3698 <ul>
       
  3699 
       
  3700 <li>Released version 0.72
       
  3701 
       
  3702 <li>commands/vdeliver.cc (main): Fixed the bug that caused empty
       
  3703 environment variables (valid) to be treated as non-existant
       
  3704 environment variables.  This caused bounces to vdeliver to double
       
  3705 bounce.
       
  3706 
       
  3707 <li>Released version 0.71
       
  3708 
       
  3709 </ul>
       
  3710 </p>
       
  3711 <p>1998-03-22  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3712 <ul>
       
  3713 
       
  3714 <li>cgi/*.cc: Use "msg", not "message()" from the response as the
       
  3715 error response message.
       
  3716 
       
  3717 <li>lib/cgi-args.cc (get_parts): Strings weren't being terminated
       
  3718 properly before being set.  Fixed.
       
  3719 
       
  3720 </ul>
       
  3721 </p>
       
  3722 <p>1998-03-20  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3723 <ul>
       
  3724 
       
  3725 <li>daemon/dispatch.cc: Added entries for deluser, delalias, and
       
  3726 addalias.
       
  3727 
       
  3728 <li>daemon/delalias.cc (CMD(delalias)): Wrote this routine to delete
       
  3729 an alias.
       
  3730 
       
  3731 <li>daemon/addalias.cc (CMD(addalias)): Wrote this routine to add an
       
  3732 alias.
       
  3733 
       
  3734 <li>cgi: Merged in all the code and libraries for CGI programs into
       
  3735 the standard build.  At this point, there is a basic framework
       
  3736 that all CGI programs will use, which includes a mechanism that
       
  3737 automatically pulls the inputs from a POST form, and a base class
       
  3738 that is executed on startup.  The CGI module defines the routine
       
  3739 CGI_MAIN, which is executed by the program startup code.  The CGI
       
  3740 module should call either error() or success() at the end of its
       
  3741 execution, which will handle printing out an appropriate message.
       
  3742 All of the v* programs (vpasswd, vadduser, vdeluser, vaddalias,
       
  3743 and vdelalias) have a CGI equivalent.
       
  3744 
       
  3745 <li>daemon/deluser.cc (CMD(deluser)): Wrote this routine to delete a
       
  3746 user.
       
  3747 
       
  3748 </ul>
       
  3749 </p>
       
  3750 <p>1998-03-19  Bruce Guenter  &lt;bguenter@mikhail.qcc.sk.ca&gt;
       
  3751 <ul>
       
  3752 
       
  3753 <li>lib/server.cc: include un.h
       
  3754 
       
  3755 <li>daemon/main.cc: include un.h
       
  3756 
       
  3757 <li>lib/un.h: Wrote this header to define SUN_LEN and to include
       
  3758 necessary things for doing sockets.
       
  3759 
       
  3760 <li>daemon/main.cc (make_socket): Split the code to create a socket
       
  3761 into this routine; fixed the permissions bug that caused the
       
  3762 socket to be created without other-write permission when launched
       
  3763 with a non-zero umask.
       
  3764 
       
  3765 <li>Released version 0.70
       
  3766 
       
  3767 </ul>
       
  3768 </p>