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

