$Log$
+ Revision 608.13 2003/07/30 03:47:53 ajc
+ * Eliminated the EXPI command
+ * Completed the configuration item of "purge hour"
+ * Auto-purger now runs as a scheduled job
+
+ Revision 608.12 2003/07/30 00:26:50 ajc
+ * Removed the "weekly" script and began installing a facility to allow
+ database maintenance to happen automatically. (One Step Install can't
+ require the sysadmin to know cron)
+
+ Revision 608.11 2003/07/28 04:17:24 ajc
+ * migratenet.c: removed. Adjusted Makefile.in accordingly.
+
+ Revision 608.10 2003/07/27 21:15:23 ajc
+ * Implemented all IMAP date-based search criteria. Note that Citadel does
+ not record an "internal date" of a message, so the "sent date" and "internal
+ date" searches perform identically.
+ * Date search comparisons available: "before," "on," or "on or after." Yet
+ another example of why Mark Crispin needs to be taken outside and shot.
+
+ Revision 608.9 2003/07/26 04:49:40 ajc
+ * Implemented a bunch of the IMAP SEARCH keywords
+
+ Revision 608.8 2003/07/26 04:28:44 ajc
+ * tools.c: added bmstrcasestr(), a Boyer-Moore, case-insensitive string search
+ * imap_search.c: implement BODY criterion in search command
+
+ Revision 608.7 2003/07/24 04:57:53 ajc
+ * Began implementation of the IMAP SEARCH command. Basically just got the
+ parser working and stubbed all the search criteria. Next step is to
+ implement the functionality of each criterion keyword.
+ * Implemented the functionality for the ALL (wow!) and UID criteria.
+ * Mark Crispin is an idiot.
+
+ Revision 608.6 2003/07/23 03:57:05 ajc
+ * Optimized the updating of visit records in several places by checking to
+ see if they've changed and aborting the db update if they haven't.
+ * Functions which read/write user records are now slightly faster due to
+ an improvement of the algorithm used to generate the database keys.
+
+ Revision 608.5 2003/07/22 03:07:50 nbryant
+ fix build for Solaris
+
+ Revision 608.4 2003/07/20 20:46:06 ajc
+ * build system: link Berkeley DB only to the server, not to the client & utils
+
+ Revision 608.3 2003/07/20 03:51:46 ajc
+ * setup.c: offer to disable sendmail, postfix, and qmail if found (only if
+ using the /etc/init.d type of startup scripts)
+
+ Revision 608.2 2003/07/20 03:08:22 ajc
+ * setup.c: offer to hack /etc/xinetd.d/telnet
+
+ Revision 608.1 2003/07/15 14:54:09 ajc
+ * Killed off CtdlGetDynamicSymbol() and just put all the symbols in server.h
+
+ Revision 608.0 2003/07/15 04:12:52 ajc
+ * THIS IS 6.08
+
+ Revision 607.23 2003/07/14 17:26:42 ajc
+ * strcpy() --> safestrncpy() in a few other random places
+
+ Revision 607.22 2003/07/14 17:12:28 ajc
+ * Replaced strcpy() with safestrcpy() in cmd_setp()
+
+ Revision 607.21 2003/07/14 03:07:05 ajc
+ * ipgm_secret is no longer set during setup. Now it is set at server startup
+ and automatically changes whenever an IPGM command is executed.
+ * Upon an IPGM authentication failure, wait 5 seconds before displaying an
+ error, then disconnect the session.
+
+ Revision 607.20 2003/07/13 04:58:35 ajc
+ * Allow connect on unix domain sockets to Citadels in other directories
+ * sendcommand now uses unix domain sockets instead of the network
+ * Do not allow IPGM command to run on the network -- unix domain sockets only
+
+ Revision 607.19 2003/07/11 22:33:02 ajc
+ * Ignore comments in public_clients file
+
+ Revision 607.18 2003/07/11 22:30:19 ajc
+ * Automatically add 127.0.0.1 and config.c_fqdn to public_clients
+
+ Revision 607.17 2003/07/11 22:19:49 ajc
+ * is_public_client() now caches the IP addresses of all hosts in
+ the public_clients file, at server startup and whenever the file is
+ modified. This eliminates the need to make lots of calls to the
+ resolver library every time.
+
+ Revision 607.16 2003/07/10 05:51:46 ajc
+ * Added cs_addr field to struct CitContext -- holds a dotted quad string
+ of the user's source IP (if applicable). It's big enough to hold other
+ types of address strings in the future (such as IPv6).
+ * locate_host() populates cs_addr when on a network connection.
+ * serv_smtp.c now saves the IP address in the proper place in
+ the Received: header.
+ * is_public_client() no longer accepts a hostname. It just looks at
+ CC->cs_host instead.
+
+ Revision 607.15 2003/06/29 19:54:39 ajc
+ * Renamed "struct user" to "struct ctdluser"
+ * Renamed "struct room" to "struct ctdlroom"
+
+ Revision 607.14 2003/06/29 04:13:32 ajc
+ * Renamed:
+ S_QUICKROOM to S_ROOMS
+ S_USERSUPP to S_USERS
+ CDB_QUICKROOM to CDB_ROOMS
+ CDB_USERSUPP to CDB_USERS
+
+ Revision 607.13 2003/06/29 04:07:11 ajc
+ * Globally renamed "struct quickroom" and "struct usersupp" to
+ "struct room" and "struct user".
+
+ Revision 607.12 2003/06/29 04:06:41 ajc
+ *** empty log message ***
+
+ Revision 607.11 2003/06/29 03:58:41 ajc
+ * Renamed fields in 'struct config' which are no longer relevant (but kept
+ them in place to avoid corrupting everyone's data files). Removed them
+ entirely from serv_vandelay.c.
+
+ Revision 607.10 2003/06/28 05:12:56 ajc
+ * Bump internal version number to 6.08
+ * Use (-1) instead of BBSUID as the uid of user records which exist only
+ in Citadel and not in the system password database. serv_upgrade also
+ changes this setting for ALL such users, the first time the server is run
+ after upgrading to 6.08
+
+ Revision 607.9 2003/06/27 22:19:31 error
+ * routines2.c: Quick and dirty fix for Mail> becoming new after entering a
+ mail message
+
+ Revision 607.8 2003/06/26 01:50:14 ajc
+ * Compiler warning fix for building setup without newt
+
+ Revision 607.7 2003/06/25 15:40:57 ajc
+ * setup now uses "newt" instead of "curses" to draw its pretty screens.
+ Changes were made to setup.c as well as all the autoconf stuff.
+
+ Revision 607.6 2003/06/25 02:40:05 ajc
+ * Per-user and global flags calling for validation need to be set in the
+ vCard upload thingie, not in the wrapper function that emulates the
+ deprecated REGI server command. Moved it to the correct place.
+
+ Revision 607.5 2003/06/22 20:49:31 error
+ * citadel.c: display idle times in wholist up to 999 days
+
+ Revision 607.4 2003/06/19 04:12:30 ajc
+ * domain.c: use qsort() to sort MX records by preference. Why have a
+ custom function when the operating system provides one for free?
+ * serv_smtp.c: accept mail from "<>" (empty sender). RFC1123 5.2.9 demands it.
+
+ Revision 607.3 2003/06/19 03:55:22 ajc
+ * Fixed a subtle but ugly bug in the SMTP sender that was causing it to
+ ignore all successful connections except the last one. Now when it gets
+ a connection it uses it.
+
+ Revision 607.2 2003/06/17 22:05:11 ajc
+ * New format for wholist.
+
+ Revision 607.1 2003/06/16 04:39:45 ajc
+ * support.c: removed an unused variable
+ * citadel.c: sort wholist by idle time (most recently active users first)
+
+ Revision 607.0 2003/06/10 04:15:39 ajc
+ * THIS IS 6.07
+
+ Revision 606.10 2003/06/04 21:46:13 error
+ * citadel.c: Added a missing #ifdef __CYGWIN__
+
+ Revision 606.9 2003/06/04 21:39:27 error
+ * Numerous fixups needed for Windows port:
+ * cmd_mesg() rewritten to use the stat() syscall to find files
+ * really_do_keepalive() does not try to send if we are not connected
+ * Misc. fixups; added Windows readme file
+
+ Revision 606.8 2003/06/04 21:30:39 error
+ * messages.c: When file attachment has no name, use message subject as name
+
+ Revision 606.7 2003/06/02 23:11:00 error
+ * Checkin installer script citadel.nsi for NSIS Windows installer
+
+ Revision 606.6 2003/06/02 03:01:22 ajc
+ * citserver.c: added another trace message to is_public_client(). Uncensored
+ has crashed twice in this function, for no apparent reason.
+ * internet_addressing.c: don't attempt to look up the specified Internet
+ address in a Citadel directory, if the supplied address has no hostname
+ portion. (Fixes a crash in the calendar service when alias() attempts to
+ look up potentially nonexistent attendees during event validation)
+
+ Revision 606.5 2003/05/28 03:08:38 ajc
+ * msgbase.c: validate_recipients() now rejects Internet addresses in
+ domains belonging to the local system or an attached Citadel network,
+ when it fails to translate to a Citadel address.
+
+ Revision 606.4 2003/05/26 05:36:25 ajc
+ * citadel.h: changed internal version number to 6.07
+ * file_ops.c: #include <ctype.h>
+ * migratenet.c: #include <ctype.h>
+
+ Revision 606.3 2003/05/26 05:30:18 ajc
+ * serv_calendar.c: fixed a bug in the "ICAL freebusy" subcommand which
+ caused it to always fetch the logged in user's freebusy times instead
+ of the user specified.
+
+ Revision 606.2 2003/05/22 13:34:30 ajc
+ * database_sleepycat.c: added a couple of diagnostic messages to help
+ troubleshoot problems with db-4.1.25 on Red Hat Linux 9
+ * room_ops.c: call mkdir() instead of system() to create a directory
+
+ Revision 606.1 2003/05/20 01:28:50 error
+ * citadel.c: don't truncate roomname when user is idle, in long who list;
+ display idle time in short who list
+
+ Revision 606.0 2003/05/16 15:17:11 ajc
+ * THIS IS 6.06
+
+ Revision 605.50 2003/05/16 14:59:08 ajc
+ * Removed the old rec_log() facility because the utilities which read its
+ data are crufty, disused, and produce incorrect output.
+ * Updated the documentation for the forthcoming 6.06 release.
+ * public_clients: removed hostnames which crept in from development servers
+
+ Revision 605.49 2003/05/16 04:07:37 nbryant
+ make configure.ac automagically do the right thing on redhat 9
+ remove crappy tolower() hack that was breaking the build on redhat 9
+ (because the kerberized openssl includes ctype.h)
+
+ before anyone yells at me, i did a little cvs archaeology on the tolower
+ thing, and it appears to have been in the Citadel source base since,
+ roughly, the Epoch. I doubt that the hack is needed any longer, and using
+ the OS's tolower() will handle extended charsets.
+
+ Anyone who is stupid enough to be using an OS with such a horribly broken
+ tolower() can just scratch their head and figure things out for
+ themselves. Citadel needs higher barriers to entry, there are too many
+ weirdos on the IGnet lately. :-)
+
+ Revision 605.48 2003/05/13 03:22:04 ajc
+ * Implemented the IMAP STARTTLS command as specified in RFC 2595.
+
+ Revision 605.47 2003/05/06 03:38:59 ajc
+ * IMAP folder create and rename commands -- don't allow backslashes in
+ folder names.
+
+ Revision 605.46 2003/05/03 16:50:52 ajc
+ * Change folder delimiter in room names from / to \
+
+ Revision 605.45 2003/05/02 04:02:47 ajc
+ * setup.c: allow specification of the Citadel system account by either
+ username or uid
+ * setup.c: tell init to re-read /etc/inittab by sending a SIGHUP to pid 1
+ instead of hunting around for the correct init or telinit command
+ * docs/citadel.html: documented the above change, and also rewrote some
+ other stuff to be less BBS-specific
+
+ Revision 605.44 2003/04/30 16:16:13 ajc
+ * Minor fix to ESMTP greeting (missing '-' screwed up pipelining)
+
+ Revision 605.43 2003/04/30 15:46:27 ajc
+ * Added the ENHANCEDSTATUSCODES extention to ESMTP.
+
+ Revision 605.42 2003/04/29 04:41:22 ajc
+ * Fix an off-by-one error in the mime parser
+
+ Revision 605.41 2003/04/29 04:13:58 ajc
+ * mime parser: look for the "name=" subfield tacked onto either
+ Content-type or Content-disposition, wherever it finds it.
+
+ Revision 605.40 2003/04/28 16:56:51 ajc
+ * Added a site-configurable setting to suppress the automatic correction of
+ forged From: lines from authenticated SMTP users, for those who prefer
+ strict RFC compliance instead of common sense.
+
+ Revision 605.39 2003/04/26 21:55:15 ajc
+ * Anytime a socket connect() fails, CLOSE THE SOCKET before erroring out.
+ Not doing so causes a file descriptor leak.
+
+ Revision 605.38 2003/04/26 04:22:51 ajc
+ * Removal of individual "remote" lines from message delivery instruction sets
+ was corrupting the end of the set, rendering the "bounceto" line unusable
+ and preventing bounces from being delivered. Fixed this by explicitly
+ adding a trailing newline when remove_token() strips it.
+
+ Revision 605.37 2003/04/25 18:28:47 ajc
+ * When rejecting spam, use SMTP error code 550, not 552
+
+ Revision 605.36 2003/04/23 03:18:44 ajc
+ * Allow IMAP STORE of more than one flag at a time (Mail.app from MacOS
+ does this).
+
+ Revision 605.35 2003/04/15 02:44:02 ajc
+ * Do not allow incoming network polls while an outbound network processing
+ session is in progress.
+ * tools.c: removed collapsed_strcmp() as it is no longer used anywhere
+
+ Revision 605.34 2003/04/08 04:03:37 ajc
+ * Implemented the ".SILENT" protocol option in IMAP STORE. Certain apps seem
+ to want to use it.
+ * Optimized the IMAP operations which scan for expunged and added messages.
+ These loops no longer make multiple traversals through the message list.
+
+ Revision 605.33 2003/04/07 05:02:23 ajc
+ * Reworked all the "list rooms" operations so that they only require one
+ pass through the database.
+ * Repaired the "create floor" operation which was broken by the switch
+ to the new IPC libray
+
+ Revision 605.32 2003/04/02 13:33:28 ajc
+ * Fixed output of "-0500" vs. "+0500" type of timezone stamps in RFC822.
+ (I think they were reversed.)
+
+ Revision 605.31 2003/04/01 05:01:08 ajc
+ * sysdep.c: optimized MyContext() a bit, and inlined it. A little profiling
+ revealed that this function was getting used super heavily.
+ * tools.c: removed the older, slower string tokenizer functions that
+ weren't getting used anymore.
+
+ Revision 605.30 2003/03/31 04:55:58 ajc
+ * Repaired the formatting of text/plain messages with blank lines.
+
+ Revision 605.29 2003/03/30 06:16:52 ajc
+ * Optimized CtdlReadMessageBody() and also gave it an option to store
+ messages with CRLF newlines instead of LF. This option is used when
+ reading SMTP in order to keep Pine from barfing on LF-terminated newlines
+ while decoding quoted-printable. Once again, Mark Crispin is an idiot.
+
+ Revision 605.28 2003/03/26 05:17:12 ajc
+ * Downloading of attachments was completely broken by the change to the new
+ protocol library. Located and fixed bugs.
+ * html.c: increased the conversion buffer size
+
+ Revision 605.27 2003/03/24 03:42:14 ajc
+ * Add the ability to quit out while validating users. Also added a help
+ option listing available access levels. This closes Bugzilla #37.
+
+ Revision 605.26 2003/03/22 05:38:23 ajc
+ * During startup, display the version string from the Berkeley DB library.
+ * When deleting a mailbox, don't reveal the namespace prefix to the user.
+
+ Revision 605.25 2003/03/20 08:37:04 error
+ * connection_died(): Don't crash before printing message, crash afterward.
+ (Bugzilla id 111)
+
+ Revision 605.24 2003/03/19 11:48:06 error
+ * entmsg(): Don't corrupt the msg_arr[] when replying to a message in a room
+
+ Revision 605.23 2003/03/19 04:04:56 ajc
+ * Dropped support for GDBM and for versions of Berkeley DB prior to 4.1
+
+ Revision 605.22 2003/03/18 05:15:05 ajc
+ * Applied a patch sent in by Clint Adams <schizo@debian.org> to handle
+ building on Debian's unstable with Berkeley DB 4.1, compiled with
+ the --with-db-uniquename when errno is a macro (as in glibc 2.3.1).
+
+ Revision 605.21 2003/03/17 11:56:35 error
+ * Fix <G>oto in alternate_semantics - it actually marks messages read now.
+
+ Revision 605.20 2003/03/17 04:03:14 ajc
+ * Supply a NULL argument as the second argument to accept() instead of an
+ empty buffer whose contents we never even look at.
+
+ Revision 605.19 2003/03/16 05:07:12 ajc
+ * Fixed the bug that caused freebusy publishes to crash.
+
+ Revision 605.18 2003/03/15 23:05:08 ajc
+ * Rewrite of calendar-to-freebusy conversion functions. This one creates
+ freebusy in the correct format, instead of what I mistakenly assumed it
+ was supposed to look like. :(
+
+ Revision 605.17 2003/03/15 22:31:06 ajc
+ * When scanning a user's Calendar> room for calendar events, search for
+ MIME parts of type text/calendar instead of assuming that the event will
+ always appear as part "1"
+
+ Revision 605.16 2003/03/14 05:08:25 ajc
+ * Clone calendar subcomponents before encapsulating in case they already
+ happen to have a parent.
+
+ Revision 605.15 2003/03/13 05:48:33 ajc
+ * Move towards storing calendar objects as fully encapsulated VCALENDAR
+ components instead of just VEVENT subcomponents.
+
+ Revision 605.14 2003/03/12 03:33:54 ajc
+ * More changes to the handling of RFC822 headers with regard to
+ splitting up the headers and body. (Blank lines and such.)
+
+ Revision 605.13 2003/03/11 06:23:50 ajc
+ * More accurate handling of IMAP FETCH xx BODYSTRUCTURE command. This should
+ make Pine happier with multipart messages.
+
+ Revision 605.12 2003/03/10 05:38:21 ajc
+ * Tweaks to msgbase.c and imap_fetch.c to fix slightly incorrect byte counts
+ reported in the numerous variations of IMAP FETCH. This silences a number of
+ error messages reported by Pine.
+
+ Revision 605.11 2003/03/10 03:40:08 ajc
+ * Fixed bug that caused segv when <R>eplying to certain messages
+
Revision 605.10 2003/03/07 17:39:45 ajc
* Remove the "modules" directory
purge and the next to delete them. Works better in transactionland.
Revision 573.91 2001/02/14 08:11:27 error
- * citadel.rc: added $Id$ (it's about time!)
+ * citadel.rc: added RCS ID (it's about time!)
Revision 573.90 2001/02/14 04:23:54 ajc
* Fixed POP3 server responses ending in \n instead of \r\n as they should be.