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