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