doc/ChangeLog-pre-vmailmgr
changeset 0 6f7a81934006
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/ChangeLog-pre-vmailmgr	Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,442 @@
+1998-01-25  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/vdeliver.cc (main): Added support for optionally adding
+	the From, Delivered-To:, and Return-Path: line to the start of the
+	output mail, either to a file or to qmail-inject (which omits the
+	From line).
+
+1998-01-24  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* commands/checkvpw.cc (authenticate): Revised the logic to only
+	validate the password if an 'ok' code is returned (was previously
+	the default case), and to indicate bad data otherwise.
+
+	* commands/testclient.cc (main): Added a case for the new econn
+	return code.
+
+	* daemon/lookup.cc (CMD(lookup)): Wrote this routine to lookup a
+	virtual user's delivery instructions.  Returns one of: &address,
+	&address@hostname, /full/path/to/maildir, or ./maildir
+
+	* daemon/dispatch.cc (CMD(stat)): Added a new field to the
+	dispatch table, count, which is used to count the number of times
+	that function has been invoked.  The new function, stat, can be
+	used to return this count on a per-function basis.
+
+	* commands/vdeliver.cc (main): If the call caused a connection
+	error, defer the message (return 111).
+
+	* lib/server.cc (call): Return 'econn' when either building the
+	connection, sending, or receiving data fails.
+
+	* lib/server.h (struct server_response): Added another error code
+	'econn', used to denote an error with the connection itself.
+
+	* lib/mystring.h (class mystring): Changed the 'nil' constant to
+	'const char*' type from 'mystring' type.  This avoids the need for
+	a special protected constructor just for this object, and more
+	accurately reflects its purpose as a placeholder buffer for empty
+	strings.
+	(operator!=): Revised this operation to test if the string to
+	which this is being compared is a NULL pointer.
+
+	* commands/vdeliver.cc: Wrote this program to be inserted in a
+	.qmail-default file, to serve as the delivery agent for all the
+	addresses.
+
+	* lib/mystring.cc (dup): Wrote dup/5 routine for combining 5
+	strings.
+
+1998-01-22  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* daemon/main.cc (main): Fixed bug in socket bind call to use
+	correct length value computed by SUN_LEN macro.  Still need to
+	actually allocate the memory for the sockaddr_un with malloc
+	instead of relying on the buffer for sun_path being long enough.
+
+	* lib/server.cc (connect): Fixed bug in socket connect call to use
+	correct length value computed by SUN_LEN macro.
+
+	* Released version 0.69pre1 pre-release.
+
+	* commands/checkvpw.cc: Moved the definitions of the FAIL_* macros
+	into this file from lib/debug.h
+
+	* daemon/check.cc (check): Fixed several logic bugs.
+
+	* src/checkvpw.cc (main): Rewrote this program to use the 'check'
+	feature of the daemon.
+
+	* daemon/main.cc (handle_connection): Print out a message when the
+	request completes as well as when it is started.
+
+	* daemon/chpass.cc: Fixed some one-off bugs in the command-line
+	handling.
+
+	* src/vpasswd.cc (main): Rewrote this program to be a simple
+	server call stub to the 'chpass' feature.
+
+	* checkvpw.texi: Started reorganizing this document for the
+	inclusion of documentation on the daemon program.
+
+	* lib/server.h (class server_call): Removed the 'msg' class -- it
+	was causing all sorts of headaches from memory deallocation, and
+	was originally implemented as a premature optimization.
+
+1998-01-21  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/debug.h: Added trace, traceptr, and tracestr functions, to
+	trace the flow of class methods.
+
+	* lib/mystring.cc: Introduced the "nil" string -- a constant
+	statically allocated empty string.  Duplicating an empty string or
+	a null pointer duplicates the pointer to this nil string, instead
+	of allocating more memory.  Freeing the nil string is not allowed.
+
+1998-01-18  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* Started rewriting the protocol used to communicate between the
+	client and server to be more efficient.  See doc/protocol.txt for
+	a very sketchy protocol definition.
+	
+	* daemon/check.cc (check): Wrote this routine to do password
+	checking, copied mostly from src/checkvpw.cc.
+
+	* src/testclient.cc: Wrote this program to serve as a test client
+	to the server, to test all the data paths through the client
+	library and the server functions without depending on the
+	implementation of the other programs.
+
+	* lib/server.h (class server_call): Wrote the classes in this file
+	and lib/server.cc to encapsulate a call to the server and its
+	response.
+
+1998-01-14  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* Started work on the checkvpw daemon -- a user-space server that
+	handles all the real functionality of all the other programs via a
+	UNIX domain socket.  It currently handles checking passwords (for
+	checkvpw) and changing passwords (for vpasswd).
+
+	* lib/mystring.cc (operator+): wrote a new copy of this that takes
+	a 'const char*' second parameter.
+	(*): Rewrote several of the routines that return a new mystring to
+	use the 'named return value' extension of gcc (if being compiled
+	under gcc).
+
+1998-01-13  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/mystring: Added or modified several routines that take
+	"const char*" instead of "const mystring&" as parameters, to
+	prevent the unnecessary spurious creation of temporary
+	mystring's.
+
+1998-01-11  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/passwdfn.cc (fsetpasswd): This new routine encrypts the
+	given password and sets it in the named password file.
+
+	* src/vpasswd.cc (main): Require that the new password is not the
+	same as the newly entered password.
+	(main): Use the newly written 'fssetpasswd' routine.
+
+	* lib/mystring.cc (append): Wrote this method to support string
+	concatenation using "+" and "+=" operators.
+
+	* lib/cgi-base.h (class CGI): Started this class to provide helper
+	functions for CGI applications.
+
+1998-01-10  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* lib/cgi-base.cc (main): Wrote this main routine of all CGI
+	programs; calls cgi_main with the CGI arguments as a parameter.
+	(main): Print an error message and don't call cgi_main if there
+	was an error fetching the CGI arguments.
+
+	* lib/cgi-base.h (class CGIArgs ): Wrote this class to encapsulate
+	the list of arguments or input items on a CGI form.
+
+	* lib/mystring.h (class mystring): Wrote a default constructor.
+	Wrote operator!, returns true if the string is empty.
+
+	* Reorganized the directory structure: generic library files are
+	in "lib", program sources are in "src", and CGI sources are in
+	"CGI".
+
+	* src/*.h: Prepended "CHECKVPW__" to the file identifier macro in
+	most of the header files
+
+1998-01-06  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* vpasswd.cc (main): Changed occurences of "passwd" to use the
+	PASSWORD_FILE define.
+
+1998-01-05  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* spec (Requires): checkvpw does not really "require" qmail, it's
+	just the only thing that currently uses it, so I removed this
+	requirement.
+
+	* released version 0.65-1
+
+	* Makefile: makefile included in the distributed sources does not
+	contain the sections specific to building the distribution.
+
+	* qmail.cc (find_virtual): fixed bug in search logic
+
+1998-01-03  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* mystring.cc (operator=): written
+
+	* checkvpw.texi (checkvpw): updated the documentation to reflect
+	the changes listed below.
+
+	* qmail.cc (find_virtual): modified the logic searching for a
+	virtual domain to match that of qmail -- wildcards in the
+	virtualdomains file are not automatic, but are represented by a
+	leading '.' in the host name.  The new search is also
+	non-recursive and only reads the virtualdomains file once.
+
+1998-01-02  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* checkvpw.cc (main): If the user name contains a '@' symbol,
+	treat the string following the '@' as the host name, and the
+	string preceding the '@' as the username within that host's
+	virtual domain.
+
+	* mystring.h (class mystring): modified the subst, lower, and
+	upper methods to return a new (modified) mystring instead of
+	modifying the current string.
+	(class mystring): wrote the 'left', 'right', and 'sub' methods,
+	which return portions of the string.
+	(class mystring): wrote the 'find' method, finds a single
+	character in the string
+
+	* Makefile: patched for glibc to automatically add the separate
+	"crypt" library to the link stage if it is detected in its
+	"normal" location (/usr/lib/libcrypt.*)
+
+1997-12-26  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* mystring.cc: recoded "dup" functions to handle NULL pointers as
+	empty strings
+
+1997-12-24  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* checkvpw.cc (main): Changed both the normal and the virtual
+	authentication case to call the same authentication routine.  This
+	allows a user to enter "userid-virtualuser" as a pop-3 username
+	that will access user "virtualuser" in the mail domain that
+	"userid" controls.
+
+Thu Nov 27 22:07:42 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* qmail.cc (find_virtual): moved into qmail.cc from checkvpw.cc
+
+Wed Nov 26 11:52:24 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.64-1
+
+	* vdeluser.cc (main): convert user names to lower case
+
+	* vdelalias.cc: removed routine dot_qmail_name (duplicates qmail.cc)
+
+	* vpasswd.cc (main): convert the user name to lower case
+
+	* vadduser.cc (set_password): convert the user name to lower case
+	(main): various conversions to ensure usernames are all lower case
+
+	* qmail.cc (dot_qmail_name): make the .qmail file name lowercase
+
+	* checkvpw.cc (struct auth_data): convert the name to lower case
+	on input
+
+	* mystring.cc (tolower,toupper): written, convert strings to all
+	upper or lower case
+
+Thu Nov 20 13:56:55 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.63-1
+
+	* vdeluser.cc (dot_qmail_rm): removed the code to strip trailing
+	whitespace -- the trailing \n is already in the search string
+	(dot_qmail_rm): provide more information on what files are being
+	removed
+	(main): fixed a bug that would cause mail directory for only the
+	first user named to be removed
+
+Tue Nov 18 12:32:47 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.62-1
+
+	* vdeluser.cc (dot_qmail_rm): added code to strip trailing
+	whitespace from the string returned by fgets
+
+	* passwdfn.cc (getpasswd_stdin): added code to strip trailing
+	whitespace from the string returned by fgets
+
+	* checkvpw.cc (auth_virtual): fixed a whole series of one-off bugs
+	that would cause authorization to fail in certain cases
+	(find_virtual_recurse): added code to strip trailing whitespace
+	from virtual prefixes
+
+Thu Nov 13 11:17:02 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* vadduser.cc (check_names): now checks for the existance of
+	.qmail files
+
+	* released version 0.61-1
+
+	* passwdfn.cc (getpasswd): split getpasswd() into two more
+	functions, getpasswd_stdin() and getpasswd_interactive(), to avoid
+	using the default mystring constructor
+
+	* mystring.h (class mystring): removed default constructor -- it
+	appears to have been causing segmentation faults
+
+Wed Nov 12 09:20:04 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* passwdfn.cc (getpasswd): fixed length of fgets from 8 to 9
+
+	* released version 0.60-1
+
+	* Updated the documentation to reflect the change in password
+	handling.
+
+	* mystring.h (class mystring): added a default constructor
+
+	* vpasswd.cc (main): changed to use getpasswd
+
+	* vadduser.cc (set_password): changed to use getpasswd
+
+	* passwdfn.cc (getpasswd): written, gets a password from the
+	user.  If stdin is a tty, then it uses the prompts and getpass()
+	function, otherwise it just reads the password with no prompts.
+
+	* released version 0.59-1
+
+	* vpasswd.cc (main): bugfix: manually duplicate all the fields of
+	pw into newpw, using strdup on strings.  This avoids future calls
+	to getpwent overwriting the existing data (the strings in the pw
+	structure are pointers to static data).
+
+Mon Sep 22 13:47:16 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.58-1
+
+	* qmail.cc: this file will include some QMail specific functions
+	(dot_qmail_name): moved into qmail.cc from vaddalias and vadduser
+
+	* vadduser.cc (main): make sure all names are valid
+
+	* vaddalias.cc (main): make sure the aliases are valid before
+	creating them
+
+Fri Sep 19 12:01:04 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.57-1
+
+	* checkvpw.texi: updated documentation for vaddalias and vdelalias
+
+	* vdelalias.cc: wrote vdelalias to delete aliases
+
+	* vaddalias.cc: wrote vaddalias to add a new alias to an existing
+	user
+
+	* stat_fns.h (is_file): added
+
+Thu Sep 18 09:05:46 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* tweaked root-level Makefile to clean up after building a
+	distribution
+
+	* released version 0.56-1
+
+	* stat_fns.h: written -- has some simple file testing routines
+
+	* mystring: added a 'length' member to the class to allow for
+	faster length calculations
+
+	* checkvpw.texi: updated the documentation for vdeluser
+
+	* spec: added vdeluser to list of programs
+
+	* vdeluser.cc: re-write vdeluser perl script as C++ to avoid any
+	dependancies on perl
+
+	* passwdfn.cc (fdelpwnam): wrote function to delete an entry
+
+	* checkvpw.cc (auth_virtual): use definition instead of "passwd"
+
+	* config.h: added definition for the temporary password file
+
+	* vadduser.cc (main): moved setting the password back up before
+	creating any of the rest of the account -- if a user mis-types a
+	password, none of the rest of the account will be created
+	accidentally.
+
+Wed Sep 17 10:02:58 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* vdeluser: wrote (as a perl script) to delete mail users
+
+	* released version 0.55-1
+
+	* checkvpw.texi: updated the documentation
+
+	* released version 0.54-2
+
+	* spec: added a %attr tag for the documentation files.
+
+Tue Sep 16 10:50:16 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.54-1
+
+	* checkvpw.cc (auth_virtual): make the maildir string point to a
+	subdirectory in USER_DIR
+
+	* vadduser.cc: user mail directories are now stored in USER_DIR
+
+	* config.h: created for global defines
+
+	* mystring.cc (subst): substitute all instances of the <from>
+	character with the <to> character (new)
+
+	* vadduser.cc (main): create symlinks to the master .qmail-<user>
+	file instead of creating multiple files for aliases
+
+	* released version 0.53-1
+
+	* passwdfn.cc (fsetpwnam): fixed a bug that prevented more than
+	one entry from being added to a password file
+
+	* vadduser.cc (main): changed the default UID and GID to add to
+	the password file to the current UID and GID
+
+Mon Sep 15 16:55:09 1997  Bruce Guenter  <bguenter@mikhail.qcc.sk.ca>
+
+	* released version 0.52-2
+
+	* modified file structure to move sources and documentation into
+	separate directories
+
+	* released version 0.52-1
+
+	* Changed program name to checkvpw.  I never did like the long
+	name...
+
+	* Added GNU COPYING file to package.
+	
+	* vadduser.cc (make_dot_qmail): checks for the .qmail-<ext> file
+	before creating one
+	(main): checks for the user in the password file before adding one
+
+	* passwdfn.cc (fsetpwnam): modified to create the file if it
+	doesn't exist
+
+	* released version 0.51-2
+
+	* added ChangeLog and TODO to spec file
+
+	* vpasswd.cc (main): vpasswd no longer requires that the
+	administrator types in the old password to change to a new one
+