2004-03-16 Bruce.Guenter.dyndns.org <bruce@lorien.untroubled.org>
- daemon/listdomain.cc: The code is internally NUL-terminated, so
don't add another NUL on output.
2004-03-15 Bruce.Guenter.dyndns.org <bruce@lorien.untroubled.org>
- cgi/vadduser.cc, cgi/vaddalias.cc: Fixed several one-off bugs.
- commands/vupgrade.cc (open_table): Fixed up the test to see if
the new vpwtable reader is valid.
- commands/dumpvuser.cc: Added new source.
- commands/vadduser.cc (add_alias), commands/vsetup.cc
(setup_alias): Make sure even aliases have a userdir set.
2002-05-03 Bruce Guenter <bruce@lorien.untroubled.org>
- commands/vadduser.cc: Fixed incorrect usage note for vaddalias.
- lib/config/Makefile.am (noinst_LIBRARIES): Fixed the use of
libstdc++ in showvconfig.
2001-03-07 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vcheckquota.cc: Fixed abbreviated error message.
- doc/FAQ.sgml: Added note regarding mixing system and virtual
accounts.
- Moved from old "cli" library to renamed "cli++" library.
2000-11-20 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- lib/vpwentry/to.cc (to_record): Fixed typo -- flags is now 5
bytes, not 3.
2000-10-30 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vdeliver.cc (cli_main): Make 99 return codes from
executed programs cause vdeliver to exit (with code 99) without
delivering the message.
- lib/misc/exec.cc (execute): Don't silently ignore the 99 error
code.
2000-10-27 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vchforwards.cc (cli_main): Fixed the same bug here as
for daemon/lookup.cc -- need to lookup users with nodefault set.
2000-10-25 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/commands.py (adduser): Added the new has_mailbox
parameter, defaulting to false.
- python/daemon.py (encode_str): Explicitly cast non-string
objects to string before encoding.
- daemon/adduser.cc (CMD(adduser3)): Renamed the file adduser2.cc
to adduser.cc; Renamed the adduser2 command to adduser3 to make
the additional argument explicit.
2000-10-13 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Most code was restructured to accomodate the below two changes.
- lib/vpwtable/vpwtable.h (class vpwtable_reader): Modified this
interface to return a vpwentry*.
- lib/vpwentry/vpwentry.h (struct vpwentry ): Modified this data
structure to rename "mailbox" to "directory", and add a
"has_mailbox" flag. Also made the default constructor and
set_defaults protected.
2000-10-10 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/stat.cc: Added a rewritten version of this support from
Eugene Miretskiy to retrieve statistics about a maildir.
2000-10-07 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vpasswd2db.cc: Converted to use new vpwtable_writer
interface.
- lib/vpwtable/vpwtable.h: Added new vpwtable_writer interface.
2000-10-05 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/daemon.py (Daemon.read_response_noraise): Fixed a bug in
reading zero-length responses (like from listdomain) on certain
OSes.
2000-09-30 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Released version 0.96.9
- python/commands.py (adduser): Fixed a typo that prevents users
without a mailbox from being added.
2000-09-15 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- authenticate/authvlib.cc (check): Always set VUSER, even if
virtname is blank.
2000-09-14 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/main.cc: Exit immediately if a SIGPIPE or SIGALRM is
caught.
2000-09-12 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- pyadmin/vmailmgr_lib.py (Flag.html): Added this method to print
out a HTML select list with the correct item selected.
- pyadmin/vmailmgr_sessiond.py: New program set up to track
session status in memory instead of on disk.
- pyadmin/vmailmgr_pyadmin.py (cgi_main): Create a Context object
for passing in to format_page.
- pyadmin/vmailmgr_parser.py (Context): Defined this context
object that wraps context data. This will be extended to stack
contexts. When doing a __getitem__, if the key is not found in
the context dictionary, that key is evaluated as an expression
with the dictionary as local variables.
(Foreach.do_end): Pass the formatted sections to
stack.append_or_print instead of printing them directly.
2000-09-11 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Removed all old Python support code, replace by the new
"pyadmin" interface.
2000-09-05 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/dispatch.cc (dispatch_cmd): Don't add "-virtuser" to
baseuser name if virtuser is empty.
2000-09-04 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr_cgi.py.in (Session): Added prototype for new
class to manage session data.
- daemon/check.cc (CMD): Simplified the logic, elimited the return
value. Now returns either error or OK.
2000-09-01 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- doc/FAQ.sgml: Added section on long POP3 logins.
2000-08-22 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vdeliver.cc (deliver_partial): Fail permanently if: the
open failed, EDQUOT is defined, and the error number is EDQUOT.
2000-08-15 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/deluser.cc (CMD): Use new form of vdomain::deluser.
- lib/vpwtable/reader.cc (vpwtable_reader): Removed the call to
end here, which produced a missing reference to
vpwtable_reader::end.
2000-08-13 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/*.cc: Moved all the POD man page documentation into the
source files using a new CLI documentation generator.
2000-08-11 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vdeluser.cc: Added an option to prevent vdeluser from
deleting a user with a mailbox.
- lib/vdomain/deluser.cc (deluser): Added a flag to make deluser
not delete users with a mailbox.
- daemon/main.cc: Fixed up some of the cli_* values.
- doc/FAQ.sgml: Added note regarding difference between vmailmgr
and vpopmail.
- lib/vpwtable/gdbm_read.cc (class gdbm_vpwtable_reader): Added
this new subclass of vpwtable_reader.
- lib/vpwtable/cdb_read.cc (class cdb_vpwtable_reader): Added this
new subclass of vpwtable_reader.
- lib/vpwtable/vpwtable.h (class vpwtable_reader): Removed the
short-sighted conditional mess in this class with virtual methods.
2000-08-10 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Released version 0.96.8
- authenticate/authvlib.cc (set_user): Call pwentry::export_env
instead of doing it manually.
- lib/misc/pwentry_export_env.cc (export_env): Added this routine
to export USER and HOME for a real user.
- commands/vcheckquota.cc (link_softquota_message): Fixed bug in
multiple use of atoi.
- doc/HOWTO.sgml: Added a note on vsetup.
2000-08-04 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- doc/FAQ.sgml: Added notes on location of qmail-autoresponder and
the CVS repository.
- daemon/autoresponse.cc (autoresponse_read): If the normal
autoresponse file can't be read, try the disabled file.
(autoresponse_status): Added status command.
- commands/vcheckquota.cc (link_softquota_message): Added code to
symlink in warning message if softquota fails. This will link the
message in each time soft quota fails.
2000-08-03 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vdeliver.cc (cli_main): Make sure to rewind stdin
before executing vdeliver-postdeliver.
- daemon/lookup.cc: Rewritten to output the entire virtual user
data instead of just the mailbox and aliases.
- commands/vcheckquota.cc: Changed many instances of "int" to
"unsigned".
(check_quota): Always check incoming message size, and check max
count even if no quotas apply.
- lib/misc/exec.cc (execute_one): Fixed a bug where this would
return the raw status value instead of WEXITSTATUS(status).
2000-08-02 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/autoresponse.cc (autoresponse_write): Applied bugfix that
would allow disabled autoresponses to be written.
2000-08-01 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vcheckquota.cc (exit_msg): Fixed typo (used to say
"vdeliver:").
(cli_main): Fixed another typo -- VUSER_MAILDIR is not set, plain
MAILDIR is.
- authenticate/checkvpw.cc (main): Removed call to execute
checkvpw-postsetuid.
- authenticate/authvlib.cc (set_user): Added a hook to execute the
proper presetuid script.
(authenticate): Added a hook to execute the proper postsetuid
script.
2000-07-31 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/lookup.cc (lookup_and_validate): Set the "nodefault" flag
in vdomain::lookup to true instead of false -- it's never correct
to look up the default user in the daemon.
2000-07-18 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vcheckquota.cc: Added this new program, originally
authored by Eugene Miretskiy, and subsequently modified.
2000-07-17 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- doc/HOWTO.sgml, doc/FAQ.sgml: Updated documentation.
2000-07-05 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Released version 0.96.7.
- lib/vpwtable/cdb_read.cc: Added CDB support for the vpwtable
reader class.
- daemon/listdomain.cc (CMD_FD): Adjusted to use the new vpwtable
reader.
- commands/listvdomain.cc (cli_main): Adjusted to use new vpwtable
reader.
- lib/vpwtable/gdbm_read.cc (vpwtable_reader): Added this new
class to replace the stream reading support from the vpwtable
class.
2000-07-04 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- lib/vpwtable/gdbm_getbyname.cc (getbyname): Lowercase the name
before retrieving it.
- commands/listvdomain.cc (cli_main): Exit with error if listing
an individual user fails.
- lib/vpwtable/gdbm_get.cc (start): Fixed missing gdbm_firstkey.
- commands/vpasswd2db.cc: Added new utility to convert plain text
password tables into whatever vpwtable format was configured.
2000-06-25 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr.py.in: Added deluser and chattr commands.
2000-06-24 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- doc/configuration.texi (socket-file): Reinstated this config
section.
- daemon/autoresponse.cc (autoresponse_delete): Added a new
command to delete the autoresponse data.
- lib/misc/maildir.cc (delete_directory): Renamed from
delete_maildir.
- daemon/autoresponse.cc (autoresponse_write): Create the
autoresponse directory if it does not already exist.
2000-06-19 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- lib/vpwtable: Added GDBM support in the gdbm_*.cc files.
- lib/vpwtable/cdb_vpwtable.cc: Made the ".cdb" string a constant.
- lib/vpwtable: Renamed all the .cc files to "cdb_*.cc".
2000-06-14 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- doc/configuration.texi: Added notes on the autoresponse
configuration items, removed the notes on max-fork and
socket-file.
2000-06-13 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- daemon/main.cc (cli_main): Rewrote main to use the cli library.
This removes extra command line parsing code and incidentally
fixes a problem with random not being initialized.
- daemon/log.cc (log): Revised handling of printing PIDs.
- daemon/dispatch.cc: Removed "forkstat" command.
- daemon/main.cc: Removed support code needed to create and accept
connections on a UNIX domain socket, in favour of using the new
ucspi-unix package.
2000-06-01 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- Released version 0.96.6
- commands/vdeliver.cc (cli_main): Fixed typo in order of
operands in call to exit_msg.
- lib/misc/map_table.cc (map_table): Lower case all keys to allow
for case insensitive comparisons.
- lib/misc/lookup_domain.cc (find_virtual): Fixed bug: domain
names are not case sensitive.
2000-05-31 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr.py.in (VUser.from_binary): Fixed some bugs in
the conversion of flags.
2000-05-25 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr_cgi.py.in (print_html): Added code to print out
a HTML error if the requested file could not be printed.
(wrap_print): Print out basename+"-success" on success, and
provide a default error response if the error file does not
exist.
- daemon/daemon.h (CMD): Removed a bogus "const" from the
declarations of the CMD and CMD_FD macros.
- daemon/autoresponse.cc (CMD_FD): Added proper command logging to
this command.
(CMD_FD): Fixed type -- a virtual user's password is acceptable.
- daemon/log.cc: Added a new LOG_MESSAGE constant.
- doc/FAQ.sgml: Added a brief section on how to configure
qmail+patches for use with vmailmgr.
- doc/configuration.texi (qmail-root): Added this missing section.
2000-05-24 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr_cgi.py.in (cgi_main): Trap trying to run the
program outside of a CGI environment.
- python/vmailmgr.py.in (VUser): Added this class to represent the
data associated with a virtual user. A special __getitem__
routine allows the data to be read as a dictionary.
(Daemon): More code reorganization in this class.
(listdomain): Added this command, which returns a dictionary of
all the users in the domain.
(adduser): Added this command to add a virtual user.
(autoresponse): Added this command, which executes the daemon
"autoresponse" command.
- python/vmailmgr_cgi.py.in (wrap_print): Added this new routine,
which wraps a call to a vmailmgr command in a try/except block,
and prints an output file based on the results.
- Added SGML documentation from Dan Kuykendall.
2000-05-16 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- python/vmailmgr_cgi.py.in: Moved all the CGI specific
functionality into this new module.
- python/vmailmgr.py.in: Removed the "Response" class and turned
error responses into exceptions. The server socket is not closed
at the end of a command to allow a listdomain command to read more
data after the initial response.
2000-05-09 Bruce Guenter <bruce@bruce-guenter.dyndns.org>
- commands/vdeliver.cc (cli_main): Error exits from executing
"vdeliver-predeliver" would unconditionally result in a temporary
failure for qmail. Fixed to return the actual error number to
qmail.
2000-05-02 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- cgi/vchforwards.cc (CGI_MAIN ): Fixed an internal glitch -- the
new "do_enable" and "do_disable" internal variables were
duplicated.
- daemon/lookup.cc (lookup_and_validate): Modified to use the new
set_defaults method.
- commands/vchattr.cc: Make size limits refer to bytes.
- doc/configuration.texi: Indicate that size limits are in units
of bytes.
- commands/vadduser.cc: Make size limits refer to bytes
everywhere.
- commands/vsetup.cc (setup_alias): Modified to use the new
set_defaults method.
- commands/vpasswd2cdb.cc (getpw): Removed set_defaults call,
since from_record calls set_defaults after doing conversion from
the old format data.
- commands/vaddusers.cc (add_one): Modified to use the new
set_defaults method.
- lib/vpwentry/from_old.cc (from_old_record): Modified to use the
new set_defaults method.
- commands/vadduser.cc: Modified to use the new set_defaults
method.
- lib/vpwentry/defaults.cc (set_defaults): Add a flag to set the
creation time to either now (true) or 0 (false -- for old
records), as well as a flag to set the boolean flags.
- lib/misc/strtou.c: Use UINT_MAX instead of (unsigned)-1.
- lib/config/showvconfig.cc.in: Use UINT_MAX instead of
(unsigned)-1.
- lib/config/configrc.in: Use UINT_MAX instead of (unsigned)-1.
- lib/misc/lookup_domain.cc (find_virtual): Use UINT_MAX instead
of (unsigned)-1.
- lib/vpwentry/defaults.cc (set_defaults): Use UINT_MAX instead of
(unsigned)-1.
- lib/misc/utoa.cc (utoa): Use UINT_MAX instead of (unsigned)-1.
- lib/vpwentry/from_ver1.cc (from_ver1_record): Set the flags
before returning.
- lib/vpwentry/from_old.cc (from_old_record): Set the flags before
returning.
2000-04-19 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- doc/vchattr.pod: Added note regarding personal information.
- doc/vmailmgr-cgi.texi (Top): Added note regarding personal
information.
- commands/vchattr.cc: Allow changing the personal information.
- lib/vdomain/chattr.cc (chattr): Added code to handle changing
the personal information.
2000-04-18 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- doc/FAQ.texi (Does vmailmgr support IMAP?): Updated to describe
current status of IMAP support.
- daemon/dispatch.cc: Added autoresponse dispatch entry.
- daemon/autoresponse.cc: Added autoresponse command from Mike Bell.
2000-04-14 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- Modified the spec file to put the Courier IMAP module into a
seperate package.
- Copied the necessary sources from Courier IMAP to build a
minimal stand-alone libauthmod in order to build the
authentication module without needing the Courier IMAP sources.
2000-04-13 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- Released version 0.96.5
- doc/vchattr.pod: Wrote a man page for the vchattr command.
2000-04-12 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- commands/vdeliver.cc (cli_main): Check if the account has
expired before delivering.
- authenticate/authvlib.cc (check): Check if the acount has
expired and fail if so.
- lib/vpwentry/export_env.cc (export_env): Set
"VUSER_MAILBOX_ENABLED" to the new flag.
- authenticate/authvlib.cc (check): If looking up the base user
fails, and virtual_only is set, return instead of failing hard.
- daemon/chattr.cc (CMD): Allow mailbox enabled flag to be changed
by virtual users.
- commands/listvdomain.cc (show_user): Print out "(disabled)" next
to the mailbox directory if the "is_mailbox_enabled" flag is not
set.
- cgi/listvdomain.cc (show_user): Adapted to using
vpwentry::from_record instead of vpwentry::from_ver1_record.
- lib/vpwentry/vpwentry.cc: Set the flag defaults here on creation
instead of in set_defaults.
- lib/vdomain/chattr.cc (chattr): Modified to use the new vpwentry
is_mailbox_enabled flag.
- lib/vpwentry/from_ver1.cc (from_ver1_record): Made this a
protected non-static method.
- lib/vpwentry/from_ver2.cc (from_ver2_record): Made this a
protected non-static method.
- lib/vpwentry/from_old.cc (from_old_record): Made this a
protected non-static method.
- lib/vpwentry/from.cc (from_record): Made this a non-static method.
- lib/vpwentry/decode.cc: Moved the common pieces from from_ver1
and from_ver2 into seperate routines and moved them here.
- lib/vpwentry/from_ver2.cc (from_ver2_record): Added this routine
to do conversions from the new binary record format.
- lib/vpwentry/to.cc (to_record): Modified to create the new
binary record format.
- lib/vpwentry/from_uint.cc (from_uint): Moved this routine out of
from_ver1.cc, as it's common to both ver1 and ver2 (and other)
records.
- lib/vdomain/chattr.cc: Returned the extraneous definition of
strtou from here.
- lib/config/read_uns.cc (read_uns): Coded to use our strtou.
- lib/misc/strtou.c (strtou): Renamed the C++ source to a C
source, and added a header file. Added a null-pointer and leading
space check.
- lib/vpwentry/vpwentry.h (struct vpwentry ): Removed the
enable/disable routines and added a "is_mailbox_enabled" boolean
flag.
2000-04-11 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- cgi/vadduser.cc (CGI_MAIN ): Added code to handle adding
forwarding at the same time as the user.
- lib/misc/lookup_baseuser.cc (lookup_baseuser): Modified to use
mystring::left instead of a hacked-up constructor call.
- cgi/vchforwards.cc (CGI_MAIN ): Added code here to handle
enabling and disabling the mailbox.
- commands/vchattr.cc: Added handling in this code for the new
flag.
- lib/vdomain/chattr.cc (chenabled): Added this function to enable
or disable delivery to a virtual user.
- lib/vpwentry/is_enabled.cc (is_enabled): Modified this routine
to return false if no mailbox path is set.
- commands/vdeliver.cc (cli_main): Handle the "enabled" flag here
by not doing mailbox delivery if is_enabled returns false.
- lib/vpwentry/is_enabled.cc (is_enabled): Created this routine to
determine if the account has been disabled.
- lib/vpwentry/disable.cc: Created routines here to enable and
disable an account by removing and creating a "disabled" file in
the virtual user's mailbox directory.
- Released version 0.96.4
- lib/misc/exec.cc (presetenv): Changed this routine to allocate a
new string (char*) that it never frees. This seems to fix the
problems with garbage making its way into the environment.
2000-04-10 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- lib/vpwentry/export_env.cc (export_env): Moved the setenv
routine that exported a vpwentry to this method of vpwentry.
- lib/misc/exec.cc (presetenv): Renamed "setenv" to this, to
prevent confusion with any built-in "setenv" functions.
- authenticate/authvmailmgr.cc: Made the user name, pass phrase,
and domain name into globals, to prevent their memory from being
deallocated prematurely.
2000-04-09 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- doc/vmailmgr-cgi.texi: Adjusted this documentation to fit the
new CGIs.
- cgi/vaddalias.cc (CGI_MAIN ): Modified to handle a
comma-seperated list of destinations.
- cgi/vchforwards.cc: Renamed vchalias to this file, to match the
command-line program's name change.
(CGI_MAIN ): Modified to handle a comma-seperated list of destinations.
2000-04-07 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- Updates for new mystring and fdbuf libraries.
- commands/vsetup.cc: Added a "quiet" flag.
- commands/vpopbull.cc: Added a "quiet" flag.
- commands/vpasswds.cc: Added a "quiet" flag.
- commands/vpasswd2cdb.cc: Added a "quiet" flag.
- commands/vpasswd.cc: Added a "quiet" flag.
- commands/vdeluser.cc: Added a "quiet" flag.
- commands/vaddusers.cc: Added a "quiet" flag.
- commands/vdeliver.cc: Added a "quiet" flag.
- commands/vchforwards.cc: Added a "quiet" flag.
- commands/vchattr.cc: Added a "quiet" flag.
- commands/listvdomain.cc: Added a "quiet" flag.
- commands/vadduser.cc: Added a "quiet" flag.
- authenticate/authvlib.cc (check): make the virtual / non-virtual
decision here rather than in authenticate, in order to handle
"baseuser-virtuser" type usernames. This fixes the Courier-IMAP
auth module problems.
2000-04-06 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- doc/FAQ.texi (Upgrading from Previous Versions): Added this
section to answer questions regarding what needs to be done to
upgrade to the current version.
2000-04-05 Bruce Guenter <bguenter@daedalus.bfsmedia.com>
2000-04-04 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- doc/vmailmgr-cgi.texi (Top): Expanded the "vadduser" section to
explain the new optional "userdir" field.
- cgi/vadduser.cc (CGI_MAIN ): Modified to use the new adduser2
interface.
- cgi/vaddalias.cc (CGI_MAIN ): Modified to use the new adduser2
interface.
- daemon/dispatch.cc: Removed dispatch entries for adduser,
addalias, and addaliasp.
- daemon/adduser2.cc (CMD): Added this new command, which combines
the functionality of adduser, addalias, and addaliasp.
- daemon/addaliasp.cc (CMD): Modified to use build_forwards.
- daemon/addalias.cc (CMD): Modified to use build_forwards.
- daemon/adduser.cc (CMD): Only add non-empty forwarding addresses.
(build_forwards): Moved the forward-list building code common to
adduser, addalias, and addaliasp into this routine.
- daemon/main.cc (handle_connection): Log command response before
attempting to send data back to client.
(abortreq): Log abort code before closing FD.
(decode_data): Removed the test to check for empty parameters,
since some of the modules expect this possibility.
2000-04-03 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- authenticate/vauthenticate.cc (getdata): Buffer doesn't need to
be static.
- authenticate/checkvpw.cc (getdata): buffer doesn't need to be
static.
- lib/vpw/vpwtable.h (class vpwtable): Moved the vpwtable class
definition into this file.
2000-04-01 Bruce Guenter <bruceg@daedalus.bfsmedia.com>
- Released version 0.96.2
- daemon/state.cc: Since the daemon always forks, remove all of
the uid/gid saved state, and never restore it. This class should
be renamed, since it does not really "save" any significant state.
- commands/vaddalias: Fixed quoting bug in this script.
2000-03-21 Bruce Guenter <bruceg@daedalus.bfsmedia.com>
- authenticate/vauthenticate.cc (main): Authenticate as virtual
only, and print out the user data if authentication succeeds.
- authenticate/authvlib.cc (authenticate): Fixed typo declaring
"baseuser" twice, preventing authentication from working.
2000-03-07 Bruce Guenter <bruceg@daedalus.bfsmedia.com>
- authenticate/vauthenticate.cc: Added this simple module that
accepts domain name, user name, and pass phrase on stdin, and
exits successfully if they can be authenticated.
2000-02-12 Bruce Guenter <bruceg@daedalus.bfsmedia.com>
- commands/vaddalias: Made this mini-program into a shell script.
- daemon/chattr.cc (CMD): Translate multiple values into a single
NUL-delimited list.
- commands/vsetup.cc (cli_main): Added error messages if execution
of vsetup-pre or vsetup-post fails.
- Removed old php3 support and placed Mike Bell's PHP3 code in.
- Applied patches by Mike Bell to allow vsetup to run a command
before and after executing.
2000-02-03 Bruce Guenter <bruceg@daedalus.bfsmedia.com>
- doc/FAQ.texi: Fixed typo reversing virtuser and baseuser.
2000-01-12 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- authenticate/authvmailmgr.cc: Completed initial coding of this
module, still needs testing.
- authenticate/checkvpw.cc (fail): Removed unused string "r".
2000-01-05 Bruce Guenter <bguenter@bguenter.pointsnorth.com>
- authenticate/authvmailmgr.cc: Started authentication module for
Courier IMAP.
- authenticate/authvlib.cc: Moved some of the functions out of
checkvpw.cc and generalized them here.
- authenticate: Moved checkvpw directory here.
1999-10-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- checkvpw/checkvpw.cc (authenticate): Changed logic here to
assume a missing entry in both locals and virtualdomains is
intended to be local.
1999-10-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/*.cc: Modified to use new validate_forward.
- lib/misc/vdomain_chattr.cc (chdest): Modified to use new
validate_forward.
- lib/misc/vdomain_validate.cc (validate_forward): Renamed
validate_redirect to this, and removed the handling for a
comma-seperated list of addresses.
- commands/vchforwards.cc (cli_main): Added code to validate the
forwarding addresses.
- commands/vadduser.cc (make_user): Validate the forwarding
addresses before creating the user.
1999-10-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/chattr.cc (CMD): Changed call to strtol to strtoul.
- lib/config/read_uns.cc (read_uns): Modified this routine to
treat all negative numbers as -1, and changed the call from strtol
to strtoul.
1999-10-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/FAQ.texi: Updated the answers and added information about
how mail gets delivered.
- lib/misc/vdomain_add.cc: Removed both vdomain::addalias and
vdomain::adduser.
- commands/vsetup.cc (setup_alias): Removed the use of
vdomain::addalias.
- commands/vadduser.cc (add_alias): Removed the use of
vdomain::addalias.
- commands/vaddusers.cc (add_one): Removed the use of
vdomain::adduser and vdomain::addalias.
1999-10-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.96.1
- doc/vmailmgr-cgi.texi: Updated listvdomain documentation.
- cgi/listvdomain.cc (show_user): Merged show_mbox and show_alias
into this one routine.
(load_users): Fixed length of incoming code.
(show_user): Changed formatting of aliases.
1999-10-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/listvdomain.cc: Recoded to use modified listdomain protocol
interface.
- lib/misc/vdomain_add.cc (addalias, adduser): Call set_defaults
on new vpwentry.
- lib/misc/vpwentry_from_old.cc (from_old_record): Call
set_defaults on resulting vpwentry.
- commands/vadduser.cc (make_user): Call set_defaults on new
vpwentry.
- daemon/lookup.cc (lookup_and_validate): Call set_defaults on new
vpwentry.
- lib/misc/vpwentry.cc: Moved vpwentry::set_defaults into its own
module, and removed the call to set_defaults from the constructors.
- lib/misc/vpwentry_from.cc: Made the from_old_record and
from_ver1_record public, and moved them into their own modules.
- daemon/listdomain.cc (CMD_FD): Changed the protocol to strip the
count from the initial message, to output each entry as a seperate
response (with length and all), and to include full vpwentry
details in each entry rather than requiring seperate lookups.
1999-09-30 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.96
- checkvpw/checkvpw.cc (main): Removed extraneous ; causing bug.
- lib/misc/exec.cc (execute): Skip over directories with identical
parents, to prevent double execution.
- checkvpw/checkvpw.cc (check): Fixed inverted "nodefault" flag to
domain->lookup.
- lib/misc/vpwentry_from.cc (from_record): Turned the if/else
block into a switch statement.
- commands/vadduser.cc (set_defaults): Turn off creation of a
mailbox if the base command name is "vaddalias".
Also, use argv0base instead of "vadduser" for the command name.
- lib/misc/vpwentry_from.cc (from_ver1_record): Fixed bug in
importing version 1 records.
- commands/vdeliver.cc (dump): The input needs to be rewound here
the second time through, so rewind it always.
1999-09-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/listvdomain.cc (cli_main): Print out a banner before
the listing.
1999-09-27 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/configuration.texi: Updated the configuration documentation
to match current implementation aspects.
- lib/misc/exec.cc (execute): Changed behavior of execute to
execute the global before the local directories, and to abort on
any error, but translate 99 to 0 (no error).
1999-09-23 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/vaddalias.cc (CGI_MAIN ): Adjusted for changed parameter
ordering.
- daemon/log.cc: Added several password-obscuring constants,
rather than repeating them in each command.
- daemon/lookup.cc (CMD): Changed format of result.
- daemon/check.cc (CMD): Changed format of result to seperate
parts with a NUL.
- daemon/addalias.cc (CMD): Now takes multiple destinations.
- daemon/addaliasp.cc (CMD): Changed order of parameters to allow
for multiple destination parameters.
- daemon/log.cc (logcommand): Removed all varieties of this
function except the one that takes a single "command" argument.
- daemon/adduser.cc (CMD): Added handling for a list of forwards.
- daemon/dispatch.cc (dispatch_cmd): Changed handling of commands:
there is now a minimum and a maximum number of arguments, and the
"decode_virtual" is a manditory -- if set, the "baseuser-virtual"
format is not allowed. This means all the server commands now
require seperate domain name and virtual user name arguments (all
the CGIs do this anyways).
- daemon/check.cc (CMD): Added handling for mailbox and multiple
forwards of virtual users.
- daemon/dispatch.cc: Added check back into the list of commands.
- cgi/vcommand.py (main): Adapted to new interface.
- cgi/vmailmgr.py: Revised the interface to be somewhat more
object based, and tested minimally.
1999-09-22 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/listvdomain.cc (setup_format): Added handling for cell and
title prefix and suffix strings, as well as cell, paragraph, and
table alignment.
1999-09-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/vmailmgr.py: Split off most of the generic functionality
from vcommand.py into this module, completed base CGI
functionality.
1999-09-19 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/vcommand.py: Started this generic Python vmailmgr command
CGI.
1999-09-16 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vdeliver.cc (cli_main): Adapted to the new execution
framework.
- checkvpw/checkvpw.cc (check): Adapted to the new execution
framework.
- lib/misc/exec.cc (execute): Removed the old "exec" framework in
favour of this function, which traverses through the configuration
directories and tries to execute the named file.
- doc/vadduser.pod: Updated this documentation.
- commands/vadduser.cc: Added an option to not create a mailbox
for this user, allowing this program to be used in place of
vaddalias.
(add_user): Modified logic to optionally ask for a password.
- commands/vconf2dir: Fixed quoting when creating the new config
files, and removed the "set -x" flag at the top.
- commands/vchforwards.cc (cli_main): Adapted this program from
vchalias, and removed vchalias from the distribution.
- commands/vchattr.cc: Wrote this command to change a virtual
user or users' attributes.
1999-09-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- checkvpw/checkvpw.cc: Login failures cause execution of
"config/checkvpw-loginfail", and other failures cause execution of
"config/checkvpw-error", both with an error message in
$CHECKVPW_ERROR.
- commands/vdeliver.cc (deliver_partial): Rewrote loop so that
looping will always sleep. If the file creation failed, it would
previously loop immediately.
1999-09-14 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/FAQ.texi: Replaced references to vmailmgr.conf with
vmailmgr/
1999-09-11 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/vpopbull.pod: Wrote a man page for vpopbull.
1999-09-10 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_auth.cc (authenticate): Wrote this new
routine, to replace the use of crypt_cmp when authenticating
virtual users.
- lib/misc/pwentry_auth.cc (authenticate): Wrote this new routine,
to replace the use of crypt_cmp when authenticating users.
1999-09-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/listvdomain.cc: Added options to list only users, only
aliases, or selected names listed on the command line.
- lib/misc/vpwentry_from.cc (from_ver1_record): Fixed off-by-one
bug.
- lib/misc/vpwentry_to.cc (to_record): Fixed problem in creating
records without any forwarding addresses.
- commands/vadduser.cc: Commented out extra-data handling.
- lib/misc/exec.cc (setenv): Commented out
- lib/misc/vpwentry.h (struct vpwentry ): Commented out the extra
data string.
- cgi/vchattr.cc (CGI_MAIN ): Wrote this simple modification to
vchalias, which can change any attribute.
- daemon/chattr.cc (CMD): Convert the attr string to an integer
before running domain.chattr.
- lib/misc/vdomain_chattr.cc (chattr): Added attribute handlers
for message size/count and account expiry.
- lib/misc/vdomain.h (class vdomain): Changed attribute name
constants from strings to integers.
1999-08-23 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/configuration.texi (Search Order): Corrected a typo: the
local directory is named ".vmailmgr", not "vmailmgr".
1999-08-21 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vadduser.cc: Added hard/soft quota options, and a
password option for vaddalias.
- lib/misc/vpwentry.h (struct vpwentry ): Added hard/soft quota
values.
1999-08-18 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vpasswd.cc (cli_main): Modified to call
vdomain::chattr.
- commands/vpasswds.cc (change_one): Modified to call
vdomain::chattr.
- cgi/vchalias.cc (CGI_MAIN ): Use ATTR_DEST instead of a
hard-coded string.
- cgi/vpasswd.cc (CGI_MAIN ): Use ATTR_PASS instead of a
hard-coded string.
- daemon/chattr.cc (CMD): Modified to call vdomain::chattr.
1999-08-16 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vdomain_chattr.cc (chattr): Created this new routine to
generalize attribute modification.
1999-08-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/exec.cc (exec_list): Takes a strlist parameter instead
of a string.
- lib/misc/strlist.h (class strlist ): Removed the NUL constant.
- lib/misc/vpwentry.h (struct vpwentry ): Removed the NUL constant
in favour of the new one in mystring.
- lib/config/read_list.cc (read_list): Adapted to use
strlist::read instead of a custom list reading function.
1999-08-14 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/strlist.h (class keystrlist): Split off the
functionality to handle keyed strings ("key=value" format) into a
seperate class.
- lib/misc/vpwentry.h (struct vpwentry ): Adapted to using strlist
functions.
- lib/misc/strlist.h (class strlist ): Moved the string list
management into its own class.
- commands/vquota.cc: Started writing this quota management
utility.
- commands/vdeliver.cc (cli_main): Fixed invocation of exec*
functions.
- commands/vadduser.cc: Added code to set the default values of
the new data items, and to set them when creating the user.
- checkvpw/checkvpw.cc (main): Fixed invocation of exec*
functions.
1999-08-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/configuration.texi: Did some minor re-organization, and
added a higher level note regarding environment variables and
return codes for executed programs.
1999-08-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/exec.cc (setenv): Set environment variables for quota,
message size, message count, creation time, expiry time, personal
data, and all the extra data.
(exec_list): Changed interface to all the exec_* routines: the
error message string is passed as a parameter, and the return
value is the error return code or zero.
- lib/misc/vpwentry_from.cc (from_uint): Modified to accept "-*"
as the negative pattern.
- lib/misc/utoa.cc (utoa): Moved this routine into its own module.
1999-08-10 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/vpasswd.cc (CGI_MAIN ): Modified to call "chattr".
- cgi/vchalias.cc (CGI_MAIN ): Modified to call "chattr".
- daemon/dispatch.cc: Removed entries for chpass, chalias, and
delalias.
- daemon/chattr.cc (CMD): Merged the functions of chalias and
chpass into this new command.
- lib/misc/vdomain.h (class vdomain): Removed delalias command.
- lib/misc/vdomain_deluser.cc (deluser): Removed mailbox test to
see if the named entry was a "user".
- commands/vdeliver.cc (inject): Handle failure properly here.
1999-08-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vdeliver.cc (deliver_partial): Rewrote the delivery
mechanism to do partial file delivery.
(write_envelope): Rewrote the envelope handling code to use
mystring_iter (big simplification).
- commands/vconf2dir: Fixed non-portable increment statement.
- commands/vadduser.cc: Added options for the extra virtual user
data, but not the code to handle the options.
1999-08-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vpasswd2cdb.cc (getpw): Call vpwentry::from_record,
since the original text file format is compatible with its import
routine.
- lib/misc/vdomain_validate.cc (validate_redirect): Call exists
instead of lookup.
- lib/misc/vdomain_lookup.cc (exists): Wrote this routine to test
if a name exists in a virtual domain.
- lib/misc/vpwtable_exists.cc (exists): Added this routine to do a
simple check if a user exists, without doing any format
translations.
- lib/misc/vpwentry.h (class vpwtable): Turned the "cdb" pointer
into a void pointer to allow for easier extension to non-CDB
formats.
- lib/config/*: Added new default configuration items for the
quota and expiry items.
- lib/misc/vdomain_*.cc: Adpoted to the new vpwentry conventions.
- lib/misc/exec.cc (setenv): Always set MAILDIR to vpw->mailbox,
which will be empty for an alias user.
- lib/misc/vpwentry.cc (set_defaults): Added this new routine to
set the defaults on a vpwentry from the current configuration.
- lib/misc/vpwentry_from.cc (from_record): Moved this routine into
its own module, and added parsing for the new fields.
- lib/misc/vpwentry_to.cc (to_record): Moved this routine into its
own module.
- lib/misc/vpwentry.h (struct vpwentry ): Added new fixed fields
to the structure: personal, quota, msgsize, msgcount, ctime, and
expiry.
1999-08-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_getset.cc (get): Added this routine to get the
value of a data variable.
(set): Added this routine to add a variable to the data set,
replacing its value if it already exists.
- lib/misc/vpwentry.cc (to_record): Rewrote this routine to output
the new "version 1" record format.
- lib/misc/vpwentry.h (struct vpwentry ): Expanded this structure,
replacing the "dest" field with "mailbox" and "forwards" items,
and added a "datastr" field.
- lib/misc/vpwentry.cc (from_old_record): Adapted this code from
the old vpwentry::from_record routine.
- Released version 0.95
1999-08-06 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vpopbull.cc (scan_bulletins): Modified the logic here
to not fail if one of the bulletin scans fails.
- commands/vdeliver.cc (inject): Fixed missing argv[0] in call to
execl here.
1999-08-05 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vpopbull.cc: Moved this program into the commands
directory.
(scan_bulletins): Added specific information to error messages.
- lib/misc/exec.cc (setenv): Moved the common code to set up the
environment for virtual users into a common routine here from
checkvpw.cc and vdeliver.cc.
1999-08-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/configuration.texi: Added sections for the new execution
hooks.
- checkvpw/checkvpw.cc (check): Fixed this to set the VUSER
environment variable immediately after looking up the base user.
1999-08-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- checkvpw/checkvpw.cc (main): Modified to execute the contents of
checkvpw-postexec.
- lib/config/showvconfig.cc.in: Built this new program template to
show the config parameters.
- commands/vdeliver.cc (cli_main): Make vdeliver execute a list of
commands before and after doing the delivery. Will set $MAILDIR
and $VUSER.
- checkvpw/vpopbull.cc: Moved bulletins.cc into this file, built a
main routine, and added error logging.
- lib/misc/exec.cc (exec_list): Created this routine to execute a
list of commands, returning the first error as a string.
(exec_one): Created this routine to shell and execute a single
command using "/bin/sh -c '<command>'".
- checkvpw/checkvpw.cc: Added a hook to execute a list of programs
before and after running setuid. The "before" programs are read
from the global config to avoid security holes. $HOME and $USER
are set for both, and $MAILDIR and $VUSER are set for the "after"
programs.
1999-08-02 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.94
- daemon/dispatch.cc: Commented out the "stat" and "statall"
commands, that no longer do anything useful (the forking daemon
causes the statistics to be meaningless). Also removed the code
in "dispatch" to count invocations of a particular method.
- daemon/lookup.cc (lookup_and_validate): Fixed a false negation
in the logic when checking for an existing virtual user.
- lib/misc/maildir.cc (mkdirp): Fixed off-by-one bug in recursive
case.
- commands/vdeliver.cc: Fixed bug caused by assigning from an int
to a bool through a pointer (since bools are only a single byte).
- checkvpw/checkvpw.cc: Rewrote this code to do the password
checking directly without calling up to the daemon.
- daemon: moved lookup_baseuser into lib/misc, removed the call to
setup a saved_state from it, and adjusted all the calls to
lookup_baseuser in the daemon to fit.
1999-07-30 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vdeliver.cc: Moved this program from clients into
commands, and made it work the the CLI library.
(cli_main): Does a call to domain.lookup now instead of a server
call.
(read_me): Rewrote to use config->qmail_root() instead of a
hard-coded /var/qmail. This is the last place (verified with
grep) that has a hard-coded /var/qmail.
1999-07-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/config/config_read.cc (config_read): Fixed a typo: I had
typed '=' instead of '+' to create the full name.
1999-07-27 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/chpass.cc (CMD): Calls the vdomain::chpass routine
instead of doing it by hand through the vpwtable code.
- commands/vpasswd2cdb.cc (cli_main): Removed an extraneous call
to end_getpw.
- lib/misc/vpwentry.h (class vpwtable): Added this new
abstraction, a virtual password table, that contains all the
low-level table manipulation routines. All other code has been
adjusted to fit this model.
1999-07-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/lookup_domain.cc: Moved is_local and find_virtual into
this file from daemon/lookup.cc.
- daemon/lookup.cc (CMD): Converted to using vdomain::lookup.
- daemon/check.cc (CMD): Converted to using vdomain::lookup.
- lib/misc/vdomain_lookup.cc (lookup): Moved the daemon function
lookup_virtuser into this method.
- Inserted the latest cli library and adapted all the command line
programs to handle the changes.
- Inserted the latest mystring class and adapted all the code to
handle it.
- Rewrote the virtual user manipulation code from lib/misc/vuser*,
and moved it all into the vdomain class (was struct). Adjusted
all other references to use this new code.
1999-07-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.93
- daemon/adduser.cc (CMD): Prefix the user dir destination with
"./".
- lib/misc/vuser_set.cc (vuser_set): Allow leading '/' in
destination string, in addition to leading '.' and '&'.
1999-07-22 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vsetup.cc (setup_passwd): Modified to use the new
string iterator class.
- lib/misc/stringiter.h (class mystring_iter): Wrote this class to
provide an iterator over a newline (or NUL, even) seperated list
within a string.
1999-07-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vsetup.cc (setup_passwd): Changed the alias seperator
character from ',' to '\n'.
- lib/config/read_list.cc (read_list): Wrote this routine to read
a config item containing a list of values.
- lib/config/config_readlist.cc (config_readlist): Wrote this new
routine to read a list of values from a file, newline seperated.
1999-07-19 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/configuration.texi: Wrote this new document describing the
new configuration structure, adapted from the now obsolete
vmailmgr.conf.sample.
1999-07-18 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/config/read_*.cc: Moved the overhead for maintaining the
cache into these read functions instead of duplicating it in each
config variable function.
- lib/config/build-config.sh: Create a cache for each config
variable in order to eliminate duplicate readings of a single
variable.
- daemon/pwentry_table.cc (operator[]): Replaced the previous
implementation (a cache) with one that just calls getpwnam. This
avoids creating extra dynamic data in the form of many pwentry
structures.
- daemon/lookup.cc (lookup_baseuser): Removed an extraneous
re-creation of the pwentry returned from the pwentry_table.
- lib/config/read_*.cc: Removed the translation from '_' to '-'
for filenames from the code and moved it into the build-config.sh
script. This moves the constant conversion from run-time to
build-time.
- lib/config/configrc.cc (configuration): Made the constructor
take a pointer instead of a reference, which was probably the
saner thing to do from the start.
- lib/config/read_dir.cc (read_dir): Modified the logic here so
that the macros for creating the config reading routines can be
completely uniform.
- daemon/state.cc (saved_state): Since the saved state is never
un-saved, don't try to establish what the previous state is with
getuid and getegid.
- daemon/state.h: Turned the CHANGE_STATE macro into a no-op,
since the state is already saved when doing any lookup.
- daemon/lookup.cc (lookup_baseuser): Set up the saved state
immediately upon successfully doing a base user lookup.
- daemon/state.h (class saved_state): Removed the pwentry pointer
and made the domain a non-pointer as well.
1999-07-17 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/state.cc: Modified these routines to set up a pwentry
before setting up the vdomain, as well as properly restoring the
old config pointer.
- commands/*.cc: Replaced all instances of "domain->" with
"domain.", since "domain" is no longer a pointer.
- clients/vdeliver.cc (main): Modified to set up a pwentry before
setting up the vdomain.
- clients/checkvpw.cc (set_user): Modified to set up a pwentry
before setting up the vdomain.
- commands/vcommand.cc (go_home): Modified to create a global
pwentry named "user", and build the domain and config based on
that.
- lib/misc/vdomain.cc (vdomain): Modified the constructors to take
a pwentry parameter to build the domain config from.
- lib/misc/pwentry.cc: Moved this file here from daemon, added a
"config" structure entry, and added a default constructor.
(pwfile): Removed the pwfile_cache member, which was a kluge for
what I thought was a bug somewhere else.
1999-07-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Forwarded-ported envelope delivery re-write from 0.92.2 for
clients/vdeliver.cc.
1999-07-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/lookup.cc: Converted is_local and find_virtual to use the
qmail_root config item.
- Forwarded-ported logic fix from 0.92.1 for clients/vdeliver.cc.
- clients/vdeliver.cc (inject): Use the new qmail_root config item
to locate the qmail-queue binary.
1999-06-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/hash_table.h: Fixed a typo in the hash table prime list
(the last numbers were truncated).
1999-06-14 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/FAQ.texi: Added a "troubleshooting" section, to be filled in
as questions arrive.
1999-06-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Modified all the sources to use the new configuration class
members.
- commands/vcommand.cc (go_home): Initialize the password_file
global from config->password_file() here.
- lib/config/configrc.cc: Totally re-wrote the configuration
system to use a subdirectory style config, with individual files
containing the configuration values on their first line. The
configuration modules are also built by a script, and broken down
into individual object modules to reduce the size of programs that
don't use all the options.
1999-06-05 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/*.cc: Moved the calls to CHANGE_STATE to immediately
after validating the user, to allow the config set up by the
saved_state to be used immediately.
- clients/checkvpw.cc (set_user): Set up a vdomain here and set
the config to allow for locally-configured bulletin directories.
(main): Moved the call to set_user higher, to allow the config to
be used earlier to set the error maildir.
- clients/vdeliver.cc (main): Set up a vdomain and set the config
to its config, to load a local configuration when doing
deliveries.
- daemon/pwentry.cc: Removed the definitions for user_dir_rel and
user_dir_abs, since vdomain::userdir will do the job now (it seems
that user_dir_abs wasn't even used, too).
- daemon/state.cc: Moved the constructor and desctuctor for
saved_state into this object, and added a call to push a new
configuration if state was changed successfully.
- commands/vcommand.cc: Moved the go_home routine into here, and
added a global "domain" pointer that will point to the current
virtual domain.
(go_home): Push the domain config onto the config stack. Now all
the command programs will use a local configuration. This routine
will eventually be rewritten to handle multiple domains in the
same user.
- commands/vadduser.cc: Converted to using a vdomain object.
- Converted all instances of "config." to "config->" where
appropriate (the vdomain class has a non-pointer config member, so
it doesn't count).
- lib/misc/server.cc: Rewrote call and connect to take as a
parameter the socket filename to use. server_call::call has a
default argument now of config->socket_file to prevent having to
change any code, but this might disappear, too.
- lib/misc/configrc.cc: Turned the global 'config' item into a
pointer, to allow other code to essentially push down local
configurations onto it. Wrote config_push and config_pop to
assist with this.
- commands/vaddusers.cc (add_one): Make the alias name lower case
before using it, call vuser_adduser with the maildir argument set.
- lib/misc/vuser_add.cc (vuser_adduser): Modified this routine to
remove the call to userdir, forcing the maildir name to be created
at a higher level.
1999-06-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/configrc.cc (configuration): Eliminated the #defined
default constants, as they are used only once, and moved them
directly into the default configuration constructor.
- lib/misc/configrc.h (class configuration ): Added a "parent"
member item that points to the object from which the defaults for
this configuration was set (set to NULL in the default object).
- lib/misc/vdomain.cc: Created this construct to represent a
virtual domain. Copied the functionality from userdir.cc into
here (with the plan of removing userdir.cc in the future). This
will become the status-holder for multiple domains within a single
real user.
- lib/misc/configrc.cc (configuration): Added a new constructor
that copies the values from a set of defaults and reads in a
config file to override those defaults. To be used for local
configuration handling. Relegated the default constructor to only
setting the default values, and added a new global const object
config_defaults to hold these.
- commands/*: Added a call to go_home in every cli_main.
- commands/go_home.cc (go_home): Wrote this routine to chdir to
the user's HOME directory.
1999-06-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/listvdomain.cc (cli_main): I forgot to check the return
value of start_getpw here, leading to a core dump when the
password table can't be opened. Fixed.
1999-06-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vsetup.cc (setup_qmail_default): Changed the mode of
the created .qmail-default file to 0444 (minus umask) instead of
0666 to prevent qmail from complaining on systems where umask
defaults to 002 instead of 022, and to prevent inadvertent editing
of the .qmail-default file.
1999-05-30 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1999-05-28 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/vdeliver.cc: Rewrote the alias delivery routines to send
the email to qmail-queue instead of qmail-inject, since
qmail-inject will attempt to reformat the message.
1999-05-27 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/check.cc (CMD): Added a check to ensure that checking the
password for an alias fails.
- doc/*: Changed references from qcc.sk.ca to em.ca.
1999-05-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/addaliasp.cc (CMD): Added this new command to add an
alias with a password.
- doc/vmailmgr-cgi.texi: Updated the documentation for vaddalias.
Changed all instances of "necessary" to "required".
- cgi/vaddalias.cc (CGI_MAIN ): Now allows for an optional new
password field pair, and calls addaliasp if they are not empty.
- lib/misc/server.cc (server_call): Added a new server_call for 5
parameters.
- daemon/log.cc (logcommand): Added a new logcommand routine to
handle 5 parameters.
- daemon/dispatch.cc: Modified the dispatch entry for addalias.
- daemon/chpass.cc (CMD): Removed the custom password checking
since it is now merged into lookup_and_validate.
- daemon/chalias.cc (CMD): Call lookup_and_validate with the
"userpass" flag set to true to allow owners of virtual aliases set
up with a password to change their alias.
- daemon/lookup.cc (lookup_and_validate): Modified to optionally
do comparisons against the virtual user's password if the
comparison against the administrator's password fails. Removed
the allowance for empty passwords. Made all the password
mis-match messages the same. The admin password check is done
before the virtual user check to avoid giving away information
about virtual users.
- commands/vaddalias.cc (cli_main): Set passwords on aliases by
passing in a '-p' or '--password' flag.
- lib/misc/vuser_add.cc (vuser_addalias): Modified to allow
passwords on aliases.
1999-05-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1999-05-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/chalias.cc (CMD): Bug fix: was passing "false" for
"mustexist" to lookup_and_validate, when it should have been
"true".
- commands/vdelalias.cc, commands/vdeluser.cc,
commands/vaddusers.cc, commands/vaddalias.cc,
commands/vpasswds.cc, commands/vchalias.cc: Added a mechanism to
count and report the number of errors encountered.
- doc/vmailmgr-cgi.texi: Added a chapter for the chalias command.
Also added sections for vdelalias and vdeluser, as well as sorting
the sections into alphabetical order.
- cgi/vchalias.cc: Wrote the CGI program to call the chalias
command.
- doc/vchalias.pod: Wrote the documentation page for the vchalias
command.
1999-05-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/configrc.cc (DEFAULT_DEFAULT_USERNAME): Changed the
default default username from '*' to '+', to avoid shell
screwups. Updated documentation.
1999-05-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/checkvpw.pod: Fixed filename glitch -- replaced all
instances of virtualhosts with virtualdomains.
1999-05-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_putpw.cc (putpw): Changed logic of "onlyadd"
parameter. If set, will fail if the name already existed. If not
set, will fail if the name did not already exist.
- daemon/dispatch.cc: Added a dispatch entry for chalias.
- daemon/chalias.cc (CMD): Created this server command to change
an existing alias to a new destination, using the new vuser_set.
- daemon/adduser.cc (CMD): Changed to use vuser_set.
- daemon/addalias.cc (CMD): Changed to use vuser_set.
- lib/misc/vuser_add.cc: Changed to use vuser_set.
- commands/vadduser.cc (add_user): Changed to use vuser_set.
- lib/misc/vuser_set.cc (vuser_set): Renamed vuser_add to
vuser_set, and moved it into this file. vuser_set can be used to
change existing entries as well as to add new entries.
- commands/vrehash.cc (lock_dir): Set permissions on created CDB
file to 0600.
- commands/vpasswd2cdb.cc (cli_main): Set permissions on created
CDB file to 0600.
- lib/misc/vpwentry_putpw.cc (putpw): Set permissions on created
CDB file to 0600.
- lib/misc/vpwentry_delpw.cc (delpw): Set permissions on created
CDB file to 0600.
- clients/vdeliver.cc: Changed all I/O to use fdbuf primitives.
(deliver): Changed permissions on created file to 0666 to 0600
(mail should be private).
1999-04-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1999-04-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/userdir.cc (userdir): Use the multiple-argument
mystring constructor to make pasting the slices together more
efficient.
- daemon/main.cc: Added include of <stdio.h> to pull in perror
properly.
1999-04-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1999-04-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_putpw.cc: Removed include of errnos.h
- lib/misc/md5-crypt.c: Added definitions for MIN and MAX if they
aren't defined.
1999-04-05 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/vmailmgr.conf.sample: Removed the entry for
cdb-password-file, as that variable is not used.
1999-04-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.90
- doc/FAQ.texi: Noted that the C++ libraries are no longer
needed.
- clients/bulletins.cc (stat_maildir): Fixed two bugs: timestamp
file was named "maildir/cur/.timestamp" instead of just
"maildir/.timestamp"; timestamp file was opened for writing
without a mode, causing the resulting file to have an
indeterminate mode.
- doc/FAQ.texi: Added an answer regarding IMAP support.
1999-04-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (handle_connection): Only print out the "Accepted
connection" message if the verbose flag is set.
1999-04-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/md5-crypt.c (md5_crypt_r): This routine depended on the
result of "strncpy" pointing to the end of the destination
string. This is non-standard behavior. Fixed such that the "cp"
pointer tracks its position manually.
- cgi/listvdomain.cc: Converted to fdbuf.
- daemon/main.cc (usage): Converted to fdbuf.
- daemon/log.cc: Converted to fdbuf.
- daemon/map_table.cc (map_table): Converted to fdbuf.
- daemon/list_table.cc (list_table): Converted to fdbuf.
- commands/*: Converted from iostream to fdbuf.
- lib/cli/main.cc: Use the new "operator<<" methods of fdobuf.
- lib/misc/validate.cc (validate_redirect): Converted from using
ostrstream to mystring for growing error messages.
- lib/misc/configrc.cc (read_config): Use the new "operator<<"
methods of fdobuf for writing messages.
- lib/misc/passwdfn.cc: Converted to using fdbuf objects.
1999-03-31 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/pwcrypt.cc: Adapted these routines to using the GNU MD5
library and the md5_crypt routine.
(crypt_cmp): Revised the algorithm here to use the old MD5 routine
only for old passcodes, md5_crypt for hashes starting with "$1$",
and crypt otherwise. This should be compatible with all
implementations.
- lib/misc/configrc.cc (read_config): Modified to use fdibuf
instead of ifstream.
(cmp): Fixed logic to properly parse "STR *= *STR" instead of
"STR *(=+ *)+STR".
- Changed the copying policy to GPL.
1999-03-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.89.1
- configure.in: Add a --enable-md5 flag to set USE_MD5.
- lib/misc/pwcrypt.cc: Imported implementation of crypt_cmp and
pwcrypt from 0.87, using USE_MD5 as a selector.
1999-03-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.89
- daemon/main.cc (handle_connection): Move the exit(0) out of the
if block so that the child always exits.
- daemon/fork.cc (do_fork): Bump up the fork counters in the child
as well as the parent so that the accounting commands work
properly.
- clients/bulletins.cc (stat_maildir): Fixed type: open the
timestamp file for output, not the maildir.
1999-03-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/bulletins.cc (stat_maildir): The timestamp on the "cur"
directory is unreliable. Create a zero-length ".timestamp" file
and use its modification mode for last-login information.
1999-03-18 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/listdomain.cc (CMD): Fixed a non-incrementing loop
counter.
- daemon/fork.cc (handle_children): Now checks for both pid == -1
and pid == 0 to terminate the wait loop.
- lib/misc/vpwentry_putpw.cc (putpw): If the input file does not
exist, skip the loop and add the record to a new output file.
- lib/cdb++/cdb_reader.cc (cdb_reader): Set the failed flag to the
result of opening the file.
- lib/misc/vpwentry_putpw.cc (putpw): Fixed inverted boolean bug.
- daemon/lookup.cc (lookup_baseuser): Fixed bug: the pwentry
pointer returned by operator[] on the pwentry_table gets deleted
when the pwentry_table goes out of scope (and all kinds of weird
things happen to the data).
- daemon/pwentry.cc (pwfile): Cache the value of pwfile for future
calls.
- daemon/lookup.cc (lookup_baseuser): Use "right" instead of the
silly pointer increment logic to get the virtual name substring.
1999-03-17 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/dispatch.cc (dispatch_cmd): Remove all fork handling from
this routine.
- daemon/main.cc (handle_connection): Call do_fork immediately
after accepting the connection.
1999-03-16 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vsetup.cc (setup_qmail_default): Set the initial value
of .qmail-default to "|@BINDIR@/vdeliver".
- commands/vrehash.cc: Rewrote to use CDB functions.
- daemon/listdomain.cc (CMD): Send output to 'fd' instead of
hard-coded file descriptor 2.
- daemon/dispatch.cc (dispatch_cmd): Pass the file descriptor to
the dispatched function.
- daemon/main.cc (handle_connection): Modified logic to better
suit the always-fork mentality.
- daemon/dispatch.cc (dispatch_cmd): Changed logic to always
fork.
- At this point, all cache support in vmailmgrd has been removed,
and all virtual password table functions will read CDBs.
- daemon/lookup.cc: Converted the functions here to using the
tables instead of the caches.
- daemon/pwentry_table.cc (pwentry_table): Converted the
implementation of pwentry_reader into this class.
- daemon/hash_table.h (class hash_table): Fixed a long-standing
const method issue.
- daemon/list_table.cc (list_table): Converted the implementation
of list_reader into this class.
- daemon/map_table.cc (map_table): Converted the implementation of
map_reader into this class.
- daemon/listdomain.cc (CMD): Removed the use of the vpwentry
cache table.
- lib/misc/vpwentry_get.cc (rewind_getpw): Wrote this routine to
rewind an open cdb table witout re-opening it.
(getpw): Converted to using autodelete.
- daemon/chpass.cc (CMD): Removed the use of the vpwentry cache
table.
- daemon/lookup.cc (lookup_virtuser): Removed the use of the
vpwentry cache table.
- daemon/pwentry.h (struct pwentry): Removed the vpwtable entry.
1999-03-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_*.cc: Append ".cdb" to the filename for the
CDB file name.
- lib/misc/configrc.cc: Removed the cdb_password_file entry.
1999-03-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_putpw.cc (putpw): Converted to using CDB
functions.
- commands/passwd2cdb.cc (cli_main): Converted to use to_record.
- lib/misc/vpwentry.cc (to_record): Wrote this one-liner to build
a CDB record from the entry.
- lib/misc/vpwentry_delpw.cc (delpw): Converted to using CDB
functions.
- lib/misc/vpwentry_get.cc (start_getpw): Rewrote to use
vpwentry::from_record.
- lib/misc/vpwentry_getpw.cc (getpw_byname): Rewrote to use
vpwentry::from_record.
- lib/misc/vpwentry.cc (from_record): Wrote this routine to build
a vpwentry from a CDB record.
1999-03-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/misc/vpwentry_getpw.cc (getpw_byname): Converted to using
CDB functions.
- lib/misc/vpwentry_get.cc: Converted to using CDB functions.
- lib/misc/configrc.cc: Added support for configuring the CDB
password table name.
- commands/passwd2cdb.cc: Wrote this program to convert a standard
virtual password table into a CDB table. The initial record
format is identical to the old to reduce library conversion
issues.
- lib/misc/vpwentry_get.cc (start_getpw): This routine now returns
bool to indicate if the table was opened successfully.
- Major reorganization of the libraries and header files. All the
libraries are in subdirectories under "lib", and the headers under
"include" (with a pile of symlinks).
1999-03-11 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.88
- configure.in: Check for libinet and libsocket.
1999-03-10 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/vmailmgr-cgi.texi (Top): Removed warning about passwords
being limited to eight characters.
- commands/vpasswds.cc (change_one): Removed warning about
passwords being truncated to eight characters.
- lib/passwdfn.cc (getpasswd_interactive): Removed warning about
passwords being truncated to eight characters.
(getpasswd_stdin): Removed another eight character warning.
1999-03-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/pwcrypt.cc: Add a passcode type digit to the MD5 hashes on
output, and check for this digit on comparison to determine what
type of hashing to use.
1999-03-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/check.cc (CMD): Tidied up result string creation code.
- lib/vpwentry_getpw.cc (getpw_byname): Copied logic from getpw.
- lib/vpwentry_get.cc (getpw): Fixed minor logic flaws.
- lib-dbi/passcode.cc: Added a stub for MD5 authentication.
- daemon/chpass.cc (CMD): Use renamed pwcrypt.
- daemon/adduser.cc (CMD): Use renamed pwcrypt.
- commands/vadduser.cc (add_user): Use renamed pwcrypt.
- lib/vuser_add.cc (vuser_adduser): Use renamed pwcrypt.
- lib/vuser_chpass.cc (vuser_chpass): Use renamed pwcrypt.
- lib/pwcrypt.cc (crypt_cmp): Modified to automatically handle MD5
hashed passcodes.
Renamed encrypt to pwcrypt, which calls encrypt_md5 to produce MD5
hashed passcodes.
- Completed conversion of source packaging from custom makefiles
to automake.
1999-02-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.87
- Removed my kludged handling for building shared libraries. This
greatly simplifies the process of moving to both automake and
libtool. The executables are somewhat larger, but still come in
under about 25K each (on i386 Linux).
- clients/bulletins.cc (scan_bulletins): Skip scanning the local
bulletin directory if the user is non-virtual.
- clients/checkvpw.cc (struct user_data): Added a non_virtual flag
to this data, indicating that the user is not a virtual user.
(main): Pass the non_virtual flag into scan_bulletins.
- lib/ac-wait.h: Moved the #include ladder that is required to use
wait(2) functions here.
- lib/ac-dirent.h: Moved the #include ladder that is required to
use dirent functions here.
- lib/ac-time.h: Moved the #include ladder that is required to use
time functions here, and rewrote all the files that include either
<time.h> or <sys/time.h> to instead include "ac-time.h"
- commands/vpasswds.cc (cli_main): Removed call to srandom.
- commands/vpasswd.cc (cli_main): Removed call to srandom.
- commands/vaddusers.cc (cli_main): Removed call to srandom.
- commands/vadduser.cc (cli_main): Removed call to srandom.
- lib-cli/main.cc (main): Call srandom here to give all the CLI
programs a properly initialized random function automatically.
1999-02-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc: All signal handlers call signal to re-enable
signal handling on systems that reset signals.
- daemon/fork.cc (handle_children): Re-assert the SIGCHLD signal
handler after a signal is received, since some systems will reset
the behavior of signals after they've been received.
1999-02-22 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib-cgi/cgi-base.cc (main): Eliminated the timezone setup since
it is totally unnecessary.
1999-02-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib-dbi/user.h: Moved the password validation method out of the
ruser/vuser classes into struct passcode. This class may
eventually be split into multiple classes, one per passcode type.
1999-02-06 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.86
- clients/bulletins.cc: Changed logic in all routines to not fail
if an error occurrs.
(link_file): Fixed several logic flaws.
1999-01-30 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/bulletins.cc: Completed prototype code.
1999-01-28 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/bulletins.cc (scan_bulletins): Roughed-in bulletin
scanning support.
- clients/checkvpw.cc (main): Added call to scan bulletins.
- lib/configrc.h (class configuration ): Added variables to be
used to set up bulletin directories.
1999-01-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vadduser.cc: Modified to accept a "directory" argument
of where to put the user's mailbox.
1999-01-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Rewrote various sources to take advantage of new mystring
library constructor functions.
- Inserted revised mystring library.
1999-01-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.85
- daemon/vpwentry_cache.cc (dirname): Fixed stupid bug -- used
"right" instead of "left" to get the directory part of the
filename. This bug was introduced by the following change.
- All files: reworked code to remove cases where an automatic
conversion from type mystring to "const char*' was expected.
Instead, all the code uses the c_str() function in mystring.
- Added a note in the FAQ regarding the default username.
- lib-cli/main.cc: Rewrote the CLI library to remove dependance on
the GNU libiberty getopts.
1998-12-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/vdeliver.cc (main): Changed the default for adding the
leading "From " line to false.
- Released version 0.84
1998-12-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/response_read.cc (read): Removed the __GNUG__ cruft here
that was only really necessary to optimize on old "mystring" use
(and probably only added nearly useless complexity even then).
- lib/userdir.cc (userdir): Added a work-around for the apparent
egcs inlining bug to fix those core dumps when running vadduser
and friends. Using egcs -finline-functions causes them to core
dump, without inlining everything works OK.
1998-12-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vadduser.cc (cli_main): Fixed off-by-one error
introduced by the use of lib-cli.
1998-12-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- configure.in: Added a check to determine if the C++ compiler is
buggy and abort if so.
1998-12-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- configure.in: Modified the tests for -fno-exceptions and
-fno-rtti to actually run the C++ compiler and check its result.
1998-12-02 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/*.cc: Refitted all the command programs to use lib-cli.
1998-11-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vaddalias.cc: Refitted to use lib-cli.
- lib-cli/main.cc: Wrote a top-level command-line interface
helper, which handles automatic help-screen generation, short and
long argument parsing, and will eventually handle switching
between "standard" command use and server-call usages.
1998-11-28 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/listvdomain.cc: Wrote this program to list the contents
of a virtual domain.
- configure.in: Added a somewhat poor hack to handle support for
static vs shared libraries.
- lib/vpwentry_get.cc: added start_getpw, end_getpw, and getpw
routines.
1998-11-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc: Fixed handling of aborted and timed out
requests. A timed out request will result in two error messages,
one from the alarm, and one from the failed read.
1998-11-07 Bruce Guenter <bguenter@hal.qcc.sk.ca>
- Released version 0.83
- doc/vmailmgr-cgi.texi: Added a section to describe the use of
the listvdomain CGI.
- cgi/listvdomain.cc (show_dest): Split original show_user into
show_dest which calls show_mbox or show_alias.
(show_mbox): Modified output to show mailbox destination.
(CGI_MAIN ): Accepts form inputs mboxlink and aliaslink, which are
links inserted on each mailbox or alias name, with '%' replaced by
the mailbox or alias name.
1998-10-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (handle_connection): It appears that accept may
return with an error if a signal occurred while the accept was
being processed. So, loop around accept until a valid fd is
returned.
1998-10-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/cgi-*: Moved these files into lib-cgi.
1998-10-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- */*.cc, */*.h: Changed all remaining instances of "const
mystring&" to "mystring".
1998-09-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/server.cc, lib/response*.cc: Changed all instances of "const
mystring&" to "mystring".
- cgi/listvdomain.cc (CGI_MAIN ): Forgot to output a content type
before the HTML content. Fixed.
(show_domain): The user list is now sorted on output.
- lib/cgi-args.cc: Changed all instances of "const mystring&" to
"mystring".
- lib/cgi-base.cc: Exported content_type function.
Changed all instances of "const mystring&" to "mystring".
1998-09-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1998-09-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (exit_fn): Check the count of active forked
processes and sleep until they are all no longer active.
- daemon/daemon.h: Moved parts of this file into command.h and
log.h.
- daemon/*.cc: Replaced all instances of "cout" that produce log
messages with "log()" or "log(msg)".
- daemon/log.cc (log): Added new routine that prefixes log lines
with "[pid] " if the log is being output from a child process.
- cgi/listvdomain.cc (show_domain): Fixed loop logic to properly
truncate the buffer when repeating. Set up the output to display
a table instead of a list.
(show_user): Added this routine to output a single user, doing a
lookup to determine if the name is a mailbox or alias.
- daemon/dispatch.cc: Changed all the entries that would modify a
user to be "forked" methods.
1998-09-23 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/listdomain.cc (CMD): write_buf returns true on success,
not false. Fixed.
- lib/response_message.cc (message): Fixed a minor bug: the "msg"
portion of the response was treated as a NUL-terminated C string
instead of as binary data, causing potential truncation when used
with the listdomain facility.
1998-09-21 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/checkvpw.cc (authenticate): Modified to handle extra
maildir value in string, eliminating an extra lookup.
- daemon/check.cc (CMD): Modified return string to include a
maildir for virtual users.
- daemon/fork.cc: Removed all the code that dealt with process
slots to fix a race condition: the forked process could exit
before the parent registers it as a child, causing the active
process counts to become incorrect and eventually prevent any
further forks.
1998-09-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (handle_connection): Modified to use new fork
logic.
(usage): Added -v/-V option to usage message.
- daemon/dispatch.cc (dispatch_cmd): Fixed logic of "did_fork"
flag to become two flags: needs_write and needs_exit.
- daemon/main.cc (main): Removed use of atexit(exit_fn) to
automatically remove the socket file, since it must not be removed
when exiting from a forked routine.
- daemon/dispatch.cc (dispatch_cmd): dup2 returns -1, not
non-zero, on error. Fixed.
- doc/vmailmgr.pod: Added the full list of programs that are part
of this package to a "SEE ALSO" list.
1998-09-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/checkvpw.cc (main): Fixed design flaw in the "missing
maildir" design caused by setting the MAILDIR environment variable
before checking for the existance of the maildir.
(find_maildir): Changed search logic -- if no matching string is
found, indicate that the last argument is the "maildir" argument.
(main): Removed several redundant checks that were a result of the
above change.
1998-09-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/response_read.cc (read_response): Fixed the missing "break"
in the switch statement.
1998-09-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (handle_intr): Ignore PIPE signals while exiting,
as there is a potential for an infinite loop to occur if stdout is
a pipe that closes before this program exits.
1998-09-05 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/response_read.cc (receive_string): Moved this routine here
from lib/server.cc.
(read): Moved the former implementation of response::response(int)
into a static read_response routine, and renamed it response::read.
- lib/server.cc: Fixed several compile bugs.
- cgi/listvdomain.cc: Fixed compile bugs, still not tested.
1998-08-21 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/listvdomain.cc (CGI_MAIN ): Completed the preliminary
implementation of this CGI.
- lib/server.cc (call): Modified to use the new response
constructor to read the response from the client.
- lib/response.h (struct response): Added a constructor to read
the data from a file descriptor.
1998-08-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/lookup.cc (lookup_and_validate): Fixed the behavior when
the password table contains a "default" user, the requested user
does not exist, and the "mustexist" flag is set.
1998-07-31 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/listvdomain.cc: Started this CGI program to list the users
in a virtualdomain, using the new "listdomain" server function.
- lib/server.h (class server_call): Added a routine 'socket' to
return the open socket.
- lib/server.cc (call): Modified to record the file descriptor for
the connection and to close it when the server_call is destructed.
1998-07-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/dispatch.cc (dispatch_cmd): In the case of a forked
dispatch, move the output to fd #2 (usually stderr), to give it a
constant location.
- lib/response.h (struct response): Added the 'maxsize' constant
representing the maximum size of any one transmitted message.
- daemon/listdomain.cc (CMD(listdomain)): Completed implementation
of this command.
- daemon/lookup.cc: Moved the functions is_local and find_virtual
into this file from dispatch.cc.
1998-07-21 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/listdomain.cc (CMD(listdomain)): Started building this
routine to list the users in a virtual domain.
1998-07-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (parse_options): Added support for a "verbose"
flag.
- daemon/fork.cc (do_fork): Wrote this new routine to fork a new
process and record its pid in a table (if slots are available in
the table).
(handle_children): Wrote this new routine to handle any children
that were forked and have exited.
- daemon/main.cc (handle_connection): Added support for commands
that cause forked connections.
- lib/configrc.h (class configuration ): Added new configuration
variable "max_fork" -- the maximum number of forked processes to
handle.
- daemon/main.cc (handle_connection): Modified this routine to
simply close the socket fd and continue if the previous operation
forked (the other "half" of the fork will handle the output).
- daemon/dispatch.cc (struct dispatch ): Added a field to this
structure to indicate that the operation needs to fork.
1998-07-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.80
- clients/checkvpw.cc (getdata): Fixed a longstanding error in
setting the password/stamp fields. Fortunately, this error had no
impact at all on the data we use, but would have been immediately
visible if we were to try to use the timestamp.
- daemon/lookup.cc (lookup_virtuser): Added code to look up a
default user if the lookup of a named user fails.
- lib/configrc.h (class configuration ): Added a new configuration
variable "default_username".
- clients/vdeliver.cc (build_command): Fixed a bug that would
cause an infinite loop when delivering to multiple destinations.
(build_command): Moved the appending of the hostname from enqueue
into here, to allow it to be added on each recipient.
1998-06-17 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- doc/vrehash.pod: Started man page for vrehash.
- commands/vrehash.cc: Wrote this program to move all users
directories around into the proper hashed directory (see the man
page).
- commands/vpasswds.cc (change_one): Fixed incorrect status
message (was "vpasswd:" should be "vpasswds:").
1998-06-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/maildir.cc (make_maildir): Modified this routine to make all
the directories leading up to the named directory.
- lib/configrc.h (class configuration ): Added the fields
user_dir_bits and user_dir_slices to support userdir.
- lib/vuser_add.cc (vuser_add): Modified an error message to make
it more informative.
- daemon/pwentry.cc (user_dir_abs): Modified to use userdir.
(user_dir_rel): Modified to use userdir.
- lib/vuser_add.cc (vuser_adduser): Modified to use userdir.
- lib/userdir.cc (userdir): Wrote this routine, which produces a
relative user directory name, including a hashed-out path and
subdirectories, from a username.
1998-06-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/checkvpw.cc (main): Added a test to check if the user's
maildir exists and, if not, set the maildir to the configured
"error_maildir" string.
- daemon/main.cc (handle_intr): Fixed shutdown logic to handle
both cases: interrupted while handing a connection, or while
waiting for a connection.
- lib/configrc.h (class configuration ): Added new configuration
variable "error_maildir", which is a read-only maildir that
contains an error mail message.
1998-06-11 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/configrc.cc (configuration): Commented out the code to read
a local configuration file.
- lib/configrc.h: Moved the DEFAULT_* definitions out of here and
into configrc.cc again.
- Backed out all the vdomain and configuration patches, in order
to fix all the confusion I had been generating.
- daemon/main.cc (main): Changed the "interrupt" logic to exit
after the current request instead of potentially exiting during
the request (and leaving files in a indeterminate state).
1998-06-09 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/vdomain.h (struct vdomain): Added a "config" item to this
class.
1998-06-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/state.h (class saved_state): Added code to effectively
push/pop a local configuration when entering a saved_state.
- */*.cc: Changed the use of the "config" variable to account for
it being a pointer.
- commands/*.cc: Added the line "config = local_config();" to the
main routine before anything else is executed.
- lib/configrc.cc (local_config): Added this routine to create a
local configuration based on the given home directory.
- lib/configrc.h: Moved the DEFAULT_* definitions out of here and
into configrc.cc (the only place they are referenced).
Modified the constructors to support "stacking" of configurations.
Made the global "config" variable into a pointer to allow it to
change.
- daemon/vdomain.h (struct vdomain): Wrote this new structure to
encapsulate a virtual domain. These domains are stored in a hash
table "vdomains", indexed by base directory.
- daemon/chpass.cc, daemon/lookup.cc: Adjusted to use the new
vdomains global.
- daemon/pwentry.h (struct pwentry): Removed the vpwentry_cache
from this structure. This will eliminate the expensive lookups at
startup (the file "passwd" is looked up for each real user) and a
significant amount of memory overhead.
1998-06-05 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1998-06-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/passwdfn.cc: Got rid of __GLIBC__ ifdef for crypt.h
- lib/pwcrypt.cc: Got rid of __GLIBC__ ifdef for crypt.h
1998-05-31 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/configrc.h: Removed the comment regarding DO_SHADOW.
- daemon/pwentry_cache.cc: Modified the reader to make only a
single pass through the password and shadow password files.
- lib/configrc.h: Renamed lib/config.h to this to avoid name
conflicts with the autoconf/configure-generated config.h.
- various: Fixups mandated by the use of autoconf.
1998-05-29 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/dispatch.cc: Made the "echo" daemon command conditionally
compiled if TEST_DAEMON is defined.
- daemon/vpwentry_cache.cc: Added code to log when the virtual
password caches are loaded/reloaded.
- daemon/pwentry_cache.cc: Added code to log when the password
cache is loaded/reloaded.
- commands/vsetup.cc (setup_passwd): Modified to use the new
postmaster config variables.
- lib/config.cc (read_config): Changed the "postmaster"
configuration variable into "postmaster_email" and added
"postmaster_aliases".
1998-05-27 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.78
- lib/vpwentry_putpw.cc (putpw): Fixed logic to deal with an
existant but non-readable original password file.
- lib/vuser_add.cc (vuser_add): Changed the order of creating the
maildir and adding the user to the passwd file. This allows the
maildir to be erased if adding the user fails, since the newly
created maildir is guaranteed to be empty.
- lib/maildir.cc (make_maildir): Modified the code to remove any
newly-created directories if creation of any directory fails.
- lib/passwdfn.cc (getpasswd_stdin): Changed use of "gets" to
"cin.get".
1998-05-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vpasswd.cc (main): Changed the "fprintf" to use
IOStreams.
- lib/passwdfn.cc (getpasswd_*): Print a warning if the password
is longer than 8 characters.
- commands/vpasswds.cc: Wrote this new program to change the
passwords of a list of users. The input for this list is taken
from standard input and is of the form "name password". Anything
following the password is ignored.
- lib/config.cc: Added a new configuration item: postmaster.
- commands/vadduser.cc (main): Removed the call to setup.
- commands/vaddusers.cc (main): Removed the call to setup.
- commands/vsetup.cc: Wrote this program to set up a new virtual
domain with the proper ".qmail-default" file and a users
directory, along with some useful system aliases.
- daemon/vpwentry_cache.cc (write): Use "rename" system call.
- lib/vpwentry_putpw.cc (putpw): Use "rename" sytem call.
- lib/vpwentry_delpw.cc (delpw): Use "rename" system call instead
of "unlink/link/unlink" combination to guarantee atomicity of the
operation.
- commands/_setup.cc (setup): Moved this routine out of
vadduser.cc so that it could be shared with vaddusers.cc. It
should probably go into the shared library under a different
name.
- commands/vaddusers.cc: Wrote this new program that adds a list
of users. The input for this list is taken from standard input
and is of the form "name password [alias ...]".
- lib/vpwentry_putpw.cc (putpw): Fixed a bug in the logic that
prevented the temporary password file from being renamed to a
non-existant original file.
1998-05-25 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.77
- lib/vpwentry_putpw.cc (putpw): Fixed bug that would cause a
failed addition to leave behind a temporary file as well as merged
the case if the file does not already exist.
1998-05-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/pwentry_cache.cc: Fixed this code to deal with shadow
passwords. Thanks to Andrew Gillespie for the initial patch to
show the problems. The new code properly deals with caching both
the contents of /etc/shadow and /etc/passwd, as well as handling
the case where shadow passwords don't exist.
1998-05-22 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.76
- daemon/file_cache.h (write_file): Call force_valid to avoid
having to re-read the cached table immediately after having
written its contents. Do this _before_ unlocking the directory to
avoid a race condition.
- daemon/file_cache.cc (force_valid): Added this routine to force
the cache state to indicate that the file is valid (if the file is
present).
1998-05-15 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/dispatch.cc (find_virtual): Fixed bug preventing use of
wildcards in virtualdomains.
1998-05-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/vpwentry_cache.cc (write): Set the new file mode to 0600.
- lib/vpwentry_putpw.cc (putpw): Set the new file mode to 0600,
not 0700 (no execute bit).
1998-05-12 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/vpwentry_cache.cc (operator): Modified code to delete
entries that fail insertion into the table (ie duplicates).
- daemon/chpass.cc (CMD): Removed the calls to begin/end_modify.
- daemon/file_cache.h (file_cache_writer::write_file): Removed the
begin/end_modify routines and bundled them into this routine.
1998-05-11 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/vpwentry_cache.cc (unlock): Fixed bug in unlocking the
directory.
- daemon/chpass.cc (CMD): Modified to use the file cache to modify
the password table instead of the vuser_chpass routine.
1998-05-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.75
- daemon/main.cc (TIMEOUT): Changed the connection timeout to one
second, as values larger than that are useful only for debugging
the connection handling code.
- lib/vpwentry_putpw.cc (putpw): Modified to use '\n' instead of
the endl operator to mark line ends.
- lib/vpwentry_delpw.cc (delpw): Modified to use '\n' instead of
the endl operator to mark line ends (allows the output stream to
properly buffer writes).
1998-05-07 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- clients/checkvpw.cc, clients/vdeliver.cc: Moved these to files
from "commands" to the "clients" subdirectory
- daemon/pwentry_cache.cc (operator): Convert the user names to
lowercase before inserting.
- daemon/vpwentry_cache.cc (operator): Fixed bug: make the
virtual users' names lowercase before inserting into the table.
- daemon/check.cc (CMD): Fixed bug: initialize virtpw pointer.
- daemon/lookup.cc (lookup_maildir): Removed obsolete routine.
(CMD): Fixed bug: must initialize the pointers that previously
used autodelete.
- daemon/vpwentry_cache.cc (operator): Fixed a bug that caused the
password and destination strings to be both stored in the password
field.
- daemon/file_cache.cc (validate_cache): Check both the last
modification time on the file and the inode number to determine if
the file has changed.
- daemon/*.cc: Changed all variables of type "autodelete<vpwentry>"
back to type "vpwentry*".
- daemon/pwentry.cc: Removed the "getpw_byname" routine, now
obsoleted by the pwentry_cache.
- daemon/lookup.cc (lookup_virtuser): Modified to handle the new
vpwtable cache in the pwentry.
- daemon/pwentry.cc (pwentry): Initialize the vpwtable on
creation.
- daemon/pwentry.h (struct pwentry): Added a vpwentry_cache to
this object.
- daemon/vpwentry_cache.cc (write): Changed the end-of-line marker
from endl to "\n", as endl will cause the buffer to be flushed.
- daemon/main.cc (read_data): Removed support for protocol one
requests (which allows me to remove one more read syscall from the
fast path, shrinking it down to a total of two reads).
1998-05-06 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/main.cc (read_data): Modified to read messages using
either protocol one or two.
- lib/server.cc (build_msg): Modified to build messages using
protocol 2.
- daemon/qmail.*: Removed these obsolete source files.
- daemon/dispatch.cc (find_virtual): Wrote this routine that
mimics the old behavior of find_virtual from qmail.cc to find a
mapping from a virtual domain name to a prefix, using a map_cache
on control/virtualdomains.
- daemon/file_cache.h (class file_cache): Modified the behavior to
automatically load the cache on construction, instead of waiting.
- daemon/map_cache.h: Wrote the classes for map_cache, a generic
qmail-style map-file cache (the key and value pair is separated by
a colon, one per line).
- daemon/list_cache.h: Renamed locals_cache to list_cache, as a
generic list-file cache class.
- daemon/dispatch.cc (is_local): Fixed to check the cached result.
- daemon/file_cache.cc: Moved the actual code for file_cache_base
here.
- daemon/file_cache.h (class file_cache_base): Created this class
to contain the common code in the file_cache template.
- daemon/lookup.cc (lookup_baseuser): fixed the lookup to only
read the cached "pwentries" object once per invocation, and to
check the result.
- daemon/qmail.cc (is_local): Removed this routine, as its
functionality can be duplicated with a locals cache.
- daemon/locals_cache.cc: Wrote this object to cache the "locals"
table used by qmail to determine what domains are "local".
- daemon/qmail.cc: Moved this object here from lib.
- daemon/*.cc: Changed all variables of type "autodelete<pwentry>"
back to type "pwentry*", as the lookup functions that would set
these variables now return non-deletable references.
- daemon/lookup.cc: Modified the various lookup routines that look
up base users to use the pwentries cache.
- daemon/file_cache.h:
- daemon/hash_table.h:
- daemon/crc32.h:
- daemon/crc32.cc:
- daemon/crc_hash.h:
- daemon/pwentry_cache.cc:
- daemon/pwentry_cache.h:
- daemon/vpwentry_cache.cc:
- daemon/vpwentry_cache.h: Merged from temporary development
tree. Current functionality consists of a generic hash table,
mapping from mystring keys to generic objects; a file cache that
will automatically reload a cached object only when necessary; and
specific code for building caches of the base user password table
(pwentry_cache) and virtual password tables (vpwentry_cache).
- lib/vpwentry_putpw.cc (putpw): Now opens the temporary file with
"noreplace" to avoid races, and mode 0700.
- lib/vpwentry_delpw.cc (delpw): Now opens the temporary file with
"noreplace" to avoid races, and mode 0700.
1998-05-04 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/pwentry.*: Moved these files here from lib, as no other
module uses them.
- lib/pwentry.cc (getpw_byname): Moved this function here from
pwentry_getpw.cc.
- lib/vpwentry_delpw.cc: Renamed this file from pwentry_delpw.cc
- lib/vpwentry_putpw.cc: Renamed this file from pwentry_putpw.cc
- lib/vpwentry_getpw.cc: Added the getpw_byname function from
pwentry_getpw.cc.
- lib/pwentry_getpw.cc: Removed the vpwentry function.
1998-05-03 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/vuser.h: Only include "vpwentry.h", not "pwentry.h"
- lib/vpwentry.cc: Moved the vpwentry constructors and destructors
here.
- lib/pwentry.cc: Removed the vpwentry portions.
- lib/pwentry.h: Removed the portions that only deal with
vpwentry's.
- lib/vpwentry.h: Split the portions of pwentry.h that only deal
with vpwentry's into this file.
- spec: Forgot to add a call to "ldconfig" in %post.
1998-04-24 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
1998-04-23 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/chpass.cc (CMD): modified to use save_state.
- daemon/deluser.cc (CMD): modified to use save_state.
- daemon/delalias.cc (CMD): modified to use save_state.
- daemon/addalias.cc (CMD): modified to use save_state and
lookup_and_validate.
- daemon/adduser.cc (CMD): Modified to use save_state.
- daemon/state.h (class saved_state): Created this class from
saved_uidgid -- it also does a chdir to the user's home
directory. By doing so, it allows the use of relative paths as if
operating as the given user.
- daemon/lookup.cc (lookup_and_validate): Modified to optionally
create a new vpwentry if the named virtual shouldn't and doesn't
exist yet.
- daemon/adduser.cc (CMD): Modified to use lookup_and_validate and
pwentry::user_dir_rel.
- lib/pwentry.cc (user_dir_rel, user_dir_abs): Created these two
routines that return the relative (to home) and absolute directory
name of a new virtual user's directory according to the configured
user_dir parameter.
- commands/checkvpw.cc: Added function declarations missing on
Solaris.
- commands/vdeliver.cc: Added function declarations missing on
Solaris.
- lib/cgi-base.cc: Added function declarations missing on Solaris.
- commands/vpasswd.cc: Added function declarations missing on
Solaris.
- commands/vadduser.cc: Added function declarations missing on
Solaris.
- lib/pwcrypt.cc: Added function declarations missing on Solaris.
- daemon/dispatch.cc (dispatch_cmd): Add the domain name to the
error message for an invalid domain name, as the request won't
have been printed by the time this happens.
1998-04-21 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vadduser.cc (add_alias): Fixed bug: this routine
previously looked up the user name instead of the alias when
checking for the existance of the alias.
- lib/validate.cc (validate_field): Fixed bug: find_first returns
-1 if nothing is found, not zero.
- commands/vadduser.cc (add_alias): No longer necessary to add the
'&' prefix.
- commands/vaddalias.cc (main): No longer neccessary to add the
'&' prefix.
- lib/vuser_add.cc (vuser_addalias): Automatically prepend a '&'
to the destination.
- daemon/addalias.cc (CMD(addalias)): Call validate_redirect
before adding the alias.
1998-04-17 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vaddalias.cc (main): Removed the destination validation
code from this program and made it call validate_redirect.
- lib/validate.cc (validate_redirect): Created this routine to
validate a redirect destination.
1998-04-16 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/validate.cc (validate_username): Revised this to disallow
'/' in user names.
- vmailmgr.conf.sample: Added notes regarding which component(s)
uses each of the listed settings.
- lib/config.h: Removed the macro definitions that just served as
aliases for parts of the configuration class.
1998-04-14 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/lookup.cc: Removed the 'userlookup' routine.
- lib/maildir.cc (make_maildir): Moved this routine here from
vuser_add.
(delete_maildir): Moved this routine here from vuser_deluser,
renamed from deltree.
1998-04-13 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/vuser_add.cc (vuser_add): Use validate routines instead of
hard-coded checks.
(vuser_adduser): Renamed the simple vuser_add to vuser_adduser to
avoid confusion between the two vuser_add routines.
- lib/validate.cc (validate_username): Wrote this routine to
ensure that a username is valid; returns true if so.
- daemon/delalias.cc (CMD(delalias)): Switched from userlookup to
lookup_and_validate.
- daemon/addalias.cc (CMD(addalias)): Switched from userlookup to
lookup_{baseuser,virtuser}. Removed check for invalid alias name
(already done by vuser_addalias).
- daemon/deluser.cc (CMD(deluser)): Switched from userlookup to
lookup_and_validate.
- daemon/adduser.cc (CMD(adduser)): Switched from userlookup to
lookup_{baseuser,virtuser}. Removed check for invalid user name
(already done by vuser_add). Removed duplicated code from
vuser_adduser.
- daemon/check.cc (CMD(check)): Switched from userlookup to
lookup_{baseuser,virtuser}.
- daemon/chpass.cc (CMD(chpass)): Switched from userlookup to
lookup_and_validate.
- daemon/lookup.cc (lookup_and_validate): Wrote this routine,
which looks up base and virtual users and validates them,
replacing several lines of common code in many of the interfaces.
- commands/checkvpw.cc (main): Use the separators configuration
item instead of just '@'.
- lib/config.cc (read_config): Added a new configuration option,
"separators", which lists valid separators between the user name
and virtual domain name when logging in via checkvpw. Defaults to
"@:"
- lib/mystring.cc (find_first): Added this routine, finds the
first character that matches any one in a set.
- daemon/lookup.cc (userlookup): Split this function into its two
parts, lookup_baseuser and lookup_virtuser.
1998-04-11 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vaddalias.cc (main): Modified this code to handle (and
check) multiple recipients.
- commands/vdeliver.cc (enqueue): Split this routine into three
parts, and added the functionality to deal with multiple
recipients in a destination address (separated by commas).
1998-04-08 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- commands/vdeliver.cc (enqueue): Changed the calls to setenv to
equivalent calls to putenv, as some system's don't have setenv.
- commands/checkvpw.cc (set_environ): Changed the calls to setenv
to equivalent calls to putenv, as some system's don't have setenv.
1998-04-05 Bruce Guenter <bguenter@hal.qcc.sk.ca>
- Released version 0.73
- commands/vdeliver.cc (main): Fixed bug with handling of ??LINE
environment variables (local variables had erroneously overridden
previously global variables).
- vmailmgr-cgi.texi: Filled in the details for the form fields of
vpasswd.
- cgi/*.cc: Remove the "CGI_INPUT" lines for "vdomain" and
"password", as they are defined by the top-level CGI constructor.
- lib/cgi-base.cc (CGI): Add "vdomain" and "password" to the list
of fields that are automatically retrieved for all the CGIs, as
all CGIs will operate on a virtual domain, and all require a
password.
1998-04-02 Bruce Guenter <bguenter@hal.qcc.sk.ca>
- vmailmgr-cgi.texi: Started writing documentation on how to
configure the CGI programs.
1998-04-01 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- HOWTO.texi: Started writing instructions on how to do certain
tasks with vmailmgr.
1998-03-31 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/config.cc (read_config): Rewrote this routine to only go
through the file once (instead of once per variable), and to print
out errors on invalid lines.
1998-03-29 Bruce Guenter <bguenter@hal.qcc.sk.ca>
- various: Use pwentry::pwfile and pwentry::user_dir in place of
computing their values repeatedly.
- lib/pwentry.cc (pwentry::pwfile): Wrote this routine, returns
the password file name for the given base user.
(pwentry::user_dir): Returns the user directory for the given base
user.
- lib/config.cc (post_process): Wrote this routine to "tidy up"
some of the configuration strings, such as directories that should
always have a trailing slash ('/').
- lib/config.h: Change all the defined configuration macros
(except for DO_SHADOW) to their configuration variables.
- various: Treat the configuration defines as variables instead of
as constant strings.
- lib/config.cc (configuration): Initialize all the strings to
default values.
1998-03-28 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/config.cc: Started this module, which can read a
configuration file for default values at runtime. The default
configuration initialization will read both a global configuration
file and a local one.
1998-03-26 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- Released version 0.72
- commands/vdeliver.cc (main): Fixed the bug that caused empty
environment variables (valid) to be treated as non-existant
environment variables. This caused bounces to vdeliver to double
bounce.
- Released version 0.71
1998-03-22 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- cgi/*.cc: Use "msg", not "message()" from the response as the
error response message.
- lib/cgi-args.cc (get_parts): Strings weren't being terminated
properly before being set. Fixed.
1998-03-20 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- daemon/dispatch.cc: Added entries for deluser, delalias, and
addalias.
- daemon/delalias.cc (CMD(delalias)): Wrote this routine to delete
an alias.
- daemon/addalias.cc (CMD(addalias)): Wrote this routine to add an
alias.
- cgi: Merged in all the code and libraries for CGI programs into
the standard build. At this point, there is a basic framework
that all CGI programs will use, which includes a mechanism that
automatically pulls the inputs from a POST form, and a base class
that is executed on startup. The CGI module defines the routine
CGI_MAIN, which is executed by the program startup code. The CGI
module should call either error() or success() at the end of its
execution, which will handle printing out an appropriate message.
All of the v* programs (vpasswd, vadduser, vdeluser, vaddalias,
and vdelalias) have a CGI equivalent.
- daemon/deluser.cc (CMD(deluser)): Wrote this routine to delete a
user.
1998-03-19 Bruce Guenter <bguenter@mikhail.qcc.sk.ca>
- lib/server.cc: include un.h
- daemon/main.cc: include un.h
- lib/un.h: Wrote this header to define SUN_LEN and to include
necessary things for doing sockets.
- daemon/main.cc (make_socket): Split the code to create a socket
into this routine; fixed the permissions bug that caused the
socket to be created without other-write permission when launched
with a non-zero umask.
- Released version 0.70