doc/ChangeLog-pre-0.70
changeset 0 6f7a81934006
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/ChangeLog-pre-0.70	Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,517 @@
+1998-03-19  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* vmailmgrd.pod: Documented the -d and -D options for logging.
+
+	* daemon/log.cc (finish): It is not correct to un-freeze a string
+	stream while a character pointer to its contents is still in use.
+	Moved the "out.freeze(0)" call to after the contents were used.
+
+1998-03-15  Bruce Guenter  <bguenter@hal.qcc.sk.ca>
+
+	* lib/config.h: Added explanations of the various definitions, and
+	added the definitions DO_SHADOW and MAILDIR_ARG_STR.
+
+	* lib/pwentry_getpw.cc: #include the config.h file, which may
+	define DO_SHADOW.
+
+	* commands/checkvpw.cc (find_maildir): Use the configuration macro
+	MAILDIR_ARG_STR instead of the hard coded string "maildir".
+
+1998-03-14  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/checkvpw.cc (getdata): Wrote some small modifications
+	here to make it more correct and slightly more efficient.
+
+1998-03-12  Bruce Guenter  <bguenter@hal.qcc.sk.ca>
+
+	* commands/checkvpw.cc (authenticate): Coded the server call to
+	use the convenience constructor.
+
+	* commands/vdeliver.cc (main): Coded the server call to use the
+	convenience constructor.
+
+	* lib/server.cc (server_call): Added several convenience
+	constructors, taking 0-4 string arguments.
+
+1998-03-12  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* Released version 0.69pre9
+
+	* commands/vadduser.cc (setup): Initialize the random number
+	generator.
+
+	* commands/vpasswd.cc (main): Initialize the random number
+	generator before changing passwords.  This helps to prevent
+	identical "salt"s in the passwords.
+
+	* commands/vadduser.cc (setup): Added a check for the
+	'.qmail-default' file, and print a short message explaining how to
+	create it if it does not exist.
+
+1998-03-11  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/vdeliver.cc (exit_msg): Forgot to write a trailing
+	newline in the exit messages.  Fixed.
+
+1998-03-10  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/vdeluser.cc (main): Changed the response messages to
+	look more like the other command programs.
+
+	* lib/Makefile: Added rules to build the common library as a
+	shared object, libvmailmgr.so.$(libversion), to which all the
+	other programs link.
+
+	* version: Added new version variables: libversion and soversion,
+	used for building versioned shared objects.
+
+	* lib/passwdfn.cc (getpasswd): Fixed the problem that would cause
+	an error message about an empty password to be printed if the
+	passwords were different.
+
+	* commands/vpasswd.cc (main): Removed the server call in this
+	program and made it use vuser_chpass instead.
+
+	* lib/vuser_chpass.cc (vuser_chpass): Wrote this pair of routines
+	which change the password of a user in a virtual password table.
+
+	* daemon/chpass.cc (CMD(chpass)): Modified to use vuser_chpass.
+
+1998-03-09  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/chpass.cc (CMD(chpass)): Converted to use autodelete.
+
+	* daemon/adduser.cc (CMD(adduser)): Converted to use autodelete.
+
+1998-03-08  Bruce Guenter  <bguenter@hal.qcc.sk.ca>
+
+	* Released version 0.69pre8
+
+	* lib/vuser_lookup.cc (vuser_lookup): Converted to use autodelete.
+
+	* lib/vuser_delalias.cc (vuser_delalias): Converted to use autodelete.
+
+	* lib/vuser_deluser.cc (vuser_deluser): Converted to use autodelete.
+
+	* lib/pwentry_delpw.cc (delpw): Fixed the same problem as in putpw.
+	(delpw): Fixed the typo in creating the output file (output file
+	name is in variable 'copyfile', not 'file').
+
+	* lib/pwentry_putpw.cc (putpw): istream.getline should be used
+	instead of istream.get which doesn't discard the newline.
+
+	* lib/vuser_add.cc (bad_chars): Removed the check for the
+	directory separator in this routine, as '/' is a valid character
+	in both password fields and e-mail addresses.
+
+1998-03-04  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* vaddalias.pod: Updated the document to reflect the below change.
+
+	* commands/vaddalias.cc (main): Modified the user lookup code to
+	skip looking up a local user if the address contains a hostname
+	(preceeded by an at sign (@)).
+
+	* lib/mystring.cc (find): Modified this routine to add an "offset"
+	parameter at which to start the search.
+
+1998-02-26  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.69pre7
+
+	* commands/checkvpw.cc (main): If the environment variable
+	TCPLOCALHOST is not set, get the host name from gethostname(3).
+
+	* daemon/main.cc (abortreq): Now generates a temporary response
+	(with code=bad) and calls finishreq.
+	(finishreq): Wrote this routine which logs a response and closes
+	the connection.
+	(main): Print out a message regarding the status of logging.
+	(parse_options): Added code to parse the command line options.
+
+	* daemon/log.cc (logresponse): Added this routine that optionally
+	logs both the command and the response if either the response
+	indicates an error or the program is logging all responses.
+	Also set up all the other routines to log to a string which is
+	only optionally logged given the above conditions.
+
+1998-02-22  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/log.cc: Wrote various 'logcommand' routines into this file.
+
+1998-02-21  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/main.cc (handle_connection): Removed command logging from
+	this central location and distributed it to all the command
+	modules, so that sensitive information (passwords) can be sensibly
+	omitted.
+
+	* commands/checkvpw.cc (strcasestr): Fixed bug that failed to
+	match 'needle' in the 'haystack' if the occurrence of 'needle' was
+	followed by non-nul characters.
+
+	* commands/vdeliver.cc (main): Now reports error messages to
+	stdout, so that bounce messages will contain some description of
+	what goes wrong.
+
+	* commands/checkvpw.cc (main): Fixed bug in setting maildir for
+	virtual users: argument maildirarg+1 was being set, but maildirarg
+	is already incremented.
+
+1998-02-19  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/qmail.cc (find_virtual): Converted to fstream I/O.
+
+	* lib/pwentry_putpw.cc (putpw): Converted to fstream I/O.
+
+	* lib/pwentry_getpw.cc (getpw_byname): Converted to fstream I/O.
+
+	* lib/pwentry_delpw.cc (delpw): Converted to fstream I/O.
+
+	* lib/passwdfn.cc: Removed a pile of unused code.
+
+	* lib/mystring.h (operator<<): Added this operator which provides
+	ostream support for class mystring.
+
+1998-02-18  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* After much thought and time spent developing the fdio classes, I
+	discovered that I was just re-developing the standard C++ iostream
+	classes.  So, all further I/O will be based on iostreams, and all
+	use of the fdio classes will be converted.
+
+	* vmailmgr.pod: Pulled this manual page, describing the general
+	overview of the vmailmgr package, from the vmailmgr.texi
+	file.  There is now no content in the vmailmgr.texi file, and it
+	is removed from the package.
+
+	* vdelalias.pod: Pulled this manual page for vdelalias.
+
+	* vaddalias.pod: Pulled this manual page for vaddalias.
+
+	* vdeluser.pod: Pulled this manual page for vdeluser.
+
+	* vadduser.pod: Pulled this manual page for vadduser.
+
+	* vpasswd.pod: Pulled this manual page for vpasswd.
+
+1998-02-17  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* checkvpw.pod: Pulled this manual page for checkvpw from
+	vmailmgr.texi.
+
+	* vmailmgrd.pod: Wrote this manual page for vmailmgrd.
+
+	* vdeliver.pod: Wrote this manual page for vdeliver and removed
+	the section for vmailmgr.texi pertaining to vdeliver.
+
+1998-02-16  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/lookup.cc (CMD(lookup)): Removed the code to check the
+	arguments.
+	(CMD(lookup)): Fixed a logic flaw that reported virtual users with
+	an erroneously empty destination field as valid users.
+
+	* daemon/check.cc (CMD(check)): Removed the code to check the
+	arguments.
+
+	* daemon/daemon.h (class command): The array of arguments is now
+	an array of pointers to mystring instead of an array of mystring's.
+
+	* daemon/dispatch.cc (dispatch_cmd): Added code to handle virtual
+	domain parsing and argument counting.
+
+	* daemon/command.cc (replace_first_two): Wrote this routine to
+	help consolidate the virtual-domain parsing routines into
+	dispatch_cmd.
+
+	* released version 0.69pre6
+
+	* daemon/main.cc (abortreq): Removed the abortreq/0 routine.
+
+	* commands/vadduser.cc: Adapted this program to use the fdio library.
+
+	* commands/vaddalias.cc (main): Adapted this program to use the
+	fdio library, and fixed the logic problem that prevented any alias
+	from being added.
+
+	* lib/pwentry_delpw.cc (delpw): Added this routine to delete a
+	password entry.
+
+	* lib/pwentry.h: turned the addpw/setpw macros into inline routines.
+
+	* commands/vdeluser.cc (main): Adapted this program to use the
+	vuser_deluser routine and fdio.
+
+	* commands/vdelalias.cc (main): Adapted this program to use the
+	vuser_delalias routine and fdio.
+
+	* lib/vuser_delalias.cc (vuser_delalias): Wrote this routine to
+	delete an alias.
+
+	* lib/vuser_deluser.cc (vuser_deluser): Adapted this routine from
+	vdeluser.cc to delete a user and its maildir.
+
+	* lib/vuser_add.cc (bad_chars): Added the directory separator
+	('/') to the list of bad characters.
+
+	* daemon/dispatch.cc (struct dispatch ): Started to add support
+	for a unified parameter decoder.
+
+	* lib/qmail.cc: Removed the 'dot_qmail_name' and 'valid_name'
+	routines, which are no longer necessary.
+
+1998-02-12  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/fdio_base.cc (fdstream): Remove the trigger character
+	argument to the constructors, set the trigger to '\n' if the file
+	descriptor is a tty.
+
+1998-02-11  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/fdio.h (class fdistream): Started writing the input class.
+
+	* daemon/main.cc (logcommand): Added a special case to blank out
+	the last argument (the password) for "check" commands.
+
+	* daemon/lookup.cc (lookup_maildir): Converted to use autodelete.
+
+	* daemon/main.cc (main): Added a handler for SIGHUP (currently
+	does nothing, will eventually signal to clear all cached tables).
+
+	* commands/checkvpw.cc (find_maildir): Fixed logic negation problem.
+	(main): Fixed problem in call to lookup_maildir (hostname/username
+	arguments were out of order).
+
+1998-02-10  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/checkvpw.cc (lookup_maildir): Wrote this routine to
+	explicitly lookup the maildir of a user.
+	(authenticate): Removed the code to parse the maildir field out of
+	the response message from "check".
+	(main): Recoded to find the maildir argument, use it as the
+	default maildir, and only replace that argument in the case of
+	authenticating a virtual user.
+
+	* daemon/lookup.cc (CMD): The main command now takes similar
+	arguments to all the other commands which handle virtual domains,
+	and returns either the "destination" field for a virtual user or
+	an empty string for a real user.
+
+	* daemon/check.cc (check): Removed the code to lookup the
+	maildir.  The check command no longer reports maildir
+	information.  This happens to make this routine a great deal
+	simpler.
+	(check): Use autodelete<T> for basepw and virtpw.
+	(CMD): Recoded the main command routine to check is_local before
+	find_virtual.
+
+	* lib/autodelete.h (class autodelete ): Wrote this (template)
+	class to automatically delete a pointer when it is goes out of
+	scope.
+
+	* lib/config.h: Added new define, DEFAULT_MAILDIR, that represents
+	the default maildir to use if none is given.
+
+1998-02-08  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.69pre5
+
+	* lib/fdio_out.cc (write): Handle unbuffered reads/writes.
+	(write): Corrected handling of triggerchar.
+
+	* lib/fdio.h (class fdstream): Add setbuffer and settrigger
+	methods to setup or reset the buffering and trigger characters.
+
+	* daemon/main.cc (msg): Rewrote these routines to use the new fdio
+	classes.
+
+	* lib/fdio_out.cc: Wrote this file, containing the output class
+	fdostream.
+
+	* lib/fdio_base.cc: Wrote this file, containing the base I/O class
+	fdstream.
+
+1998-02-07  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/pwentry_getpw.cc (getpw_byname): Fixed shadow password
+	support (password field is sp_pwdp, not spw_pwdp).
+
+	* lib/response_message.cc (codestr): Wrote this function that
+	returns a string version of the response code.
+
+	* daemon/main.cc (handle_connection): Modified to print out more
+	useful information for logging: request contents and responses.
+
+	* commands/vadduser.cc (add_user,add_alias): Check to make sure
+	the user or alias does not exist before adding it.
+
+	* commands/vaddalias.cc (main): Rewrote this program to use the
+	vuser_* routines.
+
+	* daemon/lookup.cc (lookup_maildir): Rewrote this function to use
+	vuser_lookup.
+
+	* lib/vuser_lookup.cc (vuser_lookup): Moved this function out of
+	daemon/lookup.cc.
+
+1998-02-06  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.69pre4
+	
+	* commands/vadduser.cc (add_user): Completed rewriting this
+	program to use the vuser_* routines.
+
+	* lib/pwentry_getpw.cc (getpw_byname): Added support for shadow
+	passwords (untested).
+
+	* lib/pwentry_setpw.cc (putpw): Fixed bug in string comparison:
+	when the name to add is longer than the name in the password file,
+	the extra characters are not compared.
+
+	* lib/vuser_add.cc (vuser_addalias): Wrote this routine, adds an
+	alias to a password file.
+	(vuser_add): Modified this routine to create a maildir only if the
+	maildir parameter is not empty.  Also, check if the name and
+	password contain invalid characters (currently only checks for ':'
+	and whitespace).
+
+	* commands/testclient.cc (main): Rewrote to use the new
+	response::message routine.
+
+	* lib/response_message.cc (message): Wrote this routine which
+	returns the msg field with a prefix tag corresponding to the code
+	field.
+
+	* lib/response.h (struct response): Added operator!, returns true
+	if the response is not ok.
+
+	* lib/vuser_add.cc (vuser_add): Added new vuser_add routine which
+	builds the vpwentry and passes it to the other vuser_add routine.
+
+1998-01-29  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/vuser_add.cc (vuser_add): Modified this routine to call
+	addpw instead of setpw.
+
+	* lib/pwentry.h: Renamed setpw to putpw and made two new macros,
+	setpw and addpw, that call it.
+
+	* lib/pwentry_setpw.cc (putpw): Added support to setpw to only add
+	(no overwrite) new entries, and renamed it to putpw.
+
+1998-01-28  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/vuser_add.cc (vuser_add): Moved part of adduser from
+	daemon/adduser.cc here, with the name vuser_add.
+
+	* daemon/chpass.cc (chpass): Rewrote to use the new saved_uidgid
+	class.
+
+	* commands/vpasswd.cc (main): Rewrote to use the new response
+	class.
+
+	* commands/vdeliver.cc (main): Rewrote to use the new response
+	class.
+
+	* commands/testclient.cc (main): Rewrote to use the new response
+	class.
+
+	* commands/checkvpw.cc (authenticate): Rewrote to use new response
+	class.
+
+	* lib/server.h: Removed the class server_response, which was
+	functionally identical to class response.
+
+	* lib/pwentry_getpw.cc (getpw_byname): Moved the implementation of
+	this routine into a separate file.
+
+	* lib/pwentry_setpw.cc (setpw): Moved the implementation of this
+	routine into a separate file.
+	(setpw_pass): Commented out this routine, for now.
+
+	* Moved pwcrypt.h, pwcrypt.cc, pwentry.h, pwentry.cc into lib.
+
+	* lib/response_write.cc (write): Moved the implementation of
+	response::write into this file.
+
+	* lib/response.h (struct response ): Moved this class from
+	daemon/daemon.h into this file, as I plan to use it in some
+	non-daemon applications.
+
+	* daemon/uidgid.h (class saved_uidgid): Moved the
+	push_uidgid/pop_uidgid behavior into this class, which allows me
+	to let C++ automatically "pop" the uid/gid state when a routine
+	exits.
+
+1998-01-27  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/vadduser.cc: Started modifying this program to call the
+	server.
+
+	* daemon/adduser.cc (adduser): Finished implementing this function.
+
+	* daemon/lookup.cc (lookup_maildir): Modified the lookup logic
+	such that an empty destination field is invalid.
+
+	* daemon/pwentry.cc (putpw): Fixed to add a newline at the end of
+	the entry.
+	(setpw): Fixed logic error with the final return code.
+
+	* daemon/pwcrypt.cc (encrypt): Wrote this routine which generates
+	a random salt and encrypts the password using this new random
+	salt.
+
+	* daemon/chpass.cc (chpass): Simplify matters by resetting the
+	password in the vpw structure and calling setpw instead of
+	setpw_pass.
+
+	* daemon/pwentry.cc: Moved the crypt_cmp routine into its own
+	file, pwcrypt.cc.
+
+1998-01-26  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/dispatch.cc (CMD(statall)): Wrote this routine to return
+	stats on all the routines in the dispatch table.
+
+	* daemon/adduser.cc (adduser): Started to write this module which
+	adds a virtual account to a domain.
+
+	* daemon/chpass.cc (chpass): modified to use the new userlookup
+	and pwentry functions.
+
+	* daemon/check.cc (check): modified to use the new userlookup.
+
+	* daemon/lookup.cc (userlookup): modified to get the virtual
+	password table entry if it exists, using the new pwentry
+	functions.
+	(lookup_maildir): modified to use the new pwentry functions.
+
+	* daemon/pwentry.cc (getpw_byname/2): Written, looks up a global
+	password entry.
+	(getpw_byname/3): Written, looks up a virtual password entry.
+	Note that the return value from all the 'getpw*' functions must be
+	deleted.
+	(setpw): Written, sets an entry in a virtual password file.
+	(setpw_pass): Written, sets the password in a virtual password
+	file.
+
+	* daemon/pwentry.h (struct pwentry, vpwentry): Wrote this header
+	to encapsulate global and virtual password file lookups.
+
+	* lib/passwdfn.cc: Commented out all the password file
+	manipulation functions.
+
+	* lib/passwdfn.h: Commented out all the password file manipulation
+	functions.
+
+1998-01-25  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/vdeliver.cc: Remove the duplicate definitions of
+	functions provided in the "stat_fns" header file.
+
+	* Changed the package's name to 'vmailmgr' (Virtual MAIL
+	ManaGeR).  It is quite readily apparent that this package has
+	evolved into something much larger than just a password checking
+	program.
+