2 Revision 605.35 2003/04/15 02:44:02 ajc
3 * Do not allow incoming network polls while an outbound network processing
4 session is in progress.
5 * tools.c: removed collapsed_strcmp() as it is no longer used anywhere
7 Revision 605.34 2003/04/08 04:03:37 ajc
8 * Implemented the ".SILENT" protocol option in IMAP STORE. Certain apps seem
10 * Optimized the IMAP operations which scan for expunged and added messages.
11 These loops no longer make multiple traversals through the message list.
13 Revision 605.33 2003/04/07 05:02:23 ajc
14 * Reworked all the "list rooms" operations so that they only require one
15 pass through the database.
16 * Repaired the "create floor" operation which was broken by the switch
19 Revision 605.32 2003/04/02 13:33:28 ajc
20 * Fixed output of "-0500" vs. "+0500" type of timezone stamps in RFC822.
21 (I think they were reversed.)
23 Revision 605.31 2003/04/01 05:01:08 ajc
24 * sysdep.c: optimized MyContext() a bit, and inlined it. A little profiling
25 revealed that this function was getting used super heavily.
26 * tools.c: removed the older, slower string tokenizer functions that
27 weren't getting used anymore.
29 Revision 605.30 2003/03/31 04:55:58 ajc
30 * Repaired the formatting of text/plain messages with blank lines.
32 Revision 605.29 2003/03/30 06:16:52 ajc
33 * Optimized CtdlReadMessageBody() and also gave it an option to store
34 messages with CRLF newlines instead of LF. This option is used when
35 reading SMTP in order to keep Pine from barfing on LF-terminated newlines
36 while decoding quoted-printable. Once again, Mark Crispin is an idiot.
38 Revision 605.28 2003/03/26 05:17:12 ajc
39 * Downloading of attachments was completely broken by the change to the new
40 protocol library. Located and fixed bugs.
41 * html.c: increased the conversion buffer size
43 Revision 605.27 2003/03/24 03:42:14 ajc
44 * Add the ability to quit out while validating users. Also added a help
45 option listing available access levels. This closes Bugzilla #37.
47 Revision 605.26 2003/03/22 05:38:23 ajc
48 * During startup, display the version string from the Berkeley DB library.
49 * When deleting a mailbox, don't reveal the namespace prefix to the user.
51 Revision 605.25 2003/03/20 08:37:04 error
52 * connection_died(): Don't crash before printing message, crash afterward.
55 Revision 605.24 2003/03/19 11:48:06 error
56 * entmsg(): Don't corrupt the msg_arr[] when replying to a message in a room
58 Revision 605.23 2003/03/19 04:04:56 ajc
59 * Dropped support for GDBM and for versions of Berkeley DB prior to 4.1
61 Revision 605.22 2003/03/18 05:15:05 ajc
62 * Applied a patch sent in by Clint Adams <schizo@debian.org> to handle
63 building on Debian's unstable with Berkeley DB 4.1, compiled with
64 the --with-db-uniquename when errno is a macro (as in glibc 2.3.1).
66 Revision 605.21 2003/03/17 11:56:35 error
67 * Fix <G>oto in alternate_semantics - it actually marks messages read now.
69 Revision 605.20 2003/03/17 04:03:14 ajc
70 * Supply a NULL argument as the second argument to accept() instead of an
71 empty buffer whose contents we never even look at.
73 Revision 605.19 2003/03/16 05:07:12 ajc
74 * Fixed the bug that caused freebusy publishes to crash.
76 Revision 605.18 2003/03/15 23:05:08 ajc
77 * Rewrite of calendar-to-freebusy conversion functions. This one creates
78 freebusy in the correct format, instead of what I mistakenly assumed it
79 was supposed to look like. :(
81 Revision 605.17 2003/03/15 22:31:06 ajc
82 * When scanning a user's Calendar> room for calendar events, search for
83 MIME parts of type text/calendar instead of assuming that the event will
84 always appear as part "1"
86 Revision 605.16 2003/03/14 05:08:25 ajc
87 * Clone calendar subcomponents before encapsulating in case they already
88 happen to have a parent.
90 Revision 605.15 2003/03/13 05:48:33 ajc
91 * Move towards storing calendar objects as fully encapsulated VCALENDAR
92 components instead of just VEVENT subcomponents.
94 Revision 605.14 2003/03/12 03:33:54 ajc
95 * More changes to the handling of RFC822 headers with regard to
96 splitting up the headers and body. (Blank lines and such.)
98 Revision 605.13 2003/03/11 06:23:50 ajc
99 * More accurate handling of IMAP FETCH xx BODYSTRUCTURE command. This should
100 make Pine happier with multipart messages.
102 Revision 605.12 2003/03/10 05:38:21 ajc
103 * Tweaks to msgbase.c and imap_fetch.c to fix slightly incorrect byte counts
104 reported in the numerous variations of IMAP FETCH. This silences a number of
105 error messages reported by Pine.
107 Revision 605.11 2003/03/10 03:40:08 ajc
108 * Fixed bug that caused segv when <R>eplying to certain messages
110 Revision 605.10 2003/03/07 17:39:45 ajc
111 * Remove the "modules" directory
113 Revision 605.9 2003/03/06 04:58:11 ajc
114 * When entering a message into Citadel with authenticated SMTP, stamp the
115 room name as MAILROOM (Mail>) so it doesn't end up with an ugly moniker
116 like "0000058008.Sent Items"
118 Revision 605.8 2003/03/05 04:55:32 ajc
119 * serv_smtp.c: when authenticated, do not log out when a RSET command is
120 issued. This breaks clients which carelessly issue RSET before each
121 message, such as Pine.
122 * serv_smtp.c: when authenticated, ignore envelope FROM:<xxx> sender name
123 and replace with address of user who authenticated. Also fixes Pine.
124 * serv_smtp.c: when authenticated, not only do we continue our glorious
125 RFC-violating condition of replacing the From: header with the user who
126 is logged in, but we also stamp it with their preferred Internet address
127 for outbound mail (which is kept in CC->cs_inet_email).
129 Revision 605.7 2003/03/03 04:09:21 ajc
130 * When creating a user, hide the "My Citadel Config>" room of the user being
131 created, not the user currently logged in.
133 Revision 605.6 2003/03/01 18:18:03 ajc
134 * commands.c: alternate_semantics might have been getting set where it
137 Revision 605.5 2003/03/01 17:25:33 ajc
138 * citadel.rc default for alternate_semantics = no
140 Revision 605.4 2003/02/23 05:34:45 ajc
141 * When the <N>ew command is used to read new messages, the next "lazy"
142 command (space bar) now always does <G>oto, regardless of the last one.
144 Revision 605.3 2003/02/21 04:24:51 ajc
145 * Completed the "ICAL freebusy" subcommand, which fetches free/busy times
146 for any requested user (output in stripped-down VCALENDAR format)
148 Revision 605.2 2003/02/20 04:51:17 ajc
149 * Began framing up a command to view other users' free/busy times
151 Revision 605.1 2003/02/19 22:38:43 ajc
152 * Changed socklen_t to int (to allow compile on Macintosh)
154 Revision 605.0 2003/02/19 03:46:01 ajc
157 Revision 601.134 2003/02/17 05:23:20 ajc
158 * Fixed a small bug in the GDBM backend (deprecated, but the bug was very
159 obvious and a kind user pointed it out)
160 * Removed vestiges of setjmp/longjmp from the client
161 * When doing .TS, don't get caught in a constant-logout loop
163 Revision 601.133 2003/02/14 16:12:04 ajc
164 * Added support for any standard RBL
166 Revision 601.132 2003/02/13 22:33:41 ajc
167 * Fixed algorithm for reporting "last login"
169 Revision 601.131 2003/02/13 21:52:13 ajc
170 * IMAP service: fixed bug that was causing the wrong messages (usually *all*
171 messages) to be flagged when a STORE or COPY operation was performed.
173 Revision 601.130 2003/02/13 20:13:51 ajc
174 * Applied "multi editor" patch supplied by georbit
176 Revision 601.129 2003/02/12 04:51:44 ajc
179 Revision 601.128 2003/02/10 04:50:33 ajc
180 * More documentation updates
182 Revision 601.127 2003/02/09 03:38:28 ajc
183 * Updated the documentation some more
185 Revision 601.126 2003/01/25 07:37:15 error
186 * whobbs.c: Print error message if we can't connect to server
188 Revision 601.125 2003/01/23 05:50:59 ajc
189 * citadel.c: hitting enter without entering a room name in the <.G>oto and
190 <.S>kip commands now does nothing instead of exhibiting undefined behavior
192 Revision 601.124 2003/01/23 04:42:33 ajc
193 * Began reviewing, updating, and HTML-izing the documentation
195 Revision 601.123 2003/01/22 03:53:24 ajc
196 * More reliablility hacks for autologin mode, and better quarantine of
197 autologin code when it's disabled.
199 Revision 601.122 2003/01/21 04:42:12 ajc
200 * Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
201 it's now part of getuser() so it always gets called, even when looking up
202 addresses for mail and stuff.
204 Revision 601.121 2003/01/19 08:59:02 error
205 * Remove irrelevant file hpsux.h (was part of dynloader)
207 Revision 601.120 2003/01/19 05:55:59 ajc
208 * serv_calendar.c: allocate dynamic symbol at module startup, not during
209 each session startup. This error was causing crashes (of course).
211 Revision 601.119 2003/01/18 06:18:20 ajc
212 * whobbs.c: line up the columns better
213 * routines2.c: when doing <.ASI> command, entering a blank hostname causes
214 it to abort instead of adding a new host. Also strip l/t whitespace.
216 Revision 601.118 2003/01/17 22:36:56 ajc
217 * This commit is a figment of your imagination.
219 Revision 601.117 2003/01/17 21:50:27 ajc
220 * Began making some build changes for Cygwin compatibility
222 Revision 601.116 2003/01/17 10:06:54 error
223 * fmout(): Ignore \r (carriage return) characters in messages
225 Revision 601.115 2003/01/17 04:36:04 ajc
226 * whobbs.c: fix bad call to CtdlGetServInfo() so we can get our session ID
227 and the name of the BBS
229 Revision 601.114 2003/01/16 21:16:23 error
230 * CtdlIPCGetMessages(): Fix message read failing on first attempt to read
233 Revision 601.113 2003/01/16 10:04:03 error
234 * ENT0 command: changed post-as username from arg 4 to arg 5; 4 was already
235 used as the message subject
236 * Convert message entry and reading to new IPC code
237 * Minor bugfixes throughout IPC code
239 Revision 601.112 2003/01/16 04:17:02 ajc
240 * citadel_ipc.c: when issuing a SPEX command, send the string value for
241 room/floor/site instead of the number. citserver wants a string.
242 * ipc_c_tcp.c: don't call SSL_shutdown() from connection_died(). This just
243 causes it to segfault because there's no valid socket.
245 Revision 601.111 2003/01/16 03:41:45 ajc
246 * Renamed "dynloader" to "serv_extensions" globally. We don't want people
247 to think we have a dynamic loader, do we? :)
248 * serv_*_init() is now declared in serv_extensions.h. This is definitely the
249 wrong place for it. It's there temporarily until we decide on a new
250 convention for server extensions.
251 * bootstrap: more reliable detection of Red Hat Linux 7.3 -- more specifically,
252 fewer fireworks when the host system is *not* Red Hat Linux.
254 Revision 601.110 2003/01/15 16:34:53 ajc
255 * bootstrap: don't check /etc/redhat-release if it doesn't exist (which is
256 the case on all non Red Hat Linux systems)
258 Revision 601.109 2003/01/15 05:57:09 ajc
259 * First cut at static-linking the citserver. Ripped out libtool and
260 replaced the dynloader paradigm with "server extensions" paradigm (static
261 linked, but still very loosely coupled by way of using the API's to
262 register callbacks and commands etc.) Needs more testing.
264 Revision 601.108 2003/01/14 04:12:26 ajc
265 * Set default view for new user Calendar> rooms to 3 (calendar)
266 * Set default view for new user Tasks> rooms to 4 (tasks)
268 Revision 601.107 2003/01/13 17:04:19 ajc
269 * Add a sample URL view command for Macintosh in the included citadel.rc
271 Revision 601.106 2003/01/13 02:55:07 ajc
272 * Do calendar support only if libical header *and* library are present
274 Revision 601.105 2003/01/12 23:07:40 ajc
275 * configure.ac: Attempt to check for libical 0.24 or newer
277 Revision 601.104 2003/01/12 05:01:58 ajc
278 * Start marking things for 6.05 release
280 Revision 601.103 2003/01/12 04:48:23 ajc
281 * Display message subjects in magenta instead of white
283 Revision 601.102 2003/01/06 09:17:10 error
284 * Remove non (yet) existent sstring.c dependency from Makefile.in
286 Revision 601.101 2003/01/05 07:35:03 error
287 * Add an AllFloors parameter to the citadel IPC API
289 Revision 601.100 2003/01/01 08:07:46 error
290 * commands.c: bugfix for reading from FILE pointers; affected quote, print
293 Revision 601.99 2002/12/28 05:33:29 ajc
294 * ical_dezonify: set is_utc=1 even if we didn't convert from some arbitrary
295 timezone. Presumably this means the time was already UTC, and we really
296 need that "Z" to get slapped on it.
298 Revision 601.98 2002/12/28 05:12:06 ajc
299 * Yet another attempt at making ical_dezonify() send outgoing calendar items
300 in UTC format. (This one will probably work -- the timestamps have the
301 "Z" after them which signifies UTC instead of local time.)
303 Revision 601.97 2002/12/27 04:40:40 ajc
304 * Another attempt at fixing timezones :(
306 Revision 601.96 2002/12/25 23:17:07 ajc
307 * ical_dezonify.c: shuffle around #includes and #ifdef's
309 Revision 601.95 2002/12/25 21:46:19 ajc
310 * Another shot at timezone handling (ugggghh)
312 Revision 601.94 2002/12/25 07:05:26 ajc
313 * set up ical_dezonify() to be called at appropriate times
314 (but it doesn't seem to work correctly yet)
316 Revision 601.93 2002/12/25 06:41:44 ajc
317 * ical_dezonify.c: added (function to strip localized timestamps out of
318 a component and replace them with UTC timestamps)
320 Revision 601.92 2002/12/19 04:51:49 ajc
321 * database_cleanup.sh: added
323 Revision 601.91 2002/12/18 04:08:16 ajc
324 * Don't attempt to send out invitations when there are no attendees.
326 Revision 601.90 2002/12/15 10:53:51 error
327 * Final touches on the new message formatter.
329 Revision 601.89 2002/12/15 09:42:37 error
330 * Converted more routines to new IPC code.
332 Revision 601.88 2002/12/14 23:21:29 ajc
333 * When saving a calendar event, set the message Subject to the event
334 summary string, and the message Date/time to the event start time.
336 Revision 601.87 2002/12/10 23:36:20 ajc
337 * Fixed a bug in the allocation of per-session dynamic data for calendar module
339 Revision 601.86 2002/12/09 06:07:29 ajc
340 * Finished the code to accept incoming calendar REPLY messages and
341 merge/save the updated event in the user's calendar.
343 Revision 601.85 2002/12/08 06:01:48 ajc
344 * More work on the reply handler. Wrote functions to locate the message
345 containing the invitation being replied to. Just need to write the
346 merge and resave functions now.
348 Revision 601.84 2002/12/08 00:23:08 ajc
349 * Began adding a calendaring subcommand to accept a reply to a meeting
350 invitation and update the event in the user's calendar. (Not finished.)
352 Revision 601.83 2002/12/04 05:01:18 ajc
353 * When sending out invitations, encapsulate the VEVENT component inside a
354 VCALENDAR component, along with proper metadata such as product ID and
355 vcalendar version. Move the METHOD:REQUEST property to the encapsulating
356 component rather than the event itself. (Still need to add a VTIMEZONE).
358 Revision 601.82 2002/12/03 04:49:15 ajc
359 * Send out meeting requests! (Need to test with various clients.)
361 Revision 601.81 2002/12/02 08:09:00 error
362 * Improvements to the new message formatter, including URL support and
363 doing the Right Thing for text/plain messages.
365 Revision 601.80 2002/12/01 11:02:57 error
366 * New experimental message formatter - try it, you'll like it!
368 Revision 601.79 2002/12/01 04:48:24 ajc
369 * The code to check for sending invitations needs to happen *after* save
371 Revision 601.78 2002/12/01 00:59:54 ajc
372 * Reliably detect when the user saving an event is listed as the meeting
373 organizer. (Currently calls a stub function. Still need to write the
374 function to generate and send invitations.)
376 Revision 601.77 2002/11/30 21:35:30 ajc
377 * just some trace messages
379 Revision 601.76 2002/11/30 05:39:28 ajc
380 * Started banging out some code to determine when a saved vEvent needs to
381 send out meeting invites.
383 Revision 601.75 2002/11/29 16:24:59 ajc
384 * When calling ical*_remove_*() routines, the caller then owns the object
385 which is removed. Added ical*_free() calls to free the memory.
387 Revision 601.74 2002/11/29 15:44:41 ajc
388 * CC->cs_inet_email is now a string buffer, not a pointer
389 * Initialize CC->cs_inet_email with a default address, so it always
390 contains something even when the directory doesn't
391 * Augment CHEK command to return the user's preferred Internet e-mail addr.
393 Revision 601.73 2002/11/27 21:05:31 nixo
394 added dot ungoto functionality.
395 It allows you to enter a room to ungoto, it will look
396 through the ungoto list and goto there at the room position
397 you last goto-ed it from.
398 Don't blame me, this was Gary's idea.
400 Revision 601.72 2002/11/25 05:10:07 ajc
401 * Post a notification to Aide> when a user is manually deleted
402 (resolves Bugzilla enhancement request #73)
404 Revision 601.71 2002/11/25 04:57:43 ajc
405 * Allow set/clear of per-user Internet mail privilege
408 Revision 601.70 2002/11/23 13:35:47 error
409 * Makefile.in: Alphabetized all the source files
411 Revision 601.69 2002/11/21 05:38:13 ajc
412 * Added support for a "New User Greetings" room. See docs/install.txt
414 Revision 601.68 2002/11/15 11:24:40 error
415 * serv_rwho.c: cmd_rwho(): move logged_in from param 8 to param 11
416 (see RWHO in techdoc/session.txt)
418 Revision 601.67 2002/11/13 17:20:57 ajc
419 * When in curses mode, call beep() instead of putc(7, stdout) to make it beep.
421 Revision 601.66 2002/11/12 04:30:16 ajc
422 * Completed the invitation accept/decline code. It now sends back a
423 correctly formated reply! (Tested with Evolution)
425 Revision 601.65 2002/11/11 06:21:55 error
426 * Fixed minor bugs with color handling; added explicit support for handling
427 the background color e.g. for transparent terminals
429 Revision 601.64 2002/11/11 04:17:24 ajc
430 * More work on reply to meeting invitation
432 Revision 601.63 2002/11/10 09:21:57 error
433 * messages.c: fixed <H>eader command
435 Revision 601.62 2002/11/10 09:19:38 error
436 * Convert some more routines to new IPC code
438 Revision 601.61 2002/11/10 09:14:16 error
439 * citadel.spec: updated for post-6.01
441 Revision 601.60 2002/11/10 09:12:06 error
442 * citadel.c: When terminating, don't mark messages new when using new
445 Revision 601.59 2002/11/08 05:28:54 ajc
446 * Reply to VEVENT invitations: generate reply by cloning the request,
447 stripping out non-me attendees, setting the partstat to accept/decline,
448 and extracting the address of the organizer. (Still not finished: right
449 now it does everything except actually sending the reply.)
451 Revision 601.58 2002/11/07 04:40:07 ajc
452 * Repaired the "remember username/password" functionality of the client
453 (it was broken during the transition to the new client protocol library)
455 Revision 601.57 2002/11/06 05:03:01 ajc
456 * No changes; just testing CVS permissions
458 Revision 601.56 2002/11/04 21:49:53 ajc
459 * Don't run the wait indicator when in an external editor
461 Revision 601.55 2002/11/01 04:57:56 ajc
462 * Fixed .AM and .AE commands
464 Revision 601.54 2002/10/29 20:14:56 error
465 * rooms.c: don't allow a blank floor name when creating a floor (in client)
467 Revision 601.53 2002/10/26 06:15:09 ajc
468 * cmd_cflr() - don't allow zero length floor names
470 Revision 601.52 2002/10/26 06:01:19 ajc
471 * Increase size of temp file name buffer in struct CitContext
473 Revision 601.51 2002/10/25 09:38:38 error
474 * Fixed broken .Goto by partial match
476 Revision 601.50 2002/10/25 09:26:26 error
477 * Fix the status line not updating with the new wait indicator; rearrange
478 the code so network_status_cb is a member function of ipc.
480 Revision 601.49 2002/10/25 04:39:38 ajc
481 * When in fullscreen mode, display an "X" icon in the lower right corner of
482 the screen while waiting for the server.
484 Revision 601.48 2002/10/24 09:04:53 error
485 * acconfig.h: add DISABLE_CURSES template
487 Revision 601.47 2002/10/23 04:06:41 ajc
488 * "conflicts" check now also tells the client whether a conflicting event
489 is really just an older version of the same object.
491 Revision 601.46 2002/10/23 03:55:21 ajc
492 * Finished: when saving an object of type text/calendar to the Calendar> room,
493 set the Citadel "extended message ID" to the UID of the VEVENT object. This
494 causes the message base to automatically delete any existing instance(s) of
495 that object: automatic replacement.
497 Revision 601.45 2002/10/23 03:07:43 ajc
498 * First hack at UID-to-EMSGID mapping (for auto replacement)
500 Revision 601.44 2002/10/21 20:00:41 ajc
501 * List UID and SUMMARY properties of conflicting events
503 Revision 601.43 2002/10/21 17:14:42 ajc
504 * More work on conflict detects
506 Revision 601.42 2002/10/20 21:42:54 ajc
507 * More conflict checking stuff
509 Revision 601.41 2002/10/20 20:21:27 ajc
510 * Put in a skeleton "hunt for conflicts" code
512 Revision 601.40 2002/10/20 08:01:03 error
513 * docs/install.txt: add Mac OS X build instructions
515 Revision 601.39 2002/10/19 21:35:34 ajc
516 * Moved some of the calendar logic over from WebCit
518 Revision 601.38 2002/10/19 08:30:03 error
519 * dynloader.c: Darwin places underscores in front of symbol names, just
522 Revision 601.37 2002/10/19 08:18:06 error
523 * Disable any use of curses on Darwin (this is temporary until I beat
524 Apple's bizarre linker into submission)
526 Revision 601.36 2002/10/18 10:33:09 error
527 * More signed/unsigned fixes (for the new progress gauge)
529 Revision 601.35 2002/10/18 07:56:30 error
530 * fix self-service account creation at login prompt (accidentally called
531 CREU instead of NEWU).
533 Revision 601.34 2002/10/18 03:44:13 ajc
534 * Fixed a bug in CtdlRenameRoom() that caused the old room record not to be
535 deleted when there was a mailbox namespace attached.
536 * Reworked imap_rename() and imap_rename_backend() to not use nested functions
538 Revision 601.33 2002/10/17 12:56:44 error
539 * Bug fixes: Fix numerous char array size mismatches, signed/unsigned
540 mismatches, and const correctness problems (though not nearly all)
542 Revision 601.32 2002/10/17 11:13:27 error
543 * Convert room listings and some aide functions to new IPC code
545 Revision 601.31 2002/10/16 13:46:19 ajc
546 * Remove some trace messages
548 Revision 601.30 2002/10/16 08:59:41 error
549 * Don't assume pointer to time_t is compatible with pointer to
550 struct timeval.tv_sec (it isn't on darwin)
552 Revision 601.29 2002/10/16 02:49:55 ajc
553 * CtdlWriteObject() encode in memory instead of on disk (not tested)
555 Revision 601.28 2002/10/15 17:41:20 ajc
556 * Numerous warning fixes and cleanups for compile on Linux for IBM S/390
557 * Name temp files with source code location of who created them
559 Revision 601.27 2002/10/15 06:47:11 error
560 * IPC support for resumable downloads
562 Revision 601.26 2002/10/15 06:44:55 error
563 * configure.ac check for malloc.h header file (Mac OS X needs this)
565 Revision 601.25 2002/10/15 03:56:33 ajc
566 * Run without crashing on Berkeley DB 4.1 :)
568 Revision 601.24 2002/10/15 03:30:52 ajc
569 * Build ok on Berkeley DB 4.1
571 Revision 601.23 2002/10/14 08:27:40 error
572 * Mac OS X build fixes (everything but serv_imap now builds)
574 Revision 601.22 2002/10/08 09:44:52 error
575 * Build environment: cvs ignore .diff/.patch files
577 Revision 601.21 2002/10/07 18:59:37 ajc
578 * Build fixes for Solaris box without OpenSSL installed
580 Revision 601.20 2002/10/07 09:40:49 error
581 * Don't try to compile non-existent client_crypto.c (oops!)
583 Revision 601.19 2002/10/06 18:46:30 error
584 * Move (nearly) all IPC-related code to citadel_ipc.[ch].
586 Revision 601.18 2002/10/05 04:48:29 ajc
587 * Change MAXSETUP from 4 to 3 (bug reported by mavherzog, fix suggested by IO)
589 Revision 601.17 2002/10/04 07:11:56 error
590 * Fix bootstrap for Red Hat 7.3
592 Revision 601.16 2002/10/02 04:07:27 error
593 * status_line() now shows "new mail" only when there is new mail
595 Revision 601.15 2002/10/01 04:00:13 ajc
596 * html.c: speed improvement in html-to-ascii converter
597 * messages.c: MASSIVE speed improvement in message output
599 Revision 601.14 2002/09/30 08:07:11 error
600 * ipcdef.h: add extern "C" for linking to C++ programs
602 Revision 601.13 2002/09/30 07:32:09 error
603 * ipcdef.h: remove prototype for connection_died(), it doesn't belong there
605 Revision 601.12 2002/09/30 07:20:35 error
606 * Fix configure mis-detecting libical and zlib and a missing semicolon in
609 Revision 601.11 2002/09/29 04:55:13 error
610 * File and attachment downloads now use the new IPC code.
611 * Implemented high-speed pipelined file download in IPC code.
613 Revision 601.10 2002/09/29 04:41:43 error
614 * file_ops.c: cmd_read() now returns a short read at end-of-file instead of
615 4096, this prevents trailing garbage on the downloaded file; also it now
616 succeeds if the requested number of bytes is > 4096; it simply returns
619 Revision 601.9 2002/09/27 06:53:20 error
620 * Allow multiple simultaneous IPC connections. All changes necessary for
621 the client to use the new code are necessarily included.
623 Revision 601.8 2002/09/22 02:48:04 ajc
624 * axdefs.h: add "Notes" view
626 Revision 601.7 2002/09/17 03:18:15 ajc
627 * Create the Calendar> and Tasks> rooms at login time, and set their default
628 views to calendar and tasklist views. Renamed "My Calendar>" to "Calendar>"
629 to be in sync with the KDE groupware project.
631 Revision 601.6 2002/09/15 03:24:28 ajc
632 * Renamed decode_base64() to CtdlDecodeBase64()
633 * Renamed decode_quoted_printable() to CtdlDecodeQuotedPrintable()
634 * These changes are to avoid namespace conflict with libical
636 Revision 601.5 2002/09/13 15:41:39 ajc
637 * serv_calendar.c: #include "serv_calendar.h", not "serv_ical.h"
639 Revision 601.4 2002/09/11 03:17:18 ajc
640 * [EXPERIMENTAL] Link in the "libical" calendar library if present
641 * Rename serv_ical to serv_calendar (because the resulting module would be
642 named "libical" which conflicts with the external library by that name)
644 Revision 601.3 2002/09/10 08:07:38 error
645 * update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00
647 Revision 601.2 2002/09/09 03:03:18 ajc
648 * When a user logs in, create the Mail> room if it doesn't exist. (Should
649 never happen, but one site had a situation where this patch came in handy.)
651 Revision 601.1 2002/09/08 04:15:28 ajc
652 * Also fixed a bug in <.T>erminate <S>tay which caused the terminal to
653 become wacky on second and subsequent sessions.
655 Revision 601.0 2002/09/08 03:51:30 ajc
656 * Let's call this 6.01, shall we?
658 Revision 600.2 2002/09/08 03:48:48 ajc
659 * Fixed a crashy crashy bug in the AGUP protocol function in the client
661 Revision 600.1 2002/09/07 03:24:23 ajc
662 * When displaying messages using MSG4, enumerate the attachments on the
663 client side, because the server won't add their descriptions to the
666 Revision 600.0 2002/09/04 03:06:58 ajc
667 * Committing the current code base as version 6.00
669 Revision 591.109 2002/09/03 14:09:04 ajc
670 * setup.c: automatically stop/start services
672 Revision 591.108 2002/09/03 04:42:15 ajc
673 * Added MSG4 support to client-side IPC
674 * Moved HTML-to-text conversion to the client side
676 Revision 591.107 2002/09/02 20:40:34 ajc
677 * Automation work for setup
679 Revision 591.106 2002/08/31 04:36:26 ajc
680 * IMAP APPEND no longer forces messages to appear as from the logged-in user
681 when appending to a mailbox room. (Allows migration to Citadel from some
682 other type of server without losing all the sender names.)
684 Revision 591.105 2002/08/31 04:12:39 ajc
685 * Set version number to 6.00 in documentation and header files.
686 * Convert RFC822 newlines (CRLF) to Unix/Citadel newlines (LF) when
687 performing an IMAP APPEND command.
689 Revision 591.104 2002/08/28 03:18:06 ajc
690 * Make reply_to and reply_subject global (otherwise they don't work!)
692 Revision 591.103 2002/08/27 04:01:03 ajc
693 * Added the ability to run an external command from the client when new mail
694 arrives. (Ok, I admit it: I just discovered http://www.dailywav.com and I
695 just *had* to have Bear in the Big Blue House tell me I've got mail)
697 Revision 591.102 2002/08/26 02:55:09 ajc
698 * Small bugfix for memory bounds checking in the MIME parser
700 Revision 591.101 2002/08/25 21:23:49 ajc
701 * Hide the SMTP queue and the sysconfig rooms.
703 Revision 591.100 2002/08/24 05:58:53 ajc
704 * Bugfixes and cosmetic changes to listsub system
706 Revision 591.99 2002/08/23 03:36:52 ajc
707 * Finished all of the subscribe/unsubscribe/confirm stuff!
709 Revision 591.98 2002/08/23 02:30:02 ajc
710 * Delete unconfirmed pending subscribe/unsubscribe requests after three days
711 * Don't allow multiple subscriptions of the same address to a list
713 Revision 591.97 2002/08/22 03:55:11 ajc
716 Revision 591.96 2002/08/22 03:40:00 ajc
717 * Add "unsubscribe" command (but not yet "confirm unsubscribe")
719 Revision 591.95 2002/08/21 21:58:00 ajc
720 * Completed self-service list subscription via web.
721 (Still need to implement unsubscribe.)
723 Revision 591.94 2002/08/16 21:04:56 ajc
726 Revision 591.93 2002/08/14 20:21:52 ajc
727 * Extend GETR/SETR to allow twiddling of bits in the QRflags2 bucket
728 * New flag and config options to allow/disallow self-service list subscription
729 and unsubscription to a room
731 Revision 591.92 2002/08/14 02:36:05 ajc
732 * WebCit list subscription integration
734 Revision 591.91 2002/08/13 18:48:46 ajc
735 * Generate and send subscription confirmation requests.
736 (Still need to finalize the URL format)
738 Revision 591.90 2002/08/13 17:19:11 ajc
739 * Added email capability to quickie_message()
741 Revision 591.89 2002/08/13 04:02:06 ajc
742 * <R>eplace string is now case sensitive
744 Revision 591.88 2002/08/13 03:46:31 ajc
745 * More work on the self-service subscribe/unsubscribe infrastructure
747 Revision 591.87 2002/08/12 03:00:20 ajc
748 * Fixed bug in <R>eplacestring which caused it to lock up in certain conditions
750 Revision 591.86 2002/08/12 00:09:05 ajc
751 * Compress VISIT records using zlib if available. This reduces the object
752 size from over 4k to about 70 bytes. Experimental.
753 * Automatically uncompress database records found to be compressed (duh)
755 Revision 591.85 2002/08/08 22:01:35 ajc
756 * autoconf to look for zlib (for an upcoming experiment)
758 Revision 591.84 2002/08/08 03:25:56 ajc
760 * Started writing some infrastructure for sub/unsub
762 Revision 591.83 2002/08/08 02:49:12 ajc
763 * serv_network.c: retain unknown commands in netconfigs and write them back
764 * techdoc/netconfigs.txt: specify commands for subscribe/unsubscribe pending
765 * serv_listsub.c: added (currently a stub)
767 Revision 591.82 2002/08/06 03:12:14 ajc
768 * Fixed and clarified "new mail has arrived" messages.
770 Revision 591.81 2002/08/06 03:02:29 ajc
771 * ;AE command -- Make it clearer which floor the user is editing
773 Revision 591.80 2002/08/06 02:58:01 ajc
774 * Cleaned up the output of digest mode. It's usable now, but the self-service
775 subscribe/unsubscribe functions are not there yet.
777 Revision 591.79 2002/08/05 14:38:11 ajc
778 * rooms.c: corrected a typo reported by Campagnolo (Mike Poulin)
780 Revision 591.78 2002/08/03 19:48:40 ajc
781 * NULLify 'roomrec' before attempting partial match in <G>oto
782 (fixes heap corruption when this command is executed)
784 Revision 591.77 2002/08/03 04:13:46 ajc
785 * citadel_ipc.c: Attempted to clean up memory allocation
787 Revision 591.76 2002/08/01 05:41:53 ajc
788 * Completion of (most of) digest mode. Still needs some polish.
790 Revision 591.75 2002/07/31 04:01:57 ajc
791 * Began implementing "digest mode" for listserving. (Not complete)
793 Revision 591.74 2002/07/28 20:33:13 ajc
794 * Augmented the "headers only" functionality of the message reading API (as
795 well as the options of the server commands which expose it) to allow
796 headers+body, headers only, or body only.
797 * Adjusted message output of IMAP command FETCH BODY[1] when message is in
798 legacy Citadel format. This fixes a bug exposed by SquirrelMail.
800 Revision 591.73 2002/07/23 04:00:06 ajc
801 * Completed the MSGP and MSG4 commands to set the client's preferred MIME
802 content types, and fetch messages with MIME content types.
804 Revision 591.72 2002/07/21 22:29:46 ajc
805 * Added in some infrastructure to switch the client's message reading from
806 conventional MSG0 to a MIME-download type thing, like WebCit does.
808 Revision 591.71 2002/07/21 15:45:07 error
809 * Remove duplicate call for server time in who_is_online(); IPC does this now
811 Revision 591.70 2002/07/21 15:43:57 error
812 * citadel_ipc.c: Fix for segfault on empty messages
814 Revision 591.69 2002/07/20 04:05:10 ajc
815 * Updated hack.txt with some fresh new information
817 Revision 591.68 2002/07/19 02:28:11 ajc
818 * citadel_ipc.c: changed various buffer lengths from 256 to SIZ in order to
819 accomodate long lines which often spew out (usually from spam unfortunately)
821 Revision 591.67 2002/07/18 21:29:37 nbryant
822 added a note about GNU make to the configure script output
824 Revision 591.66 2002/07/18 20:21:18 ajc
825 * Eliminated the 512-message limit in the client for reading messages.
827 Revision 591.65 2002/07/13 04:12:40 ajc
828 * Don't lie about format types in MSG0 anymore. We no longer need to.
830 Revision 591.64 2002/07/13 03:24:32 ajc
831 * CtdlOutputMsg() caches the most recently fetched message in memory. This
832 eliminates the need to do multiple database fetches when we go back for
833 additional MIME parts, etc.
835 Revision 591.63 2002/07/11 03:40:51 ajc
836 * When outputting a multipart MIME message, supply the client with "pref="
837 and "suff=" lines in addition to the "part=" lines.
839 Revision 591.62 2002/07/02 16:27:06 error
840 * prototypes in citadel_ipc.h updated
842 Revision 591.61 2002/06/29 23:26:55 error
843 * fixed some memory leaks
845 Revision 591.60 2002/06/29 18:36:31 error
846 * tools.c: Massively faster versions of extract_token() and remove_token().
847 These functions can now handle multi-kilobyte sized strings with hundreds
848 of tokens (or more?).
850 Revision 591.59 2002/06/29 15:55:07 error
851 * Convert whobbs, serv_info, misc. functions to new IPC code
853 Revision 591.58 2002/06/27 03:10:04 error
854 * rooms.c: converted most functions to new IPC code
856 Revision 591.57 2002/06/25 15:38:52 error
857 * fixed bug in dotgoto() causing free() to segfault
859 Revision 591.56 2002/06/25 15:13:27 error
860 * gotonext() now uses new IPC code to retrieve room listing
862 Revision 591.55 2002/06/25 14:21:35 error
863 * remove a debugging trap I accidentally left in the code
865 Revision 591.54 2002/06/24 20:17:43 error
866 * Fixed code for client segfault at login
868 Revision 591.53 2002/06/24 20:11:00 error
869 * Buffer overflow fixes and minor cleanup in IPC code
871 Revision 591.52 2002/06/24 16:07:42 error
872 * Message reading and other functions which use the fmout() screen
873 formatter now use the new IPC code.
875 Revision 591.51 2002/06/22 20:09:16 error
876 * Use a new IPC API (in citadel_ipc.c). Partially converted citadel.c to
879 Revision 591.50 2002/06/21 12:32:48 ajc
880 * Minor documentation update
882 Revision 591.49 2002/06/19 21:52:13 ajc
883 * Support a transient room create as well
885 Revision 591.48 2002/06/19 21:42:57 ajc
886 * Added support for "transient goto" which allows entry into a private and/or
887 zapped room without putting the room [back] on your known rooms list. This
888 is useful for the new administrative functions in WebCit (updating a user's
889 vCard without the Aide suddenly having that user's config room on their
892 Revision 591.47 2002/06/18 16:34:06 error
893 * room_ops.c: Fix for old room record not being deleted when renaming
896 Revision 591.46 2002/06/16 21:01:11 ajc
897 * Allow Aides to create rooms in other users' namespaces (if global access
900 Revision 591.45 2002/06/15 20:48:50 ajc
901 * Fixed small bug in the e<X>pert mode toggle
903 Revision 591.44 2002/06/15 20:14:55 ajc
904 * Fixed a memory allocation bug in the vCard parser
906 Revision 591.43 2002/06/15 17:53:59 error
907 * citserver.c: MESG command can now send a different system message based
908 on the developer and client ID of the connected client
910 Revision 591.42 2002/06/15 04:52:26 ajc
911 * SpamAssassin connector is now configurable in <.A>ide <S>ysconfig <I>nternet.
912 * Allow more than one SA server (it'll try 'em all)
913 * Don't run SA for logged in users
915 Revision 591.41 2002/06/14 20:42:56 ajc
916 * Discovered that spamd works even without the Content-length: command, so I
917 was able to redo the spam checker to work without a temp file.
919 Revision 591.40 2002/06/14 20:37:03 ajc
920 * Disabled the spam strings checker I wrote a few days ago.
921 * When receiving SMTP, check to see if spamd (the SpamAssassin daemon) is
922 running on the local machine. If yes, run the message through it and
925 Revision 591.39 2002/06/12 03:42:21 ajc
926 * "Suppress message prompts" has been changed to "Prompt after each message"
927 and of course the effect has been reversed.
928 * "Be unlisted in userlog" has been moved to the end of the list of
929 configuration prompts, so it doesn't interrupt the flow of thought regarding
930 the prompting questions.
932 Revision 591.38 2002/06/10 22:25:25 ajc
933 * Configuration for spam filter
935 Revision 591.37 2002/06/09 23:59:38 ajc
936 * Started working on the spam filter
938 Revision 591.36 2002/06/07 22:10:51 ajc
939 * Added a new message function hook type EVT_SMTPSCAN which permits modules to
940 register hooks that can scan incoming SMTP messages and elect to reject them
941 (due to virus or spam content, for example).
943 Revision 591.35 2002/06/07 03:22:13 ajc
944 * Added a module "serv_mrtg" which allows activity reporting to MRTG
945 (http://www.mrtg.org) -- this will replace our stats program.
947 Revision 591.34 2002/06/02 16:42:17 error
948 * Support for Ctrl-W to erase a word when editing or at a prompt
950 Revision 591.33 2002/05/31 18:34:04 nbryant
951 better curses compatibility, and a couple makefile/configure tweaks
953 Revision 591.32 2002/05/28 13:59:02 ajc
954 * Removed the 'netsetup' and 'dnetsetup' utilities (obsolete)
956 Revision 591.31 2002/05/24 19:58:13 ajc
957 * Fixed the "idle timeout during paginator prompt" bug by reintroducting the
958 concept of a "half keepalive" and sending them during paginator prompts.
960 Revision 591.30 2002/05/23 03:33:21 ajc
961 * Added a GTSN (GeT list of SeeN messages) command
963 Revision 591.29 2002/05/20 14:29:59 ajc
964 * commands.c: fixed bug in the scan for idle_threshold= which didn't include
965 the = sign and ended up always setting this value to 0
967 Revision 591.28 2002/05/17 03:57:30 ajc
968 * When doing fixed_output() of converted HTML, output the whole block of
969 data at once instead of one character at a time
971 Revision 591.27 2002/05/16 04:44:58 ajc
972 * Reduce the number of socket writes when doing fixed_output() to avoid
973 getting killed by overhead. (Thanks to IO for the insight)
975 Revision 591.26 2002/05/14 15:25:34 error
976 * room_ops.c: clarified aide message when room aide is removed
978 Revision 591.25 2002/05/14 15:18:43 error
979 * rooms.c: Print name of room aide if any when doing <i>nfo
981 Revision 591.24 2002/05/14 01:33:18 error
982 * Fixed some incredibly silly typos
984 Revision 591.23 2002/05/14 01:27:18 error
985 * Minor cosmetic changes, extraneous double spaces etc.
987 Revision 591.22 2002/05/14 01:15:54 error
988 * Idle threshold on the who list is now customizable in the citadel.rc
990 Revision 591.21 2002/05/14 01:09:57 error
991 * citadel.c: spacebar won't read New if there are no new messages
993 Revision 591.20 2002/05/12 23:00:11 ajc
994 * Removed an unused variable
996 Revision 591.19 2002/05/12 22:57:04 ajc
997 * Removed the unfinished moderation system.
998 * CtdlForEachMessage() - only fetch metadata when hunting for messages with
999 a specified Content-type. Serious performance boost.
1001 Revision 591.18 2002/05/05 17:33:09 error
1002 * screen.c: fix lack of beeps in curses mode
1004 Revision 591.17 2002/05/04 02:58:16 ajc
1005 * Documented a small protocol change for the STEL command
1007 Revision 591.16 2002/04/30 03:13:59 ajc
1008 * When sending a page that results in the receiver's Sent/Received Pages>
1009 room to be created, don't automatically grant the sender access to that room.
1010 * Added a parameter to create_room() to implement the above
1012 Revision 591.15 2002/04/23 13:38:08 ajc
1015 Revision 591.14 2002/04/21 21:28:06 ajc
1016 * Create the My Citadel Config> room along with the user account
1018 Revision 591.13 2002/04/20 03:00:01 ajc
1019 * One more fix for the RENAME command wrt namespaces.
1021 Revision 591.12 2002/04/18 18:44:36 nbryant
1022 don't use libtool -avoid-version for libcitserver - this might help for
1025 Revision 591.11 2002/04/17 04:35:06 ajc
1026 * Finished the IMAP RENAME command. (I ended up using nested functions
1027 because it made the task much, much easier. We can fix it later or convert
1028 it to C++ if we find this becomes a problem.)
1030 Revision 591.10 2002/04/15 13:25:47 ajc
1031 * Add error responses to imap_rename() and set up subfolder framework
1033 Revision 591.9 2002/04/14 22:42:49 ajc
1034 * Began implementing RENAME command in IMAP.
1036 Revision 591.8 2002/04/14 22:27:05 ajc
1037 * Added access control checking to CtdlRenameRoom()
1039 Revision 591.7 2002/04/14 22:11:22 ajc
1040 * New back end function CtdlRenameRoom() which is used to rename a room and/or
1041 move it to a different floor.
1042 * cmd_setr() now uses CtdlRenameRoom() to do part of its work
1044 Revision 591.6 2002/04/10 03:58:40 ajc
1045 * Began work on IMAP RENAME
1047 Revision 591.5 2002/04/09 14:26:43 ajc
1048 * Allow INBOX to have subfolders. There's no longer any reason not to.
1050 Revision 591.4 2002/04/05 22:31:59 error
1051 * Send time-of-day with pages sent via IMAP
1053 Revision 591.3 2002/04/05 14:34:02 ajc
1054 * Minor tweak to nested folder algorithm to handle nesting in mail root
1056 Revision 591.2 2002/04/05 04:25:56 ajc
1057 * Support nested folders in IMAP. We might want to change the delimiter.
1059 Revision 591.1 2002/04/04 23:25:30 ajc
1060 * Experimental hacking to handle subfolderization in IMAP. Seems to work ok
1061 but it makes Mozilla mail hang. Will investigate more later...
1063 Revision 591.0 2002/04/01 05:13:20 ajc
1064 * Tagged everything for 5.91 release
1066 Revision 590.168 2002/04/01 05:12:57 ajc
1067 * Prep for 5.91 release
1069 Revision 590.167 2002/03/29 04:43:15 ajc
1070 * Removed the BMBX command. Mailbox security update now runs automatically when the
1071 server starts and it sees data files version <5.91.
1073 Revision 590.166 2002/03/26 05:58:35 nbryant
1074 don't check for a database driver until after the openssl check is
1075 complete. if the ld paths aren't set up for the db installation this
1076 can interfere with the openssl check because it tries to run a program
1077 linked against the libraries we've been finding.
1079 Revision 590.165 2002/03/26 05:20:46 nbryant
1080 removed last vestiges of "#ifdef CIT_CLIENT" conditional compilation,
1081 which has been rendered unusable by the build system simplifications
1083 Revision 590.164 2002/03/26 05:13:32 nbryant
1084 fix monstrous shell script syntax in configure.ac
1086 Revision 590.163 2002/03/26 04:38:31 nbryant
1087 * support autoconf 2.53
1088 * make a note that people should be using libtool 1.4d
1089 * cut some of the more pointless bells and whistles out of the configure
1090 script in an effort to make it more maintainable
1091 * modularized ipc_c_tcp.c and client_crypto.o so that they're not tied
1092 to the curses stuff.
1093 * timezone/daylight and other FreeBSD fixes
1094 * more effort in the configure script to detect the common
1095 bastardizations (ahem, ports) of Berkeley DB without falling down
1097 Revision 590.162 2002/03/25 03:09:39 nbryant
1098 fix warning on platforms where pthread_t may be a pointer
1100 Revision 590.161 2002/03/25 00:01:50 nbryant
1101 * compatibility with Berkeley DB < 3.3
1102 * squished symbol clashes with the OK symbol from curses in certain *n[iu]x
1103 distributions. this is kind of a pain in the ass, but I had to rename our
1106 Revision 590.160 2002/03/22 04:35:38 ajc
1107 * Handle vCard registration updates for users other than the one currently
1108 logged in. (Allows administrative editing of contact information.)
1110 Revision 590.159 2002/03/20 19:03:27 ajc
1111 * Don't re-declare timezone variables ('cuz FreeBSD chokes on that)
1113 Revision 590.158 2002/03/19 04:34:42 ajc
1114 * mime_parser.c: minor changes for easier porting between Citadel and WebCit
1116 Revision 590.157 2002/03/19 04:19:33 ajc
1117 * Saw what IO did with strchr() and did the same in a few more places
1119 Revision 590.156 2002/03/17 00:08:02 error
1120 * mime_parser.c: more robust parsing of Content-Type header
1122 Revision 590.155 2002/03/16 05:22:59 ajc
1123 * Post an error message to Aide> when unlink() is unable to delete old
1126 Revision 590.154 2002/03/14 04:35:26 nbryant
1127 avoid symbol clash with curses' "timeout" function (which may be a macro
1130 Revision 590.153 2002/03/14 04:24:20 nbryant
1131 support window resizing in curses mode
1133 Revision 590.152 2002/03/13 04:11:11 nbryant
1134 fix up minor gotcha introduced by fgets change
1136 Revision 590.151 2002/03/13 03:58:29 ajc
1137 * Site-configurable option "Allow system Aides to gain access to mailboxes"
1139 Revision 590.150 2002/03/13 03:34:38 nbryant
1140 /* when running in curses mode, the scroll bar in most
1141 xterm-style programs becomes useless, so it makes sense to
1142 pause after a screenful of pages if the user has been idle
1143 for a while. However, this is annoying to some of the users
1144 who aren't in curses mode and tend to leave their clients
1145 idle. keepalives become disabled, resulting in getting booted
1146 when coming back to the idle session. but they probably have
1147 a working scrollback in their terminal, so disable it in this
1150 if (!is_curses_enabled())
1153 Revision 590.149 2002/03/12 23:34:37 nbryant
1154 use ncurses in preference to curses if it's installed; it handles
1155 background colors properly on dtterm, has a larger color pair palette,
1156 and has a bigger terminal database than solaris curses
1158 Revision 590.148 2002/03/12 22:47:17 nbryant
1159 curses fix: map our normal color pairs into the 0-7 range instead of 1-8,
1160 in order to make our pairs fit on terminals such as dtterm where COLOR_PAIRS=8.
1161 map the white/blue color pair onto 8 instead of 9, but only if that slot
1162 is available; fall back on white/black otherwise.
1164 it seems there may be an off-by-one error in the color pair manpages for
1165 the various curses packages (?) if not, our 0 entry is unusable, but that's
1166 the DIM_BLACK color and we don't use it anyway.
1168 Revision 590.147 2002/03/12 22:17:20 ajc
1169 * Give mailbox owners access to "who knows room" command
1171 Revision 590.146 2002/03/12 21:08:03 nbryant
1172 support color under Solaris curses
1174 Revision 590.145 2002/03/12 19:59:40 ajc
1175 * Access control change: do not treat mailboxes as guessname rooms for Aides.
1176 Open up INVT/KICK commands to non-Aides for their mailboxes.
1178 Revision 590.144 2002/03/12 04:30:52 nbryant
1179 if a filesystem node exists at /var/run/egd-pool, try to connect to it as
1180 the EGD (Entropy Gathering Daemon) or PRNGD (pseudorandom number
1181 generator daemon) socket and seed OpenSSL's RNG.
1183 this is necessary on solaris and other systems which lack /dev/urandom.
1185 Revision 590.143 2002/03/12 03:43:26 nbryant
1186 squished the last remaining calls to sprintf
1188 Revision 590.142 2002/03/12 03:36:55 nbryant
1189 replace calls to gets with fgets
1191 Revision 590.141 2002/03/12 03:19:09 nbryant
1192 more sprintf bashing. now the only ones left are in mime_parser
1194 Revision 590.140 2002/03/12 01:33:42 nbryant
1195 - pass -Wcast-qual to gcc
1196 - more sprintf bashing
1198 Revision 590.139 2002/03/12 00:03:43 nbryant
1199 more sprintf removals
1201 Revision 590.138 2002/03/11 06:00:21 nbryant
1202 use <db.h> before <db3/db.h> or <db4/db.h>
1203 this is the only way i can think of to make it work everywhere; people on
1204 systems like FreeBSD where the ports work the other way around will have to
1205 specify an extra -I flag in their CPPFLAGS variable.
1207 Revision 590.137 2002/03/11 05:42:46 nbryant
1208 removed all references to sprintf from several files (not all files yet)
1209 and replace with snprintf
1211 Revision 590.136 2002/03/11 04:16:20 nbryant
1212 warning fixes on sparc-sun-solaris2.8 with gcc 3.0.4, mostly for *printf
1215 Revision 590.135 2002/03/11 03:55:24 nbryant
1216 - fixes for building without OpenSSL
1217 - setenv doesn't exist on all systems, use putenv instead
1218 - support Solaris' curses implementation
1220 Revision 590.134 2002/03/09 22:52:04 ajc
1221 * Applied a patch submitted by <xperc@hotmail.com> to fix a potential buffer
1222 overflow problem in lprintf(). I also did the same fix to cprintf().
1224 Revision 590.133 2002/03/09 16:47:57 ajc
1225 * Added BMBX to fix a problem
1227 Revision 590.132 2002/03/09 06:18:37 ajc
1230 Revision 590.131 2002/03/09 05:22:29 ajc
1231 * this should do it.
1233 Revision 590.130 2002/03/09 05:02:20 ajc
1234 * Attempts to fix the access control crap
1236 Revision 590.129 2002/03/08 05:42:02 ajc
1237 * Patch to allow invitations and admin access to mailbox rooms. NEEDS TESTING!
1239 Revision 590.128 2002/03/07 04:30:37 ajc
1240 * Force recipient only in Mail>, not in all mailbox rooms
1242 Revision 590.127 2002/03/05 22:45:40 error
1243 * Autoconf fixes for DB4 support
1245 Revision 590.126 2002/03/05 04:47:49 ajc
1246 * vcard.c: another API update
1248 Revision 590.125 2002/03/04 05:29:39 ajc
1249 * Made a small API change to vcard.c for WebCit, brought the change over here too
1250 in order to keep vcard.c identical everywhere.
1252 Revision 590.124 2002/03/03 06:48:25 ajc
1253 * Client and server options to disable self-service user account creation
1255 Revision 590.123 2002/03/03 06:31:58 ajc
1256 * Added password starred-out entry to newprompt() and strprompt()
1257 * Applied the above setting to password set/change in <.A>ide <U>seredit
1259 Revision 590.122 2002/03/03 06:18:45 ajc
1260 * Implemented the CREU server command to administratively create user accounts
1261 * Added the ability to create new user accounts to <.A>ide <U>seredit
1263 Revision 590.121 2002/03/03 06:05:16 ajc
1264 * Split up some of the code in order to prepare for user accounts to be
1265 administratively created without logging in to them.
1267 Revision 590.120 2002/03/02 05:56:48 ajc
1268 * Properly implemented the network filter list. Finished the server module and
1269 did a client-side <.A>ide <S>ysconfig <F>ilterlist command.
1271 Revision 590.119 2002/03/01 04:24:20 ajc
1272 * Cosmetic change to Received: line
1274 Revision 590.118 2002/03/01 04:16:22 ajc
1275 * CtdlReadMessageBody() -- fixed bug that caused the prepend buffer to be
1276 discarded instead of prepended. "Received:" lines now work.
1278 Revision 590.117 2002/02/23 19:20:51 ajc
1279 * Do the use table purge in two phases to avoid crashy crashy
1281 Revision 590.116 2002/02/20 22:42:19 ajc
1282 * Started adding better management of source IP addressses in SMTP service
1284 Revision 590.115 2002/02/15 04:28:57 ajc
1285 * Wrote the expire/purge routine for the new use table
1287 Revision 590.114 2002/02/15 04:05:08 ajc
1288 * Began implementation of a networker use table that doesn't chew up oodles
1289 of CPU time. (It uses a cdb instead.)
1291 Revision 590.113 2002/02/15 03:40:06 ajc
1292 * Stu's changes (which he checked in without making any ChangeLog comments,
1293 bad Stu!) didn't build properly without curses. Added #ifdef's.
1295 Revision 590.112 2002/02/13 22:15:10 ajc
1298 Revision 590.111 2002/02/13 22:04:11 ajc
1299 * added vcard_to_html() function
1301 Revision 590.110 2002/02/13 15:48:55 ajc
1302 * Allow the READ command to return packets bigger than 1 byte. (ooops!)
1304 Revision 590.109 2002/02/12 20:15:25 ajc
1305 * Threw in a few more #ifdef's so the client build doesn't barf on
1307 * Added rc_prompt_control (<N>ext/<S>top active at paginator: on/off/user)
1309 Revision 590.108 2002/02/11 15:52:10 ajc
1310 * Don't crash when deleting "purge this vCard" messages
1312 Revision 590.107 2002/02/10 22:36:41 nbryant
1313 - replace cdb_trunc with a complete version of the code i had been
1314 working on; fallback code for db < 3.3.x needed
1315 - change 'can't connect to host.port' to 'can't connect to host:port'
1317 Revision 590.106 2002/02/08 22:39:08 ajc
1318 * If there's already a Subject line in memory, display it below the usual
1319 headers when the user hits <E>
1321 Revision 590.105 2002/02/08 22:36:23 ajc
1322 * Changed the logic for printing RFC822 addresses (again)
1323 * Implemented cdb_trunc() in database_sleepycat.c, using db_truncate()
1324 (We need to either provide an alternative implementation or require DB >=3.3)
1325 * Automatically Re: subject line in the client where appropriate
1327 Revision 590.104 2002/02/08 19:02:25 ajc
1328 * Added client and server side support for entering Subject lines in
1329 messages when not using RFC822.
1331 Revision 590.103 2002/02/08 18:10:07 ajc
1332 * When outputting a message in non-RFC822 format, don't display an Internet
1333 address if the user is local.
1335 Revision 590.102 2002/02/07 04:42:49 ajc
1336 * Silently refuse to add directory entries for Internet addresses already
1337 belonging to other users.
1338 * cdb_trunc() for CtdlDirectoryInit: implemented for GDBM, stubbed for DB
1340 Revision 590.101 2002/02/05 05:05:53 ajc
1341 * Don't crash when posting if the user doesn't have an Internet directory address
1343 Revision 590.100 2002/02/03 15:29:03 error
1344 * fixed a silly oversight in serv_crypto.c when removing the ETLS command
1346 Revision 590.99 2002/02/03 15:21:48 error
1347 * Remove the ETLS command, it is no longer needed
1349 Revision 590.98 2002/02/02 21:44:04 ajc
1350 * If a user has at least one valid Internet directory address, stamp it onto
1351 any outgoing messages.
1353 Revision 590.97 2002/02/01 05:11:26 ajc
1354 * Added a QDIR protocol command to do quick-and-dirty queries of the directory
1355 * In the client, check the directory for conflicts when selecting email addr.
1357 Revision 590.96 2002/01/31 05:13:44 ajc
1358 * When deleting a vCard from the Global Address Book room, remove the
1359 corresponding address in the directory. (Not tested.)
1361 Revision 590.95 2002/01/30 19:03:41 ajc
1362 * Added a new DeleteFunctionHook type of thing. These get called when a
1363 message is being deleted from a room.
1364 * When deleting messages from a room, do the AdjRefCount() calls (and now,
1365 the PerformDeleteHooks() calls) in a second pass. This keeps that stuff
1366 outside of the S_QUICKROOM critical section.
1368 Revision 590.94 2002/01/27 06:39:45 error
1369 * file_ops.c: fixed bug in cmd_read() which could cause server to report
1370 the wrong number of bytes for the client to download
1372 Revision 590.93 2002/01/26 21:33:38 ajc
1373 * More internet addressing and global directory stuff. I think it's all working now
1374 except for the purging of old entries.
1376 Revision 590.92 2002/01/26 11:02:37 error
1377 * citadel.spec cleaned up
1379 Revision 590.91 2002/01/26 09:23:40 error
1380 * setup now has a silent running mode (-q option) where it silently sets
1381 defaults for everything. This is intended for use in scripts such as
1382 the RPM packages, eliminating a step from the installation process.
1384 Revision 590.90 2002/01/26 09:19:16 error
1385 * citadel.spec has been completely overhauled, we can make RPMs now!
1387 Revision 590.89 2002/01/26 04:59:57 ajc
1388 * smtp FROM command now validates sender using the validate_recipients() loop
1389 (yeah, it's good for that too) making it directory-aware
1391 Revision 590.88 2002/01/26 04:01:10 error
1392 * Formatter now uses more of the available screen width
1394 Revision 590.87 2002/01/26 03:57:30 error
1395 * Revised status_line() display, it's much more compact now
1397 Revision 590.86 2002/01/26 03:50:26 error
1398 * Better error reporting in connection_died(), kills curses before printing
1399 error message, prints last errno.
1401 Revision 590.85 2002/01/25 05:19:03 ajc
1402 * Greatly simplified the logic for validating recipient addresses for incoming
1403 SMTP. This logic destroys the whitespace mangling for local names; I will
1406 Revision 590.84 2002/01/25 04:36:35 ajc
1407 * fixz to allow incoming vCards in the address book to actually get processed
1409 Revision 590.83 2002/01/24 06:52:54 error
1410 * citadel_decls.h: fix unresolved extern errors
1412 Revision 590.82 2002/01/23 05:04:05 ajc
1413 * Add vCards from incoming network messages in the GAB to the directory.
1415 Revision 590.81 2002/01/23 03:39:32 ajc
1416 * Added a new hook type for handling incoming network messages
1417 * Wrote a skeleton module for net filtering
1419 Revision 590.80 2002/01/22 10:46:25 error
1420 * read_message() and fmout() now accept a FILE to which to send their
1421 output; this fixes quoting in the fullscreen client
1423 Revision 590.79 2002/01/20 08:03:43 error
1424 * curses client: use the status line as "input" line in chat mode
1426 Revision 590.78 2002/01/20 07:43:07 error
1427 * serv_chat.c: Server no longer crashes when CHATLOG can't be opened
1429 Revision 590.77 2002/01/20 05:22:07 error
1430 * curses client: allow goodbye message to be seen on some terminals
1432 Revision 590.76 2002/01/19 16:56:31 error
1433 * Fixed color support, now works when rc_ansi_color is on or auto
1435 Revision 590.75 2002/01/19 15:10:25 error
1436 * Cosmetics for the client status line
1438 Revision 590.74 2002/01/19 11:59:33 error
1439 * A real status line for the text client
1441 Revision 590.73 2002/01/19 10:08:43 error
1442 * fix link for libcitserver.so to tools.o which I broke (oops!)
1444 Revision 590.72 2002/01/19 09:59:08 error
1445 * Full-screen curses support for Citadel text client
1447 Revision 590.71 2002/01/17 20:11:05 nbryant
1448 remove lock.c/lock.h; don't need them for what i was planning after all
1450 Revision 590.70 2002/01/17 10:48:36 error
1451 * cosmetic fixes in the new trace file functionality
1453 Revision 590.69 2002/01/17 10:32:14 error
1454 * lprintf() now logs the session ID for each log entry within a session.
1455 Also SMTP, IMAP, POP3 and Citadel protocol commands are differentiated.
1457 Revision 590.68 2002/01/17 10:16:09 error
1458 * migratenet.c: cygwin fix: include limits.h
1460 Revision 590.67 2002/01/17 10:13:31 error
1461 * serv_ical.c: set expire policy for My Calendar> to manual
1463 Revision 590.66 2002/01/17 07:18:11 ajc
1464 * Changed all "free software" references to "open source" in order
1465 to piss off Richard Stallman
1467 Revision 590.65 2002/01/17 00:22:35 nbryant
1468 added lock.[ch]: recursive read/write locking support. (not actually used yet)
1470 Revision 590.64 2002/01/15 12:41:53 error
1471 * Implement alternate_semantics (see comments in citadel.rc file)
1473 Revision 590.63 2002/01/15 11:07:51 ajc
1474 * vcard.c: updated vCard "object methods" to handle multiple instances of
1475 the same key name when necessary.
1477 Revision 590.62 2002/01/15 06:38:39 error
1478 * Update citadelapi.txt with CtdlUnregister* calls, LogHook calls
1480 Revision 590.61 2002/01/15 06:20:18 error
1481 * Modules can now unregister any of their hooks (though none yet take
1484 Revision 590.60 2002/01/14 08:49:13 error
1485 * Fixed bug in cmd_cre8() causing protocol to get out of sync when creating
1488 Revision 590.59 2002/01/13 04:46:31 ajc
1489 * Allow incoming SMTP to relay to other Citadel nodes for whom we are
1490 providing directory service.
1492 Revision 590.58 2002/01/13 04:06:33 ajc
1493 * Repaired the problems I created when moving the_mime_parser()'s variables
1494 from the stack to the heap. (Hint: sizeof(char *) is 4, not 4096)
1496 Revision 590.57 2002/01/11 15:46:57 error
1497 * Allow users to move/copy messages between personal rooms
1499 Revision 590.56 2002/01/11 04:59:00 ajc
1500 * Finished most of the work for the Global Address Book.
1502 Revision 590.55 2002/01/11 04:37:03 ajc
1503 * More code for the Global Address Book
1505 Revision 590.54 2002/01/11 02:57:35 error
1506 * Don't print **** when sending a page or mail from an anonymous-only room
1508 Revision 590.53 2002/01/10 21:22:37 ajc
1509 * Minor changes for global directory service
1511 Revision 590.52 2002/01/10 04:29:28 ajc
1512 * Minor updates for directory service
1514 Revision 590.51 2002/01/09 23:12:40 ajc
1515 * Allow users to zap mailbox rooms
1517 Revision 590.50 2002/01/09 04:37:32 ajc
1518 * Finished the callback stuff for vCard address extraction
1520 Revision 590.49 2002/01/09 04:05:53 ajc
1521 * Began writing code to harvest Internet e-mail addresses from vCards, and
1522 hacked together a temporary version (and writeup) of the IGAB command.
1524 Revision 590.48 2002/01/08 16:34:22 ajc
1525 * serv_vcard.c: cosmetic cleanup
1527 Revision 590.47 2002/01/06 22:44:21 error
1528 * Enable/disable encryption in client from command line and/or citadel.rc
1530 Revision 590.46 2002/01/06 21:25:26 ajc
1531 * sysdep.c: in client_write(), handle redirect_fp and redirect_sock *before*
1532 handling redirect_ssl, because these need to be done the same way regardless
1533 of client session crypto
1534 * serv_crypto.c: pasted a bunch of Nathan's #ifdef blocks from sysdep.c in
1535 order to gain greater portability (or even to get it to compile on splorph)
1537 Revision 590.45 2002/01/06 11:13:33 error
1538 * Enable SSL/TLS support in the client (again)
1540 Revision 590.44 2002/01/06 11:11:31 error
1541 * Enable SSL/TLS in the client
1543 Revision 590.43 2002/01/06 10:49:55 error
1544 * Add some #includes I apparently somehow missed
1546 Revision 590.42 2002/01/06 10:33:10 error
1547 * SSL/TLS support for the Citadel/UX wire protocol
1549 Revision 590.41 2002/01/06 08:54:58 error
1550 * user_ops.c: fixed become_session() when calling EVT_LOGOUT session hooks
1552 Revision 590.40 2002/01/05 22:31:22 ajc
1553 * Removed some protocol commands and writeups that are no longer necessary
1554 * Began some of the framework for the Global Address Book
1556 Revision 590.39 2002/01/05 12:44:43 error
1557 * serv_chat.c: allow a session to be killed while in chat
1559 Revision 590.38 2002/01/05 12:31:04 error
1560 * user_ops.c: become_session() when calling EVT_LOGOUT session hooks
1562 Revision 590.37 2002/01/05 04:51:36 error
1563 * stats now sorts its top 20 lists properly
1565 Revision 590.36 2002/01/04 20:57:36 nbryant
1568 Revision 590.35 2002/01/04 20:46:26 nbryant
1569 Makefile fix for cygwin (fix migratenet linkage)
1571 Revision 590.34 2002/01/04 20:43:26 nbryant
1572 configure/genstamp: check for struct tm.tm_gmtoff
1574 Revision 590.33 2002/01/03 22:01:17 ajc
1575 * Fixed mail to "sysop"
1577 Revision 590.32 2002/01/03 21:35:07 ajc
1578 * I think this is the last of the fixes for the new submit queue.
1580 Revision 590.31 2002/01/03 12:27:35 error
1581 * Fixed my name in docs/copyright.txt, why didn't I notice that before?
1583 Revision 590.30 2002/01/03 12:21:02 error
1584 * Autoconf support for recognizing OpenSSL
1586 Revision 590.29 2002/01/03 04:52:28 ajc
1587 * serv_network.c: migrated deliveries and bounces to the new message
1588 submission subsystem. NOT TESTED.
1590 Revision 590.28 2002/01/01 21:32:10 ajc
1591 * Finished the updates to serv_smtp.c, although I think there may be a
1592 problem with one-too-many reference counts when a message is submitted
1595 Revision 590.27 2001/12/31 20:15:13 ajc
1596 * Almost finished converting serv_smtp.c to the new message submission
1597 framework. Still not done yet; don't use this.
1599 Revision 590.26 2001/12/30 06:20:46 error
1600 * More keys while reading messages: Q or S same as Ctrl-C, N same as Ctrl-O.
1602 Revision 590.25 2001/12/30 05:50:46 error
1603 * Security: Citadel now drops privileges when called from telnetd, also
1604 checks to make sure you didn't set the setuid/setgid bits. No more
1607 Revision 590.24 2001/12/29 05:19:32 ajc
1608 * Minor cosmetic hack
1610 Revision 590.23 2001/12/29 04:21:22 nixo
1611 stupid me. I didn't realize that asking for the header did what I wanted
1612 so I changed my little 'y' hack to not bother reading the text of the
1613 message. a little saving on the bandwidth.
1615 Revision 590.22 2001/12/28 22:32:38 nixo
1616 Added a "read m<y> next" function in read mode. It will skip to the next
1617 message by the user in the current message list (whatever mode you're in
1618 be it read forward, last 50, whatever.)
1620 Revision 590.21 2001/12/28 11:06:53 error
1621 * More server support for hostnames up to 63 characters (oops I missed a spot)
1623 Revision 590.20 2001/12/28 09:39:10 error
1624 * Client support for hostnames up to 63 characters: truncated at 24 in
1625 short who list, full display in long who list.
1627 Revision 590.19 2001/12/28 09:28:04 error
1628 * Server support for hostnames up to 63 characters
1630 Revision 590.18 2001/12/26 05:01:30 ajc
1631 * Added a new developer ID for Anticlimactic Teleservices
1633 Revision 590.17 2001/12/23 10:00:43 error
1634 * Pages are once again formatted to the caller's screen width.
1636 Revision 590.16 2001/12/23 09:57:47 error
1637 * tools.c: added parameter to fmt_date() to allow for printing the seconds
1638 along with the time, e.g. 12:34 pm or 12:34:56 pm
1640 Revision 590.15 2001/12/20 04:54:26 ajc
1641 * If you paid for this software, someone is ripping you off.
1643 Revision 590.14 2001/12/18 08:24:56 nbryant
1644 more lovely configure tweaks (include paths for db)
1646 Revision 590.13 2001/12/18 06:04:08 ajc
1647 * Moved the buffers in the_mime_parser() from the stack to the heap, because
1648 it was crashing boxen with small stack sizes.
1650 Revision 590.12 2001/12/18 05:54:16 ajc
1651 * Added more load_floorlist() commands to the beginning and end of functions
1652 in the client that manipulate the floor list. This fixes a bug in which
1653 new floors don't show up right away after being created.
1655 Revision 590.11 2001/12/17 08:14:26 nbryant
1656 restored the checks for /usr/include/db3 and /usr/local/include/db3
1657 in configure. there are too many variations on db installation; this is
1660 Revision 590.10 2001/12/17 08:00:45 nbryant
1661 set the pthreads stack size to 128K because FreeBSD's default of 64K
1662 seems too small. fixes crashes under FreeBSD.
1664 Revision 590.9 2001/12/16 00:50:14 error
1665 * Added usersupp.lastcall to the parameters returned from the PASS/PAS2
1666 commands in logged_in_response().
1668 Revision 590.8 2001/12/14 21:33:18 nbryant
1669 finally changed configure to complain if there's no database driver ;)
1671 Revision 590.7 2001/12/14 08:29:30 error
1672 * Security: trace file is now only readable by owner, since it contains
1673 plain text passwords.
1675 Revision 590.6 2001/12/14 07:04:24 ajc
1676 * Now you can send mail to yourself. Hi from Stu.
1678 Revision 590.5 2001/12/14 06:58:12 ajc
1681 Revision 590.4 2001/12/13 22:36:30 nbryant
1682 make configure search for /usr/local/BerkeleyDB.4.0
1684 Revision 590.3 2001/12/13 22:29:57 nbryant
1685 make it compile with Berkeley DB 4.0.x
1687 Revision 590.2 2001/12/11 21:31:07 nbryant
1688 - test for -ldb3 before -ldb
1690 Revision 590.1 2001/12/11 20:04:41 nbryant
1691 - fix library flags, includes for portability
1692 - malloc.h is deprecated
1693 - fix genstamp, hopefully
1694 - fix size_t *printf handling for portability
1696 Revision 590.0 2001/12/08 03:31:41 ajc
1699 Revision 580.95 2001/12/08 03:30:37 ajc
1700 * Final changes to networking docs for 5.90
1702 Revision 580.94 2001/12/06 05:13:34 ajc
1703 * Added the documentation for room sharing and listserv
1705 Revision 580.93 2001/12/04 05:24:15 ajc
1706 * Added two more bytes to the possible length of shared secrets in networking
1707 due to some legacy support requirements.
1709 Revision 580.92 2001/12/04 05:16:19 ajc
1710 * mime_parser.c: change to memory allocation algorithm ... some badly done
1711 messages were crashing the server
1713 Revision 580.91 2001/12/03 22:48:16 ajc
1714 * ooops. Look for the QR2_SYSTEM flag in QRflags2, not QRflags.
1716 Revision 580.90 2001/12/03 17:02:50 ajc
1717 * dynloader.c: fixed improperly done declaration and mallok()
1719 Revision 580.89 2001/12/03 04:28:02 ajc
1720 * mime_parser.c: now uses built-in functions to decode base64 and
1721 quoted-printable attachments, instead of piping data to outboard programs.
1723 Revision 580.88 2001/12/03 02:45:46 ajc
1724 * Began implementing some code to handle multiple recipients (but #define'd
1725 it all out because we're approaching a release)
1727 Revision 580.87 2001/12/03 01:50:17 ajc
1728 * When sending mail, copy to the sender's "Sent Items>" room instead of to
1729 the sender's "Mail>" room.
1731 Revision 580.86 2001/12/02 23:36:24 ajc
1732 * On a new system, set the default new user level to 4 instead of 1.
1734 Revision 580.85 2001/12/02 23:27:01 ajc
1735 * Removed references to the old networker from the documentation. Did not
1736 write any new documentation, so what's there now is kind of sparse.
1738 Revision 580.84 2001/12/02 02:42:55 ajc
1739 * Implemented new room flag QR2_SYSTEM which supresses the room from all
1740 room listings, even for Aides (but it's still gotoable). This will be used
1741 for rooms which hold system configuration and message queues.
1743 Revision 580.83 2001/12/01 19:23:26 ajc
1744 * clientsocket.c: implement socket timeouts for read operations
1746 Revision 580.82 2001/12/01 17:00:23 ajc
1747 * serv_smtp.c: when multiple MX's are the same preference, randomize them
1749 Revision 580.81 2001/12/01 07:18:28 ajc
1750 * Fixed an SMTP delivery problem that was causing certain classes of
1751 transient errors to cause a message to never be delivered.
1753 Revision 580.80 2001/12/01 05:26:01 ajc
1754 * Added a command "SMTP" to the Citadel protocol, to do some unimportant
1755 utility/diagnostic functions.
1757 Revision 580.79 2001/11/27 17:08:29 ajc
1758 * When calling an external editor, set the environment variable
1759 WINDOW_TITLE to an appropriate value.
1761 Revision 580.78 2001/11/26 03:27:08 ajc
1762 * new algorithm to load the use table
1764 Revision 580.77 2001/11/17 19:55:08 ajc
1765 * Updated some of the documentation
1767 Revision 580.76 2001/11/16 04:43:12 ajc
1768 * Eliminated the sock_puts_crlf() function and ensured that all SMTP client
1769 commands are sent out using a single sock_write() call. There are broken
1770 SMTP server implementations that can't handle SMTP commands split across
1771 multiple writes. (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
1773 Revision 580.75 2001/11/15 04:11:30 ajc
1774 * hack.doc: updated to reflect Cit86Net compatibility fields removed from the
1775 file format (since we dumbed down the gateway software)
1776 * ipc_c_tcp.c: removed SOCKS4 support. Nobody uses it anymore.
1777 * ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
1778 if a numeric port number was specified instead of a service name
1780 Revision 580.74 2001/11/14 02:59:01 ajc
1781 * Network run frequency is now a site-definable setting
1783 Revision 580.73 2001/11/13 22:05:23 ajc
1784 * Re-introduced the ability to enter IGnet mail into the system.
1786 Revision 580.72 2001/10/29 22:59:22 ajc
1787 * Renamed "SuppMsgInfo" to "MetaData" because that's what it is
1789 Revision 580.71 2001/10/29 16:39:54 ajc
1790 * Finished the migratenet utility (finally).
1792 Revision 580.70 2001/10/28 05:18:51 ajc
1793 * migratenet almost finished
1795 Revision 580.69 2001/10/26 04:26:45 ajc
1796 * more work on the net migrator
1798 Revision 580.68 2001/10/23 03:37:33 ajc
1799 * Threw a few more lines of code into migratenet.c
1801 Revision 580.67 2001/10/20 18:10:50 ajc
1802 * migratenet.c: added (not even close to being finished)
1804 Revision 580.66 2001/10/17 21:07:20 nbryant
1805 further format string cleanups (for i686-linux type sizes)
1807 Revision 580.65 2001/10/17 20:41:07 nbryant
1808 - declare *printf format specifiers if gcc detected
1809 - format string fixes (compiles w/o warnings on alpha osf/1)
1811 Revision 580.64 2001/10/17 19:40:38 nbryant
1812 warning fixes and cleanups for 64-bit machines
1814 Revision 580.63 2001/10/16 20:47:37 nbryant
1815 - backed out -export-dynamic, it doesn't do anything and i've found the real
1817 - remove declaration for make_message
1819 Revision 580.62 2001/10/16 19:18:49 nbryant
1820 backed out that compiler detection change for Tru64. it's not incredibly
1821 important and results in broken autoconf macro expansions.
1823 Revision 580.61 2001/10/16 18:36:33 nbryant
1824 reinstate -export-dynamic for citserver in case libtool decides to build
1825 static libraries (why?)
1827 Revision 580.60 2001/10/16 18:21:53 nbryant
1828 add some explanatory text to bootstrap
1830 Revision 580.59 2001/10/16 17:43:53 nbryant
1831 - further configure tweaks for FreeBSD and Tru64 Unix
1832 - updated to latest libtool configure fragment
1833 - there are two functions named make_message. (?) so declare them both
1836 Revision 580.58 2001/10/16 01:48:55 nbryant
1837 - configury tweaks for a /usr/include/db3 goof and Digital/Tru64 Unix
1838 - #ifdef out inline on non-GCC compilers
1840 Revision 580.57 2001/10/15 19:50:50 ajc
1841 * Fixed a bug in the loopzapper that was corrupting the use table saved copy.
1842 * Post notification in Aide> when the loopzapper catches a message.
1844 Revision 580.56 2001/10/12 22:41:11 ajc
1845 * Wrote the rest of the use table code. Finished except for a bug.
1847 Revision 580.55 2001/10/10 18:35:12 ajc
1848 * Comments & cosmetics for previous update
1850 Revision 580.54 2001/10/10 17:12:54 ajc
1851 * Bugfix for MSG0 command to properly handle multipart/alternative
1853 Revision 580.53 2001/10/06 21:32:29 ajc
1854 * Finished the concurrency check for network polling. (Now works both for
1855 polling and being polled. Severe UUCP deja vu.)
1857 Revision 580.52 2001/10/06 20:28:06 ajc
1858 * Began implementing some concurrency stuff for the networker
1860 Revision 580.51 2001/10/06 19:51:47 ajc
1861 * Stripped the build of obsolete parts of the old networker no longer in use.
1863 Revision 580.50 2001/10/03 20:05:50 ajc
1864 * serv_smtp.c: implement RFC2920 ESMTP "pipelining" extension on the server
1865 side. (No changes required other than advertising the extension.)
1867 Revision 580.49 2001/10/03 03:15:16 ajc
1868 * Implemented BOUNCE BOUNCE BOUNCE
1870 Revision 580.48 2001/10/02 03:04:30 ajc
1871 * Allow non-Aides to terminate sessions belonging to them
1873 Revision 580.47 2001/09/24 18:55:13 ajc
1874 * Completed migrating the "netpoll" utility into the serv_network module.
1875 Removed this utility.
1877 Revision 580.46 2001/09/21 20:58:25 nbryant
1878 support different log_archive prototype in DB versions prior to 3.3
1880 Revision 580.45 2001/09/20 04:17:10 ajc
1881 * Inbound network authentication working. Fixed a bug in the split-horizon
1882 algorithm. Still need to move the 'netpoll' command into the server.
1884 Revision 580.44 2001/09/18 04:05:04 ajc
1885 * Added host/IP and port to node config (client side only)
1887 Revision 580.43 2001/09/17 23:55:45 ajc
1888 * Support for IGnet routing (not tested)
1890 Revision 580.42 2001/09/16 05:44:51 ajc
1891 * serv_smtp.c: instead of doubling delivery retry times unbounded, set a
1892 maximum retry time of SMTP_RETRY_MAX (currently set to 12 hours)
1894 Revision 580.41 2001/09/09 16:19:29 error
1895 * Updated PAM configuration file citadel.pam for Red Hat 7.x.
1897 Revision 580.40 2001/09/09 03:19:38 ajc
1898 * cdb_cull_logs() now removes log files as soon as the log_archive() function
1899 says it's ok to do so.
1901 Revision 580.39 2001/09/08 18:58:38 ajc
1902 * More changes to the new networker. Added client command for room sharing.
1904 Revision 580.38 2001/09/07 04:05:27 ajc
1905 * You guessed it: still more code for the new networker.
1907 Revision 580.37 2001/09/06 05:47:29 nbryant
1908 check for /usr/include/db3 (for RedHat 6.2; others?)
1910 Revision 580.36 2001/09/06 05:23:14 nbryant
1911 #include fix for glibc 2.1.3
1913 Revision 580.35 2001/09/06 04:02:34 ajc
1914 * A few more updates to the networker
1916 Revision 580.34 2001/09/06 03:32:41 nbryant
1917 build fix for sparc-sun-solaris2.8; i think the dependencies should be
1918 set up properly for all platforms now.
1920 Revision 580.33 2001/09/06 02:55:27 nbryant
1923 Revision 580.32 2001/09/06 02:49:22 ajc
1924 * Fixed paste-post mode (<.E>nter <A>scii) to append instead of replace when
1925 the user hits <C>ontinue (bug reported by Stu Mark)
1927 Revision 580.31 2001/09/06 01:26:39 nbryant
1928 - port to Cygwin (DLL support, etc.)
1929 - don't build SMTP module if there's no resolver library (eg on Windows)
1931 Revision 580.30 2001/09/06 00:54:01 nbryant
1932 updated to libtool 1.4.1 and automake 1.5
1934 Revision 580.29 2001/08/29 02:51:25 ajc
1935 * More work on the new networker.
1937 Revision 580.28 2001/08/25 05:04:57 ajc
1938 * Worked a little more on the in-server replacement for netproc
1940 Revision 580.27 2001/08/22 04:18:17 ajc
1941 * Realized that there was lots of similarly broken code in
1942 process_rfc822_addr(). Wrote two new utility functions in tools.c
1943 stripout() and stripallbut() and used them where appropriate. This should
1944 take care of all possible infinite loops.
1946 Revision 580.26 2001/08/22 03:43:11 ajc
1947 * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
1948 server to jump into an endless loop when an e-mail address contained
1949 unbalanced angle brackets.
1951 Revision 580.25 2001/08/15 04:26:02 ajc
1952 * Added split horizon and delete-after-spool to the new networker
1954 Revision 580.24 2001/08/14 02:41:57 ajc
1955 * Began the migration of netproc into part of the serv_network.c module instead
1956 of a standalone program.
1958 Revision 580.23 2001/08/11 22:35:40 nbryant
1959 updated citadel-with-berkeley-db.txt.
1960 - updated build instructions
1961 - improved backup procedures to be safer and more space-efficient.
1963 Revision 580.22 2001/08/11 19:18:41 ajc
1964 * Realized that I am stupid and started implementing server commands to load
1965 and save network configurations, when I had already lovingly implemented the
1966 CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
1967 in the Local System Configuration> room. Ripped the newer crap out.
1968 * Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
1970 Revision 580.21 2001/08/11 03:51:56 ajc
1971 * Removed the idle timer from the client. Dialup is dead.
1973 Revision 580.20 2001/08/06 21:33:29 nbryant
1974 made the client fall back on port 504 if there's no /etc/services entry
1976 Revision 580.19 2001/08/05 23:54:14 ajc
1977 * prep for new network node infrastructure
1979 Revision 580.18 2001/08/03 16:53:21 ajc
1980 * Added some more "break" statements to the main switch..case loop in
1981 citadel.c where they were needed.
1983 Revision 580.17 2001/08/03 16:43:53 ajc
1984 * database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
1985 return code as a warning instead of an error worthy of aborting the server.
1986 See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
1988 Revision 580.16 2001/07/30 03:46:14 nbryant
1989 made ForEachUser use a read-only cursor, too. there is now only one piece of
1990 code in Citadel proper (not the database driver) that needs transactions.
1991 that's check_ref_counts; in other words it's the only thing standing in the way
1992 of a clean implementation of retryable transactions.
1994 Revision 580.15 2001/07/29 22:24:04 nbryant
1995 - added a new function to the database interface, cdb_close_cursor(). always
1996 call this when you're finished with a traversal but didn't bother reading all
1999 - removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
2000 no longer needed because of the read-only cursor support.
2002 Revision 580.14 2001/07/29 20:56:09 nbryant
2003 change ForEachRoom to use read-only cursors by default. it can be overridden to
2004 still use read/write cursors by doing:
2006 cdb_begin_transaction();
2008 cdb_end_transaction();
2010 the only place I found where it appears necessary to do so is check_ref_counts,
2011 so this checkin affects that function too.
2013 Revision 580.13 2001/07/29 20:06:33 nbryant
2014 generate symlinks to .libs in modules directory
2016 Revision 580.12 2001/07/28 00:02:50 nbryant
2017 implemented read-only cursors. one of the advantages to these is that
2018 transactions can be avoided; a cursor operation that occurs within a
2019 transaction will often acquire a read lock on every single database page. in
2020 general, the Sleepycat documentation recommends avoiding transaction-protected
2021 read-only operations where practical. read/modify/write operations can still
2022 be transaction protected, of course.
2024 to use a read-only cursor, call cdb_rewind without a previous call to
2025 cdb_begin_transaction. the DB driver will notice this and prevent the current
2026 thread from modifying data or starting a transaction until the cursor is
2029 Revision 580.11 2001/07/27 20:45:44 nbryant
2030 libtool has matured a lot since the last time i looked at it (years ago)
2031 so we now use it to handle the details of building shared libraries and
2032 the linker flags for the main executable.
2034 in theory this should bring a lot more portability to the dynloader
2035 subsystem and enable us to do things like transparently detect GNU vs Sun
2036 linkers on solaris, for example
2038 Revision 580.10 2001/07/27 03:29:04 nbryant
2039 missed one thing in the autoconf move
2041 Revision 580.9 2001/07/27 02:57:43 nbryant
2042 support one cursor per database rather than one global cursor
2044 Revision 580.8 2001/07/27 01:32:07 nbryant
2045 remove the automatic transaction demarcation on singleton read operations
2047 Revision 580.7 2001/07/26 21:43:46 nbryant
2048 - move to autoconf 2.52
2049 - random warning fix
2052 Revision 580.6 2001/07/24 13:17:54 ajc
2053 * New UI for mailing list setup
2054 * rooms.c: code cleanup
2057 Revision 580.5 2001/07/20 23:48:23 nbryant
2058 fix build on solaris, check default install location for db 3.2, and silence
2061 Revision 580.4 2001/07/16 14:24:30 ajc
2062 * Silly cosmetic change to keep the wholist ordered by ascending session number
2064 Revision 580.3 2001/07/13 00:01:36 ajc
2065 * Shuffled around some of the housekeeping loop code
2067 Revision 580.2 2001/07/11 17:01:10 ajc
2068 * database_sleepycat.c: small changes to log messages
2070 Revision 580.1 2001/07/11 04:35:40 nbryant
2071 moved dret initialization in cdb_fetch, just in case
2073 Revision 580.0 2001/07/03 03:07:06 ajc
2076 Revision 573.143 2001/07/03 03:06:50 ajc
2077 * Last minute doco update for 5.80
2079 Revision 573.142 2001/07/01 15:44:32 nbryant
2080 configure.in: check for Berkeley DB first.
2082 Revision 573.141 2001/06/27 23:34:30 ajc
2083 * Added some verbage to messages/roomaccess to placate a user who keeps
2084 bitching about privacy policy.
2086 Revision 573.140 2001/06/19 03:41:04 ajc
2087 * Ooops... last_cull needs to be declared static
2089 Revision 573.139 2001/06/19 03:33:19 ajc
2090 * imap_fetch.c: download MIME parts without decoding first. We like that.
2091 * database_sleepycat.c: added automatic culling of log files which have not
2092 been written to in five days.
2094 Revision 573.138 2001/06/17 19:42:23 nbryant
2095 fix all the <time.h> vs. <sys/time.h> issues, hopefully
2097 Revision 573.137 2001/06/07 03:28:37 ajc
2098 * More tweaks to the MIME parser
2100 Revision 573.136 2001/06/06 15:44:37 ajc
2101 * msgbase.c: output extra newline at end of RFC822 message if necessary to
2102 ensure that 000 termination string appears on a line by itself.
2104 Revision 573.135 2001/06/06 04:22:25 ajc
2105 * Moved memreadline() to tools.c
2106 * internet_addressing.c: fixed conversion of fields to (hopefully) never get
2107 into an active loop when encountering badly formed headers
2109 Revision 573.134 2001/05/27 05:23:03 ajc
2110 * Added a "no new messages" response in the client, displayed when a read
2111 command turns up a zero message count.
2113 Revision 573.133 2001/05/18 20:12:09 ajc
2114 * Fixed bug in mime_parser.c that caused parts to be dropped when the last
2115 boundary was the very last line of the message.
2116 * serv_smtp.c: toned down some of the command response verbage.
2118 Revision 573.132 2001/04/28 04:42:55 ajc
2119 * Updated some of the docs. Bumped version number to 5.80 in anticipation
2120 of going into a release cycle soon.
2122 Revision 573.130 2001/04/26 03:31:00 ajc
2123 * Finished the implementation of per-message seen/unseen logic, both in the
2124 server proper and in IMAP. Citadel protocol uses new "seen" command.
2126 Revision 573.129 2001/04/21 04:55:51 ajc
2127 * Began implementation of per-message seen/unseen attribute
2129 Revision 573.128 2001/04/20 03:39:54 ajc
2130 * IMAP LIST/LSUB: made it case insensitive. Also minor IMAP code cleanup.
2132 Revision 573.127 2001/04/17 00:35:19 cough
2133 * Modified rooms.c in the client so that it would allow inviting into
2134 public rooms. This is important since there is now a V_LOCKOUT
2135 flag which prevents users who have been kicked from rejoining
2136 a room unless/until you invite them back in.
2138 Revision 573.126 2001/04/16 19:21:14 cough
2139 * Fixed bug in room_ops.c that wasn't allowing aides to goto passworded
2140 rooms without knowing the password.
2142 Revision 573.125 2001/04/14 04:26:44 ajc
2143 * Fixed an unterminated string bug in IMAP APPEND. Storing messages should
2146 Revision 573.124 2001/04/10 01:04:10 ajc
2147 * Finished coding IMAP APPEND. It works, but there's a bug in it somewhere
2148 that is corrupting the memory.
2150 Revision 573.123 2001/04/03 00:47:23 ajc
2151 * Began implementing IMAP APPEND
2153 Revision 573.122 2001/04/01 22:05:44 cough
2154 * *Actually* fixed a botched ChangeLog entry.
2156 Revision 573.121 2001/04/01 22:04:28 cough
2157 * Fixed a botched ChangeLog entry.
2159 Revision 573.120 2001/04/01 22:03:10 cough
2160 * Changed two fclose()s to pclose()s.
2162 Revision 573.119 2001/03/25 11:52:36 error
2163 * serv_pop3.c: Fixed APOP. Now logs in properly. Also cleaned up some non-
2164 RFC-compliant error messages.
2166 Revision 573.118 2001/03/21 05:47:49 ajc
2167 * Added the new IMAP mailbox string compare submitted by Daniel Malament.
2169 Revision 573.117 2001/03/20 01:33:55 ajc
2170 * Added the (\NoInferiors) tag to all rooms listed in IMAP. This made Mozilla
2173 Revision 573.116 2001/03/13 17:19:33 ajc
2174 * support (BODY[HEADER.FIELDS(BLAH BLAH BLAH)]) and HEADER.FIELDS.NOT
2176 Revision 573.115 2001/03/12 01:27:42 ajc
2177 * Implemented SUBSCRIBE and UNSUBSCRIBE commands
2179 Revision 573.114 2001/03/11 23:00:29 ajc
2180 * Mega sexy hack to deliver express messages THROUGH IMAP! uber coolness!!
2182 Revision 573.113 2001/03/11 22:09:20 ajc
2183 * Replaced the "citlogin" binary wrapper with the "loginwrapper.sh" script.
2185 Revision 573.112 2001/03/11 20:06:53 ajc
2186 * Fixed bug that created incorrect roomnames when sending pages
2188 Revision 573.111 2001/03/11 19:23:32 ajc
2189 * IMAP DELETE command ... also split up access control for room delete cmds
2191 Revision 573.110 2001/03/10 17:29:07 ajc
2192 * Implement proper access control for deleting messages from IMAP
2194 Revision 573.109 2001/03/07 04:02:27 ajc
2195 * Fixed some small IMAP bugs
2197 Revision 573.108 2001/03/06 04:44:00 ajc
2198 * Probable completion of STATUS, COPY, STORE, and EXPUNGE commands in IMAP
2200 Revision 573.107 2001/03/06 03:31:58 nbryant
2201 database-related cleanups and paranoia tests;
2202 fixed a transaction-leak/deadlock problem in cdb_delete;
2203 solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
2205 Revision 573.106 2001/03/05 04:59:31 ajc
2208 Revision 573.105 2001/03/04 23:49:41 ajc
2209 * IMAP EXPUNGE responses -should- be correct now
2211 Revision 573.94 2001/02/20 00:02:56 ajc
2212 * IMAP: implemented the STATUS command (sort of).
2214 Revision 573.93 2001/02/19 22:24:41 ajc
2215 * IMAP server: added untagged, unsolicited server messages for newly arrived
2216 messages, and messages expunged by another session.
2218 Revision 573.92 2001/02/17 05:53:35 ajc
2219 * Repaired the creation of page log rooms in the wrong namespace when the
2220 recipient does not yet have his/her log room created.
2221 * Rewrite "EXPI messages" to run in two passes: one to gather messages to
2222 purge and the next to delete them. Works better in transactionland.
2224 Revision 573.91 2001/02/14 08:11:27 error
2225 * citadel.rc: added $Id$ (it's about time!)
2227 Revision 573.90 2001/02/14 04:23:54 ajc
2228 * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
2229 This was causing some clients (such as Pine) to lock up.
2231 Revision 573.89 2001/02/13 04:06:14 ajc
2232 * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
2233 BODY[n] data items. I think. So much protocol crud, so little time...
2235 Revision 573.88 2001/02/13 01:18:44 ajc
2238 Revision 573.87 2001/02/12 04:31:34 ajc
2239 * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
2241 Revision 573.86 2001/02/08 04:45:58 ajc
2242 * Fixed namespace problems resulting from the automatic namespece prefixing
2243 added to create_room(). Also added the ability to specify "create a mailbox
2244 but I've already supplied the namespace prefix" for situations where the
2245 namespace isn't that of the logged in user.
2246 * Made the POP3 server response messages slightly less humorous
2248 Revision 573.85 2001/02/06 04:44:12 ajc
2249 * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
2251 Revision 573.84 2001/02/06 02:09:38 ajc
2252 * citadel.rc: changed the default for local_screen_dimensions to 1, since
2253 Internet users now outnumber dialup users 100 to 0.
2254 * room_ops.c: added a really_create option to create_room(). Also moved the
2255 generation of personal namespace into that function. MODULE OWNERS PLEASE
2256 CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
2257 * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
2258 * serv_imap.c: finished the CREATE command (finally)
2260 Revision 573.83 2001/02/05 05:20:22 ajc
2261 * Made some changes to functions which translate between Citadel room names
2262 and IMAP folder names. They're still buggy.
2264 Revision 573.82 2001/02/04 23:17:28 ajc
2265 * Implemented the IMAP CREATE command
2267 Revision 573.81 2001/02/04 02:40:07 ajc
2268 * more imap. imap sucks. die crispin die.
2270 Revision 573.80 2001/02/03 10:02:12 error
2271 * serv_ical.c: Verify that objects posted to My Calendar> are of type
2272 text/x-calendar or text/calendar; abort saving if not
2274 Revision 573.79 2001/02/03 09:30:46 error
2275 * serv_ical.c: now creates a My Calendar> personal room, sets attributes
2277 Revision 573.78 2001/02/03 08:21:00 error
2278 * serv_ical.c and serv_ical.h added; skeleton code for now
2280 Revision 573.77 2001/02/02 20:18:18 ajc
2281 * Changed the error message in cdb_delete() to actually *say* cdb_delete
2282 instead of cdb_store. Useful to know which function failed...
2284 Revision 573.76 2001/02/01 04:08:03 ajc
2285 * IMAP minor change to mailbox name output
2286 * Increased size of buffer in lprintf()
2288 Revision 573.75 2001/01/28 09:50:02 error
2289 * sysdep.c: lprintf() now generates timestamps
2291 Revision 573.74 2001/01/28 07:35:04 error
2292 * serv_bio.c: RBIO now also returns stats about a user, see session.txt
2294 Revision 573.73 2001/01/16 04:03:13 ajc
2295 * yeesh ... more on the IMAP BODYSTRUCTURE
2297 Revision 573.72 2001/01/16 01:51:12 ajc
2298 * imap bodystructure
2300 Revision 573.71 2001/01/16 00:46:40 ajc
2301 * Changed the MIME parser API *again* because we now need the ability to
2302 supply callback functions to be executed before and/or after parsing a
2303 multipart. (Need this for IMAP BODYSTRUCTURE output. Crispin sucks.)
2305 Revision 573.70 2001/01/15 23:59:26 ajc
2306 * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
2308 Revision 573.68 2001/01/15 20:34:04 ajc
2309 * "Path:" removed for now because it confuses brain-dead Microsoft shitware
2310 into thinking that mail messages are newsgroup messages instead. When we
2311 add NNTP support back into Citadel we'll have to add code to only output
2312 this field when appropriate.
2314 Revision 573.67 2001/01/15 16:30:31 ajc
2315 * temporary implementation of 901 asynchronous express messages
2317 Revision 573.66 2001/01/14 14:55:39 ajc
2318 * Changed the format of <.W>holist <L>ong
2320 Revision 573.65 2001/01/13 06:40:26 nbryant
2321 merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
2322 which should now be considered closed.
2324 Revision 573.64 2001/01/13 06:12:15 ajc
2325 * Added the ASYN command
2327 Revision 573.63 2001/01/12 22:05:46 ajc
2328 * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
2329 reads a list containing stealth mode sessions.
2331 Revision 573.62 2001/01/09 05:39:45 ajc
2332 * Merged in code from the TRANSACTIONS branch for testing.
2334 Revision 573.61 2000/12/30 06:17:17 ajc
2335 * Still more work on IMAP. Damn this is tedious.
2337 Revision 573.60 2000/12/30 04:55:05 ajc
2338 * more buffer size stuff
2340 Revision 573.59 2000/12/27 20:19:51 ajc
2341 * The size constant "256" which shows up everywhere as a buffer size has now
2342 been changed to SIZ. And, SIZ has been defined now as 1024, not 256, because
2343 we need 1024 byte buffers for most Internet protocols.
2345 Revision 573.58 2000/12/27 05:09:58 ajc
2346 * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
2348 Revision 573.57 2000/12/26 03:46:50 ajc
2351 Revision 573.56 2000/12/25 22:50:43 ajc
2352 * Added an API function to extract and unfold specific RFC822 fields.
2353 * imap-->fetch-->envelope-->in-reply-to now works
2354 * More robust checking and reporting of temp file errors in the client
2356 Revision 573.55 2000/12/25 20:43:24 ajc
2357 * imap_fetch.c: added support for fetch-->envelope-->from
2359 Revision 573.54 2000/12/20 04:09:24 ajc
2360 * A few memory handling fixes to netproc.
2362 Revision 573.53 2000/12/20 01:57:37 ajc
2363 * netproc.c: added bounds check to fpgetfield()
2365 Revision 573.52 2000/12/19 20:41:55 ajc
2366 * Fixed generation of unique file names for network uploads etc.
2368 Revision 573.51.2.11 2000/12/26 05:30:55 nbryant
2369 remove extraneous transaction around dynamic module initializations. this will
2370 fix the crash on database creation.
2372 Revision 573.51.2.10 2000/12/24 23:00:58 nbryant
2373 clean: also remove parsedate.c
2375 Revision 573.51.2.9 2000/12/20 01:38:42 nbryant
2376 require transactional cursors
2378 Revision 573.51.2.8 2000/12/20 00:30:01 nbryant
2379 release any stale db handles at the end of a server command
2380 (unfinished transactions will be aborted to annoy lazy programmers)
2382 Revision 573.51.2.7 2000/12/19 06:18:27 nbryant
2383 set sched_yield as sleepycat's yield function. this should improve locking
2386 Revision 573.51.2.6 2000/12/19 02:22:29 nbryant
2387 added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
2389 Revision 573.51.2.5 2000/12/18 03:51:13 nbryant
2390 ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
2393 Revision 573.51.2.4 2000/12/18 02:49:17 nbryant
2394 removed all references to S_MSGMAIN critical section; it wasn't really needed.
2395 this should make things significantly more scaleable.
2397 Revision 573.51.2.3 2000/12/17 22:12:48 nbryant
2398 reworked shutdown sequence to wait for worker threads to terminate before
2399 checkpointing and closing databases. it is no longer safe to call
2400 master_cleanup() directly to force a shutdown; instead, just set
2401 time_to_die to a nonzero value
2403 Revision 573.51.2.2 2000/12/17 05:06:09 nbryant
2404 added deadlock detection and cleaned up messages
2406 Revision 573.51.2.1 2000/12/16 21:06:59 nbryant
2407 created TRANSACTIONS branch
2408 track cursor and transaction id's in thread-specific data
2410 Revision 573.51 2000/12/14 18:36:34 ajc
2411 * Fixed the "users not in chat" wholist display
2413 Revision 573.50 2000/12/12 18:06:46 ajc
2414 * Removed the transaction stuff (but left the log in). It wasn't working.
2416 Revision 573.49 2000/12/12 06:19:55 ajc
2417 * Stabilize, dammit!!
2419 Revision 573.48 2000/12/12 04:20:03 ajc
2420 * Made the transaction open/close a global thing, in a frantic attempt to get
2421 Uncensored to stop crashing. More fixes on the way...
2423 Revision 573.47 2000/12/11 06:08:41 ajc
2424 * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
2425 timer event, and check_sched_shutdown() to the end of the worker thread
2426 loop. Seems to have improved reliability (but why?)
2428 Revision 573.46 2000/12/11 03:22:11 ajc
2429 * Added server-side REQT command to issue client termination requests
2431 Revision 573.45 2000/12/11 02:19:26 ajc
2432 * Client now honors EM_GO_AWAY flag, used by the server to request that a
2433 client log off. (The server doesn't support sending that flag yet, though)
2435 Revision 573.44 2000/12/09 06:20:06 ajc
2436 * A few final touches to the Sleepycat DB back-end
2438 Revision 573.43 2000/12/08 17:06:33 ajc
2439 * Wrap txn_begin and txn_end in S_DATABASE mutex
2441 Revision 573.42 2000/12/07 20:21:39 ajc
2442 * begin/end transaction in master_startup()
2444 Revision 573.41 2000/12/07 16:59:02 nbryant
2445 added --with-db and --with-gdbm options to configure
2447 Revision 573.40 2000/12/07 04:50:33 ajc
2448 * Wrap housekeeper and timer events in transaction open/close functions
2449 * Checkpoint the DB as an EVT_TIMER event instead of after each session
2450 (runs each minute, but actually limited by the parameters of the function)
2452 Revision 573.39 2000/12/06 04:44:36 ajc
2453 * Changed netproc to keep the use table in a flat file instead of a database
2455 Revision 573.38 2000/12/05 05:32:58 ajc
2456 * Added support for non-USA country identities in vCard and registration
2457 * User edit now asks whether it should prompt to change the password
2459 Revision 573.37 2000/12/03 04:12:21 ajc
2460 * Finished (mostly) the Sleepycat DB backend ... added transaction logging
2462 Revision 573.36 2000/11/30 03:23:17 ajc
2463 * Got the Sleepycat DB back end working, by opening the databases in a non
2464 shared, non threaded mode, and using Citadel's locking to serialize access.
2466 Revision 573.35 2000/11/29 05:00:02 ajc
2467 * I think the db stuff is ok, but my db library is fux0red...
2469 Revision 573.34 2000/11/27 14:12:09 error
2470 * commands.c: fixups to print_express() to make external command not print
2471 extraneous stuff to the terminal and make the displayed message consistent
2473 Revision 573.33 2000/11/27 10:41:14 error
2474 * print_express(): now uses GEXP instead of old PEXP; displays timestamps
2476 Revision 573.32 2000/11/27 10:29:59 error
2477 * serv_chat.c: fix send_express_message() to include timestamps
2479 Revision 573.31 2000/11/27 03:44:27 ajc
2480 * Initial checkin of database_sleepycat.c (doesn't work yet)
2482 Revision 573.30 2000/11/26 05:24:22 ajc
2483 * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
2484 re-implemented the existing CtdlOutputMsg() as a wrapper around it.
2485 * imap_fetch.c: used the above function to do all output pre-loaded
2487 Revision 573.29 2000/11/25 09:36:18 error
2488 * Added a bit of detail to syslog entries; now shows session id attached to
2489 client, hostname, and username, and time the session ended.
2491 Revision 573.28 2000/11/25 06:17:06 ajc
2492 * Minor IMAP tweaks. It still doesn't work. :(
2494 Revision 573.27 2000/11/23 07:22:21 error
2495 * citadel.spec: update version number
2497 Revision 573.26 2000/11/21 11:12:56 error
2498 * domain.h: changed the HP/UX compatibility code to use defines from
2499 typesize.h for integers of specific bit widths (needed for Solaris, etc)
2501 Revision 573.25 2000/11/12 04:20:49 ajc
2502 * Optimized server side input of message text
2504 Revision 573.24 2000/11/10 03:55:06 ajc
2505 * Ford's Fix for Faster Functionality (save position during reply)
2507 Revision 573.23 2000/11/09 04:48:50 ajc
2508 * tools.c: striplt() strips all whitespace, not just spaces
2510 Revision 573.22 2000/11/07 20:47:21 ajc
2511 * imap_fetch.c: added a skeleton "ENVELOPE" fetch. Currently sends NIL's.
2513 Revision 573.21 2000/11/07 15:54:53 ajc
2514 * xx FETCH n:n BODY[pn.MIME] now works
2516 Revision 573.20 2000/11/06 05:10:01 ajc
2517 * Changed the mime_parser() API (again) to allow "don't decode" mode
2519 Revision 573.19 2000/10/29 18:11:07 ajc
2520 * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
2522 Revision 573.18 2000/10/28 14:14:19 error
2523 * msgbase.c: eliminated most gotos; a single goto in alias() remains because
2524 it actually makes sense to do it that way...
2526 Revision 573.17 2000/10/25 21:37:09 ajc
2527 * Implemented the AUTHENTICATE LOGIN command in IMAP
2529 Revision 573.16 2000/10/25 19:20:37 ajc
2530 * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
2532 Revision 573.15 2000/10/24 20:39:59 ajc
2533 * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
2535 Revision 573.14 2000/10/23 20:26:51 error
2536 * War on goto: rewrote a few easy functions to eliminate unnecessary gotos
2538 Revision 573.13 2000/10/11 23:03:44 error
2539 * utilsmenu: obey $PAGER environment var, if any. Default to more if neither
2540 $PAGER nor less is available.
2542 Revision 573.12 2000/10/11 22:55:25 error
2543 * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
2544 displayed at login are in color
2546 Revision 573.11 2000/10/11 22:47:51 error
2547 * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
2549 Revision 573.10 2000/10/10 19:18:12 ajc
2550 * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
2552 Revision 573.9 2000/10/06 03:31:55 ajc
2553 * Mark Crispin is a fscking idiot. IMAP is a convoluted mess.
2555 Revision 573.8 2000/10/05 22:23:16 ajc
2556 * Slowly and painfully writing IMAP support
2558 Revision 573.7 2000/10/04 22:39:06 ajc
2559 * Added skeleton versions of the LIST and LSUB commands to the imap server
2561 Revision 573.6 2000/10/04 17:48:21 ajc
2562 * Allow Aides to zap rooms (site configurable setting)
2564 Revision 573.5 2000/10/03 01:45:00 ajc
2565 * Changed the <.A>ide <S>ysconfig <G>eneral command to explicitly allow the
2566 global page log room to be disabled (answer "no" to set the log room to a
2569 Revision 573.4 2000/09/28 10:27:38 error
2570 * commands.c: changed sttybbs() to support HP/UX termios VMIN and VTIME
2572 Revision 573.3 2000/09/24 22:01:45 ajc
2573 * ipc_c_tcp.c: don't hardcode BBSDIR path for unix domain sockets
2575 Revision 573.2 2000/09/21 04:16:44 ajc
2576 * Fixed logged_in_response() so it only displays responses during Citadel
2577 protocol sessions. (This was affecting POP etc.)
2579 Revision 573.1 2000/09/11 22:05:04 ajc
2580 * citadel.c: accept -h <host> and -p arguments, so citadel can be called
2581 directly by telnetd, bypassing /bin/login. It works, but not recommended at
2582 this time because it has to run as root.
2584 Revision 573.0 2000/09/05 18:35:22 ajc
2585 * Tagged everything for version 5.73 release
2587 Revision 572.39 2000/09/04 03:59:15 ajc
2589 ----------------------------
2591 date: 2000/09/03 06:36:01; author: error; state: Exp; lines: +5 -1
2592 Added HP/UX linker flag for dynamic modules to work
2593 ----------------------------
2595 date: 2000/09/01 06:50:00; author: error; state: Exp; lines: +8 -1
2596 Changed to use integer macros from typesize.h for specific bit widths
2597 ----------------------------
2599 Revision 572.38 2000/09/01 20:17:08 ajc
2600 * msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes
2602 Revision 572.37 2000/09/01 17:31:47 ajc
2603 * Fixed oopseth in control.c that might call fileno(NULL)
2605 Revision 572.36 2000/09/01 13:37:16 ajc
2606 * control.c: chown citadel.control to bbsuid when opening/creating as root
2608 Revision 572.35 2000/09/01 03:55:44 ajc
2609 * Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
2611 Revision 572.34 2000/09/01 03:43:09 ajc
2612 * Added 'author' command-line arg to aidepost. Closes enhancement request
2614 * Put the default SMTP and POP3 ports back to 25 and 110. Now that the
2615 unix domain socket bug is fixed, it's ok if these binds fail.
2617 Revision 572.33 2000/08/31 23:02:15 ajc
2618 * ig_tcp_server() and ig_uds_server() - check to make sure queue length is
2619 always at least 5. Zero-length queues can cause connection lockups.
2621 Revision 572.32 2000/08/31 21:32:44 ajc
2622 * Still trying to fix a socket connect bug
2624 Revision 572.31 2000/08/31 16:37:08 ajc
2625 * docs/import-export.txt: added.
2627 Revision 572.30 2000/08/28 19:51:51 ajc
2628 * messages.c: cosmetic cleanup (coding convention and comments)
2630 Revision 572.29 2000/08/26 20:23:18 ajc
2631 * Finished up the back end code for mailing list sends. Sends now work!
2633 Revision 572.28 2000/08/24 02:48:18 ajc
2634 * Merged in IO ERROR's diffs to make Citadel work with HP/UX
2636 Revision 572.27 2000/08/22 02:31:47 ajc
2637 * nonce (for APOP-style auth) is now generated when a context is created
2638 instead of during protocol greeting functions.
2639 * Moved Citadel protocol nonce output from greeting to INFO
2641 Revision 572.26 2000/08/18 21:09:36 ajc
2642 * Added a little more mailing list code to serv_network.c
2644 Revision 572.25 2000/08/10 04:36:25 ajc
2645 * Fixed a bug in keyboard polling (in commands.c) which was causing the
2646 client protocol to get out of sync in certain conditions.
2648 Revision 572.24 2000/08/10 02:42:13 ajc
2649 * Changed all the "200 ok" responses to more descriptive strings
2650 * Added a *temporary* protocol sync check. Remove this!
2652 Revision 572.23 2000/08/09 17:14:34 ajc
2653 msgbase.c: fixed a bug in
2654 remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
2655 causing the <R>eply function to fail on names with whitespace in
2656 certain parts of the string. This closes Bug #56.
2658 Revision 572.22 2000/08/05 04:24:00 ajc
2659 * Added [idle] to client wholist display for sessions idle >15 minutes
2660 * Added a generic "void *userdata" field to CtdlForEachMessage()
2661 * More prep for mailing list handling in the server
2663 Revision 572.21 2000/07/30 04:36:12 ajc
2664 * Set up the SNET (Send NETwork config) and GNET (Get NETwork config) commands
2665 for the network overhaul.
2667 Revision 572.20 2000/07/29 05:29:19 ajc
2668 * Changed the format of RWHO output to provide non-masqueraded user/room/host
2669 names (to Aides only) as additional fields rather than an extra line of
2671 * Changed the client to display new RWHO fields, in the "long" wholist only.
2672 * Default SMTP and POP ports are now -1, not 25/110. These services must now
2673 be activated manually.
2675 Revision 572.19 2000/07/24 00:39:13 ajc
2676 * Fixed a path problem when calling netmailer from mailinglist.c
2678 Revision 572.18 2000/07/22 03:44:17 ajc
2679 * Prepared infrastructure for the networker rewrite
2681 Revision 572.17 2000/07/17 02:38:08 ajc
2682 * Completed serv_vandelay.c (importer/exporter module)
2683 * sendcommand.c: fix behavior of SEND_LISTING mode
2684 * sysdep.c: client_gets() fill buffer with "000" terminator when returning -1
2686 Revision 572.16 2000/07/14 03:06:55 ajc
2687 * Added .ATN (DOWN) and .ATS (SCDN 1) commands to the client
2689 Revision 572.15 2000/07/10 23:36:08 ajc
2690 * Another attempt to fix the crashy crashy bug in serv_vcard
2691 * Did more work on the Art Vandelay module
2692 * Replaced all instances of sprintf(tempfile, tmpnam(NULL)) with strcpy()
2694 Revision 572.14 2000/07/10 04:01:12 ajc
2695 * added an unfinished serv_vandelay.c (Art Vandelay module - importer/exporter)
2697 Revision 572.13 2000/07/09 02:47:40 ajc
2698 * Overhauled the keepalive logic in the chat client. Closes bug #20.
2700 Revision 572.12 2000/07/09 02:27:02 ajc
2701 * Eliminated the whole SIGINT/SIGQUIT based handling of Ctrl-O and Ctrl-C
2702 keyboard interrupts. Replaced with a non-blocking check for keyboard input
2703 which sets the global variable 'sigcaught' if either key was pressed.
2704 fmout() and pprintf() switch to 'drain mode' if sigcaught is set.
2705 This closes Bug #18.
2707 Revision 572.11 2000/07/06 20:26:36 ajc
2708 * updated .Help SUMMARY
2710 Revision 572.10 2000/07/04 20:02:46 ajc
2711 * Fixed potential crashy crashy bug in serv_vcard.c
2713 Revision 572.9 2000/06/28 03:42:56 ajc
2714 * Changed the comments at the beginning of each file to a consistent format
2715 * Improved the parameterization of commands in the IMAP module
2717 Revision 572.8 2000/06/27 01:27:13 ajc
2718 * Coupla very small changes to get on the road to IMAP support
2720 Revision 572.7 2000/06/22 21:41:48 ajc
2721 * Made the ICQ stuff far more reliable ... by removing it!
2723 Revision 572.6 2000/06/21 03:46:20 ajc
2724 * IMAP is now legal but useless, supporting NOOP, LOGIN, and LOGOUT.
2726 Revision 572.5 2000/06/15 20:15:52 ajc
2727 * Inserted a skeleton IMAP module into the build. IT DOES NOT WORK AT ALL.
2729 Revision 572.4 2000/06/04 02:30:56 ajc
2730 * CtdlForEachMessage() now returns the number of messages processed. It also
2731 accepts the MSGS_EQ mode, for targeting a specific message number (useful
2732 for determining whether the specified message actually exists in a room).
2733 * Completed the server side of the moderation system (serv_moderate.c module
2734 which implements the MMOD command)
2736 Revision 572.3 2000/06/03 05:47:57 ajc
2737 * Replaced most of the very repetitive and very redundant access level checks
2738 in most commands with a single API call: CtdlAccessCheck()
2739 * serv_moderate.c: added (not finished)
2741 Revision 572.2 2000/06/02 03:38:50 ajc
2742 * Bind unix socket prior to TCP socket for citadel protocol
2743 * Fixed bug in sendcommand.c which was causing it to crash on attach
2745 Revision 572.1 2000/05/26 19:27:51 ajc
2746 * Changed some of the rev-level sensitive stuff to look at the actual version
2747 of Citadel running, not the last version with which we ran setup
2748 * Added a moderation system. Default filter level for new users is in the
2749 config file. Per-user setting is in usersupp. Moderation level of each
2750 message is in SuppMsgInfo. Tweaked CONF, GETU, and SETU. Read filter is
2751 working. Moderate message up/down commands are not here yet. See
2752 techdoc/moderation.txt for more info.
2754 Revision 572.0 2000/05/23 02:09:30 ajc
2755 * Updated docs and tagged everything for the 5.72 release
2757 Revision 571.7 2000/05/20 23:28:20 ajc
2758 * Fixed bug in client API that was causing netproc to crash
2760 Revision 571.6 2000/05/15 00:05:19 ajc
2761 * Double the retry interval for SMTP deliveries after each failed attempt.
2763 Revision 571.5 2000/05/11 03:08:47 ajc
2764 * serv_smtp.c: clear the relevant state buffers after an SMTP DATA command
2765 completes, allowing multiple messages in one session. Closes bug #58.
2767 Revision 571.4 2000/04/24 03:36:43 ajc
2768 * Removed references to strucmp() and struncmp(), replaced them with
2769 strcasecmp() and strncasecmp() as we did in the server a while ago, and
2770 set up the config script to figure out whether they need to be compiled
2771 in. Also moved them to tools.h
2772 * Wrote a password manager for the client
2774 Revision 571.3 2000/04/19 03:17:10 ajc
2775 * Don't ever expire the Local System Configuration> room
2777 Revision 571.2 2000/04/16 19:03:47 ajc
2778 * Minor changes to avoid host lookup for local clients
2780 Revision 571.1 2000/04/15 19:55:52 ajc
2781 * Fixed "Unvalidated users appear even with registration disabled" bug #36
2783 Revision 571.0 2000/04/13 02:43:24 ajc
2784 * Fixed a problem that crashed the client during <G>oto commands if a room
2785 existed with a name more than 32 characters (thanks to Magus for reporting
2787 * Tagged everything and updated docs for the 5.71 release
2789 Revision 570.18 2000/04/10 01:47:22 ajc
2790 * More paginator changes. Shuffled code around, added pagination to a bunch
2791 of other functions, and replaced the old, cumbersome pagination with the
2792 new, easy, API-based one in everything except message output.
2794 Revision 570.17 2000/04/09 17:51:18 ajc
2795 * Added pprintf() (paginated version of printf) to the client-side API. Now
2796 any client side function can be paginated simply by changing all of the
2797 printf's to pprintf's. I've already done this for the user list and wholist
2798 (removing the old style pagination) and for "read directory."
2800 Revision 570.16 2000/04/08 04:52:48 ajc
2801 * Another minor stoopid little time display fix
2803 Revision 570.15 2000/04/08 03:58:12 nbryant
2804 * backed out the previous changes since they didn't look good on some
2805 xterms with a blue bold mode. just set the background color to black
2806 instead. this makes black-on-white terminals actually readable, if not
2807 particularly good looking.
2809 Revision 570.14 2000/04/08 01:36:30 nbryant
2810 * citadel.c, commands.c: comment out cls() as this wasn't called if
2811 ansi_color=user anyway, and we have no way of knowing whether the user's
2812 terminal does background color erase, which was the reason for adding this
2813 in the first place. with the recent changes to color(), the display will get
2814 screwed up if they *do* have background color erase. perhaps this is a job
2817 Revision 570.13 2000/04/08 00:37:42 nbryant
2818 * commands.c: fix color support for black-on-white color terminals such as
2819 CDE's dtterm. this just avoids white-on-white text; some color combinations
2820 such as yellow-on-white still aren't very legible due to contrast. There's
2821 not much I can think to do about that without affecting the look on the
2822 white-on-black terminals which probably account for most users.
2824 Revision 570.12 2000/04/07 20:22:34 ajc
2825 * Fixed am/pm bug in time display
2827 Revision 570.11 2000/04/07 19:22:45 ajc
2828 * For services disabled by setting port number to -1, administratively skip
2829 the bind instead of just allowing it to fail.
2831 Revision 570.10 2000/03/31 04:31:02 ajc
2832 * Quick fix to 'stats' utility to purge records with bogus timestamps
2834 Revision 570.9 2000/03/31 02:10:52 ajc
2835 * Caved in to pressure and enabled <R>eply in public rooms.
2837 Revision 570.8 2000/03/28 03:55:53 ajc
2838 * Modified <.RU> to allow search for partial match
2840 Revision 570.7 2000/03/27 03:08:19 ajc
2841 * Third parameter of CtdlDeleteMessages() now takes "" instead of NULL to
2842 specify 'any MIME type'.
2844 Revision 570.6 2000/03/27 01:14:08 nbryant
2845 * Makefile.in: generate parsedate.c automatically
2846 * configure.in: check for bison/byacc/yacc. bison seems to build cleaner
2848 * parsedate.c: removed from CVS
2849 * parsedate.y: added #include <stdlib.h> so it builds with bison
2851 Revision 570.5 2000/03/27 00:46:10 nbryant
2852 * First cut at Solaris fixes. There may still be some *printf("%s", NULL)
2853 type of issues lurking in the shadows.
2855 Revision 570.4 2000/03/25 18:29:58 nbryant
2856 changed my email address
2858 Revision 570.3 2000/03/23 02:41:50 ajc
2859 *** empty log message ***
2861 Revision 570.2 2000/03/21 03:23:24 ajc
2862 * Experimental new linebreak mode
2864 Revision 570.1 2000/03/20 14:43:19 ajc
2865 * "Brown paper bag" fix for SMTP bug (incoming long fields crash logger)
2867 Revision 570.0 2000/03/19 23:42:34 ajc
2868 * This is the official 5.70 release.
2870 Revision 1.494 2000/03/19 23:04:08 ajc
2871 * Small cosmetic change to date/time output
2873 Revision 1.493 2000/03/19 05:02:39 ajc
2874 * SMTP hacks to deal with AOL braindamage
2876 Revision 1.492 2000/03/18 18:18:04 ajc
2877 * Support multiline responses from SMTP servers when sending mail
2879 Revision 1.491 2000/03/17 16:26:57 ajc
2880 * Set up a private "Sent/Received Pages" room for each user
2882 Revision 1.490 2000/03/17 04:11:24 ajc
2883 * Moved bio-related commands out to a loadable module
2885 Revision 1.489 2000/03/16 17:58:54 smw
2886 Created a docs directory.
2887 Moved install.txt to docs.
2888 Added inetmailsetup.txt (BBS server side e-mail)
2889 Added inetmailsetupmx.txt (local mail AND bbs e-mail
2890 Added inetsiteconfig.txt (describes the .asi command)
2891 Added siteconfig.txt (describes .asg)
2892 Added chat.txt (describes changes and new chat functionality)
2893 Made a couple of changes to install.txt (references to new documentation)
2894 Added Steve Williams to copyright.txt as the document writer.
2896 Revision 1.488 2000/03/15 03:04:51 ajc
2897 * Added DEXP server command to disable incoming express messages.
2898 * <Q>uiet mode client side command to set/clear DEXP mode.
2899 * <K>nown rooms list displays through the paginator.
2901 Revision 1.487 2000/03/12 00:21:35 ajc
2902 * Removed the semi-broken "chat room" functionality in the chat system, and
2903 replaced it with direct mapping to the actual Citadel room the user is in.
2904 * Display masqueraded roomname in chat, if applicable. Fixes bug #19.
2906 Revision 1.486 2000/03/11 21:29:37 ajc
2907 * SM_ flags for CtdlSaveMsgPointerInRoom() need to be a bit bucket, not an
2908 enum, since more than one can be passed. Changed SM_DONT_BUMP_REF_COUNT
2909 from 3 to 4. This also fixes bug #33.
2911 Revision 1.485 2000/03/11 20:26:03 ajc
2912 * Reworked the <R>eply logic in messages.c - fixes bug #34
2914 Revision 1.484 2000/03/11 19:22:19 nbryant
2915 * commands.c: improved timing of background keepalives if connection is
2918 Revision 1.483 2000/03/11 05:08:48 nbryant
2919 * commands.c: oops, that mutex stuff wasn't necessary
2921 Revision 1.482 2000/03/11 04:09:03 nbryant
2922 * new threaded client code for background keepalives
2924 Revision 1.481 2000/03/10 21:40:04 ajc
2925 * Changes to message base and networker to support Internet-style message
2926 ID's instead of the conventional Citadel style.
2928 Revision 1.480 2000/03/08 03:36:37 ajc
2929 * Shut off hostname resolution when dealing with Unix domain sockets
2930 * Cleaned up the 'citmail' MDA tool
2931 * Added POP3 and SMTP port numbers to global system configuration
2933 Revision 1.479 2000/03/07 21:54:58 ajc
2934 * Fixed the naming conventions and permissions for unix domain sockets.
2936 Revision 1.478 2000/03/05 07:33:23 ajc
2937 * Added support for protocols over Unix domain sockets.
2939 Revision 1.477 2000/03/04 22:36:23 ajc
2940 * Remove nulls appended to editor files during replace, edit, and print
2941 operations. Truncate temp files during same operations.
2942 Closes bugs #6 and #7.
2944 Revision 1.476 2000/03/04 05:29:18 ajc
2945 * Relax restrictions on editing of base rooms. Renaming is not allowed but
2946 all other attributes can be edited. Closes feature request #21.
2947 * Sending pages from the client now uses the same message editing functions
2948 as entering messages, allowing edit/abort. Closes feature request #25.
2950 Revision 1.475 2000/03/03 04:50:14 ajc
2951 * Moved all of the wholist masquerading commands into the serv_rwho module
2953 Revision 1.474 2000/03/03 04:12:37 ajc
2954 * Finished the inbound side of gateway domain service
2956 Revision 1.473 2000/02/27 04:55:51 ajc
2957 * Added "keymenu()" generic menu-maker to commands.c
2958 * Blocked non-numeric input to intprompt() (fixes bug #16)
2960 Revision 1.472 2000/02/27 03:57:35 ajc
2961 * Completed 'fsck'-like reference count verifier (server and client)
2963 Revision 1.471 2000/02/26 18:30:40 ajc
2964 * Properly handle all aliases specified in network/mail.aliases for incoming
2965 SMTP mail (uses the alias() function, so if we replace that function with
2966 something that uses the same calling convention, it'll still work)
2968 Revision 1.470 2000/02/26 05:15:38 ajc
2969 * Fortified the message base and SMTP code so that misdirected bounce messages
2970 end up in the Aide> room instead of getting dereferenced
2971 * Started writing a message reference count verifier ('fsck' for message base)
2973 Revision 1.469 2000/02/25 06:14:05 ajc
2974 * Modularized the RWHO (Read WHO is online) command, basically as a pilot
2975 for modularizing all "non-API" functionality.
2977 Revision 1.468 2000/02/24 03:44:00 ajc
2978 * Implemented holdoff time (15 minutes) for SMTP send retry.
2979 * Implemented "try for 3 days and then give up" on SMTP send.
2981 Revision 1.467 2000/02/24 00:51:48 ajc
2982 * Client protocol synchronization check during exit from chat.
2983 This closes Bug #15.
2985 Revision 1.466 2000/02/22 16:37:28 ajc
2986 * Minor tweaks to RFC822 output to keep brain-damanged MS Outlook from dying
2988 Revision 1.465 2000/02/22 04:17:56 ajc
2989 * Got bounce messages working (mostly ... testers, please beat this up!)
2990 * Changed 'FIX' comments to 'FIXME' (less conflict, plus vim highlights it!)
2992 Revision 1.464 2000/02/18 22:29:18 ajc
2993 * Coded up the "bounce" functions. Still a coupla bugs.
2995 Revision 1.463 2000/02/18 05:10:50 ajc
2996 * Made the <.ASI> command a bit friendlier.
2997 * SMTP sender now pays attention to "smarthost" entries in the system's
2998 Internet configuration, using them if one or more is present.
3000 Revision 1.462 2000/02/17 05:27:39 ajc
3001 * Got the "MAIL From:" command sending the correct data. (unnnhhhhnnhhhh...)
3003 Revision 1.461 2000/02/16 22:06:26 ajc
3004 * Altered the display and conversion of RFC822 messages
3006 Revision 1.460 2000/02/16 03:43:28 ajc
3007 * Added the resolver library to the configure script
3009 Revision 1.459 2000/02/16 01:19:39 ajc
3010 * Vanquished the evil dn_expand() beast. getmx() now seems to be working.
3012 Revision 1.458 2000/02/14 04:36:14 ajc
3013 * sysdep.c: added new event hook type EVT_TIMER. Timer event hooks are called
3014 once per minute by any worker thread.
3015 * msgbase.c: removed dependence on nested functions in CtdlOutputMsg() by
3016 replacing them with an API call CtdlRedirectOutput() in sysdep.c, which
3017 can temporarily redirect a session's output to an arbitrary file or socket.
3018 * serv_smtp.c: implemented the purging of messages in the queue for which all
3019 deliveries have been completed.
3020 * serv_smtp.c: removed temporary 'QQQQ' server command and replaced it with
3021 a timer event hook that runs the queue once per minute (this needs to be
3024 Revision 1.457 2000/02/08 21:00:47 ajc
3025 * Implemented the deprecated "LAST" command in POP3. Some clients need it.
3026 * POP3 sessions now set the last-read pointer in Mail>.
3028 Revision 1.456 2000/02/07 05:15:00 ajc
3029 * Renamed CtdlLocalHost() to CtdlHostAlias() and worked it a little deeper into
3030 the message routing logic. Still needs some work on the gateway-domain
3032 * Twiddled CtdlOutputMsg() a bit for 'all Internet' situations. Still needs
3033 some work to avoid printing dual headers when both Cit and RFC822 exist.
3035 Revision 1.455 2000/02/03 03:57:35 ajc
3036 * Formalized the 'Internet Configuration' logistics. Added new API call
3037 CtdlLocalHost() to detect aliases for the local host. Used in SMTP listener.
3039 Revision 1.454 2000/01/31 02:13:05 ajc
3040 * <.A>ide <S>ystem configuration <I>nternet in the client (unfinished)
3042 Revision 1.453 2000/01/26 02:41:27 ajc
3043 * SMTP delivery is working but still *very* rough.
3045 Revision 1.452 2000/01/25 04:45:50 ajc
3046 * Wrote enough of the SMTP sender to get Patriot drooling over it, but not
3047 enough to complete the transmission of mail.
3049 Revision 1.451 2000/01/23 21:25:45 ajc
3050 * Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
3051 one specified is not bindable (for development only)
3052 * Added SM_DONT_BUMP_REF flag to CtdlSaveMsgPointerInRoom() to be used only
3053 in very specific and special situations
3054 * Generate delivery instructions when outbound SMTP mail is created from
3055 within Citadel (as opposed to being from the SMTP module)
3057 Revision 1.450 2000/01/23 05:22:41 ajc
3058 * Coded up some more of the SMTP-sender (still not done)
3060 Revision 1.449 2000/01/22 05:13:56 ajc
3061 * Added some more functionality to the string tokenizer
3063 Revision 1.448 2000/01/17 20:57:43 ajc
3064 * CR to CRLF hacks (lose, lose, lose)
3066 Revision 1.447 2000/01/17 18:30:27 ajc
3067 * Completed POP3 server. All RFC1939 commands except APOP are implemented.
3069 Revision 1.446 2000/01/17 17:09:23 ajc
3070 * Implemented LIST and STAT commands in the pop3 server
3072 Revision 1.445 2000/01/17 05:38:14 ajc
3073 * citserver.c: cleanup hook functions are now run under the proper context,
3074 even when initiated by the housekeeper thread
3075 * serv_pop3.c: establish a place to hold the message list
3077 Revision 1.444 2000/01/17 04:26:39 ajc
3078 * Modified CtdlOutputMsg() to handle output to arbitrary sockets or files.
3079 This uses nested functions and may not be portable beyond GCC...
3081 Revision 1.443 2000/01/15 18:29:15 ajc
3082 * Added a generic (void *) parameter to the ForEachUser() and ForEachRoom()
3083 callback mechanisms, to allow callers and callbacks to pass arbitrary data
3084 between each other without requiring TSD variables.
3085 * room_ops.c: eliminated the need for 'FloorBeingSearched' TSD variable
3086 * internet_addressing.c: eliminated 'buffer1' and 'buffer2' TSD variables
3088 Revision 1.442 2000/01/15 04:31:44 ajc
3089 * Removed UI_DIALOG mode in setup. Can't count on 'dialog' to be consistent.
3091 Revision 1.441 2000/01/15 04:07:17 ajc
3092 * Fixed the access rights on auto-created rooms (the same changes that were
3093 made to version 5.62 in the stable tree)
3095 Revision 1.440 2000/01/13 03:32:36 ajc
3096 * techdoc/delivery-list.txt: added (syntax for delivery lists)
3097 * domain.*: added (will contain MX lookup code)
3098 * internet_addressing.c, logging.c: fixed some buffer overflow bugs
3100 Revision 1.439 2000/01/12 03:56:27 ajc
3101 * sysdep.c: start the housekeeping thread *after* dropping root perms.
3103 Revision 1.438 2000/01/09 19:03:16 ajc
3104 * Removed the fifo-based protocol downloads and replaced it with a less
3105 elegant "download temporary file to client, then sx/sb/sz" because
3106 downloading through a fifo was confusing some software.
3108 Revision 1.437 2000/01/08 22:19:44 ajc
3109 * Completed spool to outbound delivery queue (still no queue sender implemented)
3111 Revision 1.436 2000/01/08 05:00:09 ajc
3112 * Reworked some of the data structures to handle multiple recipients
3113 * Began implementation of the delivery queue
3114 * Added CtdlReallocUserData()
3115 * CtdlSaveMsg() now returns the local message ID in the database
3117 Revision 1.435 2000/01/06 03:50:34 ajc
3118 * Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
3119 * Started outbound SMTP queue work
3121 Revision 1.434 1999/12/30 04:56:29 ajc
3122 * Got initial SMTP delivery working in a very specific situation (delivery
3123 to a single, local user)
3125 Revision 1.433 1999/12/29 04:44:00 ajc
3126 * client_chat.c: display "No message sent" if a send page is aborted.
3127 Closes bug #2 in bugzilla.
3129 Revision 1.432 1999/12/26 21:50:07 ajc
3130 * serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
3131 * serv_pop3: added. This is the skeleton for a module implementing POP3.
3133 Revision 1.431 1999/12/23 04:46:23 ajc
3134 * "Finished" initial hack of RFC822 import
3136 Revision 1.430 1999/12/22 04:46:34 ajc
3137 * Fixed up the "Date:" headers to be RFC822-compliant
3139 Revision 1.429 1999/12/13 05:30:57 ajc
3140 * Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
3141 and replaced it with the public domain 'parsedate()' function from UseNet
3143 Revision 1.428 1999/12/10 23:58:25 ajc
3144 * internet_addressing.c: added. (Internet address to Citadel mapping)
3146 Revision 1.427 1999/12/10 21:34:19 ajc
3147 * serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
3149 Revision 1.426 1999/12/09 05:01:14 ajc
3150 * Split cmd_user() and cmd_pass() into frontend/backend functions
3151 * serv_smtp: implemented AUTH LOGIN for client authentication
3153 Revision 1.425 1999/12/09 00:22:58 ajc
3154 * Finished the "arbitrary service" registration.
3155 * Eliminated "special" master socket for Citadel protocol - just register it
3156 like any other protocol.
3157 * Began initial implementation of native SMTP service.
3159 Revision 1.424 1999/12/08 18:09:10 ajc
3160 * Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
3161 TCP-based services directly in the Citadel server. Not finished yet.
3163 Revision 1.423 1999/11/29 17:39:07 nbryant
3164 * citserver.c: Solaris lacks inet_aton; use inet_addr instead
3166 Revision 1.422 1999/11/29 17:26:15 nbryant
3167 * citserver.c: include <sys/types.h>; may help portability to Solaris
3169 Revision 1.421 1999/11/22 00:27:42 ajc
3170 * Added some temporary variables to OpenCmdResult(). Hopefully fixes
3171 bug #14 when running on FreeBSD.
3173 Revision 1.420 1999/11/21 18:30:16 ajc
3174 * Protected cmd_move() from buffer overrun (no longer crashes the server)
3175 * cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
3176 Also handle broken client sockets properly. (Thanks to DME for bug report)
3178 Revision 1.419 1999/11/19 01:57:40 ajc
3179 * Fixed a *serious* memory leak in the database function wrappers.
3180 * Updated version number to 5.60 -- run setup when installing this version.
3182 Revision 1.418 1999/11/18 03:29:20 ajc
3183 * Changed the order of parameters in <.A>ide <S>ystem config into a more
3186 Revision 1.417 1999/11/18 02:31:50 ajc
3187 * Updated some of the documentation
3188 * Brought the internal version number up to 5.60
3190 Revision 1.416 1999/11/17 04:15:05 ajc
3191 * Removed the session_count() function. Instead, keep a reference count
3192 updated when sessions begin and end.
3193 * Replaced fixed number of worker threads with lower and upper limits; current
3194 code now tries to make thread count == session count, within these limits
3196 Revision 1.415 1999/11/15 03:17:39 ajc
3197 * Put lockfile in /tmp instead of in /var/lock. The latter is not guaranteed
3198 to exist, nor is it guaranteed to be writable by BBSUID
3199 (Resolves bug #11 from the Bugzilla repository)
3201 Revision 1.414 1999/11/15 03:07:24 ajc
3202 * Fixed the network-wide vCard purge logic so that it (1) actually works,
3203 and (2) forces a netproc run immediately when a purge is entered
3205 Revision 1.413 1999/11/09 21:20:44 nbryant
3206 * configure.in: include <sys/types.h> when doing checks which require <utmp.h>
3207 (should fix Bug #10 on FreeBSD)
3209 Revision 1.412 1999/11/05 03:53:47 ajc
3210 * Issue 'cancel' messages for vCard when a user is deleted.
3211 * Try to delete 'cancel' messages locally after they've been distributed.
3213 Revision 1.411 1999/11/03 04:01:20 ajc
3214 * Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
3215 * Removed my email address as the feedback content from the docs; replaced
3216 it with a reference to the Citadel/UX web site.
3218 Revision 1.410 1999/11/02 19:51:23 ajc
3219 * Fixed timeout problem for remote client sessions (all timeouts were set to
3220 1 second ... probably a temporary hack that was missed in the cleanup)
3222 Revision 1.409 1999/11/02 03:03:27 ajc
3223 * Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
3224 network traffic from crashing the server. Reject bad messages.
3226 Revision 1.408 1999/11/01 04:21:34 ajc
3227 * Fixed a concurrency bug which crashed the server when multiple sessions
3228 terminated simultaneously.
3230 Revision 1.407 1999/11/01 00:54:02 ajc
3231 * CtdlFetchMessage() - generate a "<no text>" message body if there's none
3232 on disk. Too much stuff goes haywire if there's no M field.
3234 Revision 1.406 1999/10/31 18:17:17 ajc
3235 * Fixed buffer overrun in cmd_rchg()
3236 * Call master_cleanup() when time_to_die==1 for proper shutdown
3238 Revision 1.405 1999/10/31 16:26:55 ajc
3239 * Fixed incorrect assignment of new session ID's
3241 Revision 1.404 1999/10/31 04:17:17 ajc
3242 * Fixed a bug which was crashing the server during very long message entry.
3244 Revision 1.403 1999/10/29 01:48:45 ajc
3245 * database.c: Removed arbitrary limit on maximum number of sessions
3247 Revision 1.402 1999/10/29 01:03:03 ajc
3248 * Debugged all possible ways for a session to terminate; do them cleanly.
3249 * Assign session numbers in a more portable and less arbitrary way.
3251 Revision 1.401 1999/10/28 19:50:55 ajc
3252 * Fixed a problem where the client protocol would spit out two responses
3253 and therefore get out of sync if ASUP command set the access level to
3254 0 and therefore deleted the user (thanks to Eric McDonald)
3256 Revision 1.400 1999/10/28 05:08:49 ajc
3257 * Removed all of the thread cancellation cruft that is no longer necessary
3258 * Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
3259 it's part of cleanup() in citserver.c)
3260 * Removed all references to pthread_* from all modules except sysdep.c
3262 Revision 1.399 1999/10/28 03:20:17 ajc
3263 * Fixed the problem of worker threads waking up prematurely.
3264 * 'QUIT'-terminated sessions now exit properly.
3266 Revision 1.398 1999/10/27 04:26:58 ajc
3267 * Initial hack of worker-thread rearchitecture. Right now it is successfully
3268 dispatching worker threads to active client sockets (and to the master
3269 socket too, of course). Removing sessions is currently broken.
3271 Revision 1.397 1999/10/26 20:20:29 ajc
3272 * Removed the auto-reconnect stuff... it was locking the client in an active
3273 loop more often than it was reconnecting.
3275 Revision 1.396 1999/10/26 13:59:11 ajc
3278 Revision 1.395 1999/10/26 03:48:39 ajc
3279 * Shuffled around the order of events when a thread is terminating. All
3280 mutex operations now happen prior to the freeing of the CitContext structure,
3281 otherwise begin_critical_section() and end_critical_section() try to
3282 manipulate the context's mutex count when there isn't any context.
3284 Revision 1.394 1999/10/26 03:21:16 ajc
3285 * Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
3286 hardcoded size arguments with 'sizeof' based arguments.
3288 Revision 1.393 1999/10/24 19:22:51 nbryant
3289 * Makefile.in, configure.in: added --enable-icq flag; made checks for
3290 authentication libraries more intelligent.
3292 Revision 1.392 1999/10/23 03:39:12 ajc
3293 * Finished moving vCard functionality to the new message base functions.
3295 Revision 1.391 1999/10/21 00:50:14 ajc
3296 * Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
3298 Revision 1.390 1999/10/20 16:46:27 ajc
3299 * More code shuffle. Added some flags to CtdlSaveMessagePointerInRoom() and
3300 enabled the MOVE command to also do a "copy" operation (actually just
3301 creates a second link and bumps the ref count). Implemented "<C>opy" in
3304 Revision 1.389 1999/10/20 16:07:48 ajc
3305 * Wholist fixes for users who are in chat mode
3307 Revision 1.388 1999/10/20 03:42:29 ajc
3308 * In the wholist, only show <private room> if the user viewing the list
3309 doesn't know that room. Otherwise show the name.
3311 Revision 1.387 1999/10/20 02:59:22 ajc
3312 * Code reorganization. Making it easier to move/copy messages without
3313 duplicating existing code.
3315 Revision 1.386 1999/10/17 02:25:18 ajc
3316 * Discovered a huge design flaw in the replication algorithm. Ripped it
3317 out and replaced it with something a bit more robust.
3319 Revision 1.385 1999/10/16 05:30:17 ajc
3320 * Changes to message replication code. Don't do server-side hooks during
3321 an ENT3 command. Also fixed a bug in cmd_whok() that caused crashes
3322 after a file format change.
3324 Revision 1.384 1999/10/14 03:04:16 ajc
3325 * Finished the netproc side of Z (zap/supersede) processing for replication
3327 Revision 1.383 1999/10/13 04:24:18 ajc
3328 * Added search-by-header-fields to CtdlForEachMessage(), and then to the
3329 server MSGS command. This will have lots of uses.
3331 Revision 1.382 1999/10/13 01:36:39 ajc
3332 * Starting some work on network zap (supersede) mode for replication
3334 Revision 1.381 1999/10/08 02:55:57 ajc
3335 * More vCard-related debugging
3337 Revision 1.380 1999/10/07 02:58:46 ajc
3338 * Semi-broken vCard replacement implementation in place.
3339 * Added "Z" (Zap, supersede) field to message format
3341 Revision 1.377 1999/10/04 03:19:52 ajc
3342 * We now have a housekeeping thread and a housekeeping queue.
3344 Revision 1.376 1999/10/03 21:48:21 ajc
3345 * Added serv_upgrade.h to automagically convert pre-5.55 format user records
3346 to 5.55 format user records and generate vCards.
3348 Revision 1.375 1999/09/29 21:13:17 ajc
3349 * CtdlWriteObject() can now store objects in personal rooms for any specified
3350 user -- rather than only the current user or non-personal rooms.
3352 Revision 1.374 1999/09/29 17:26:56 ajc
3353 * serv_vcard.c: fixed crashola bug in cmd_greg()
3354 * tools.c: simplified and improved the string tokenizer. Now it runs in a
3355 single pass with no intermediate buffer.
3357 Revision 1.373 1999/09/28 03:27:37 ajc
3358 * Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
3360 Revision 1.372 1999/09/27 03:33:40 ajc
3361 * cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
3362 usersupp file. Still needs tweaking.
3364 Revision 1.371 1999/09/24 03:32:19 ajc
3365 * "read my vCard" and "write my vCard" are written and tested.
3367 Revision 1.370 1999/09/24 02:54:17 ajc
3368 * Worked a little more on the vCard stuff. The serv_vcard module is now in
3369 place, and a "read my vcard" function is there; "write my" is next...
3371 Revision 1.369 1999/09/23 03:07:56 ajc
3372 * The vCard 'class' is now linked into the server, though it's not really
3373 functional yet. Its constructors/destructors are debugged, though.
3375 Revision 1.368 1999/09/19 21:28:33 ajc
3376 * Finished off the message architecture stuff with a new class of hooks to
3377 enable future server-side handlers.
3379 Revision 1.367 1999/09/19 15:57:06 ajc
3380 * migrated cmd_ent3() to CtdlSaveMessage()
3382 Revision 1.366 1999/09/19 05:13:57 ajc
3383 * Debugged the new version of CtdlWriteObject()
3385 Revision 1.365 1999/09/16 03:23:23 ajc
3386 * Did most of the migration from save_message() to CtdlSaveMsg(). The
3387 latter builds a "struct CtdlMessage" (so we can run server-side handlers
3388 against it later on), then serializes it and stores to disk.
3389 * BROKEN BUILD ALERT!! cmd_ent3() and CtdlWriteObject() are still not
3390 migrated. They are stubbed out and will MALFUNCTION if used right now!!
3392 Revision 1.364 1999/09/07 01:42:42 ajc
3393 * cmd_msg3() now uses serialize_message() for its output. All message
3394 commands will eventually exist as a "struct CtdlMessage" at some point
3395 so that we can install server-side handler hooks.
3397 Revision 1.363 1999/09/07 00:04:13 ajc
3398 * netproc.c: put outgoing messages into the use table, too -- this prevents
3399 locally originated messages from showing up again if a remote system is
3400 misconfigured and spools them back to us.
3402 Revision 1.362 1999/09/06 03:39:15 ajc
3403 * citadel.c: run strproc() on new passwords
3405 Revision 1.361 1999/09/03 17:50:26 playcow
3406 For URL view, don't prompt user to select url if there is only one. Display
3407 <U>RL View prompt if message contains url(s). -Ben
3409 Revision 1.360 1999/09/02 02:09:59 ajc
3410 * msgbase.c: new function serialize_message() for future use
3412 Revision 1.359 1999/09/01 21:09:25 ajc
3413 * database.c: display the GDBM version string on startup
3415 Revision 1.358 1999/09/01 02:36:34 ajc
3416 * Actually _enforce_ the max msg len limit
3418 Revision 1.357 1999/09/01 01:51:48 ajc
3419 * Added the ability to handle embedded URL's from the text client
3421 Revision 1.356 1999/09/01 01:02:47 ajc
3422 * Implemented "maximum message length" in global system config
3424 Revision 1.355 1999/08/31 00:57:17 ajc
3425 * Handle multipart/alternative properly during legacy message outputs.
3426 Basically it just prints the first alternative and skips the rest.
3428 Revision 1.354 1999/08/29 21:12:24 ajc
3429 * Made some changes to the output of MIME (especially multipart) messages.
3431 Revision 1.353 1999/08/29 19:56:43 ajc
3434 Revision 1.352 1999/08/24 02:01:03 ajc
3435 * html.c: added. This is an overly simplistic HTML-to-text converter.
3437 Revision 1.351 1999/08/21 18:37:29 ajc
3438 * Minor cosmetic cleanup. No code changes.
3440 Revision 1.350 1999/08/21 05:15:34 ajc
3441 * mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
3442 on a Citadel network rather than only on the local system.
3444 Revision 1.349 1999/08/08 00:25:45 ajc
3445 * Made one more byte available in locate_host() and in all the structs which
3446 its output gets written to (client can display 24 positions but we were only
3449 Revision 1.348 1999/08/07 16:34:38 nbryant
3450 * serv_icq.c: warning fixes
3452 Revision 1.347 1999/08/06 02:57:26 ajc
3453 * locate_host.c: use strdoop() and phree() instead of strdup() and free()
3454 * serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
3456 Revision 1.346 1999/08/05 17:58:59 ajc
3457 * RWHO command now returns express message code in postion 3
3459 Revision 1.345 1999/08/04 02:21:45 ajc
3460 * Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
3462 Revision 1.344 1999/08/03 11:34:35 ajc
3463 * Added client_icq.c and client_icq.h
3465 Revision 1.343 1999/08/03 03:14:51 ajc
3466 * Wrote the client side of the ICQ gateway. Now on to other projects. :)
3468 Revision 1.342 1999/08/03 01:52:06 ajc
3469 * Redesigned the client protocol commands for dealing with ICQ
3470 * Implemented page function priority ordering to prevent pages from being
3471 simultaneously delivered over multiple IM systems
3472 * Migrated serv_icq.* into the Makefile
3474 Revision 1.341 1999/08/01 21:36:30 ajc
3475 * EXTREME coolness. The server side of the ICQ metaclient is now working.
3476 It is set up using ICQL and ICQA commands, it automatically logs the user
3477 onto ICQ along with Citadel, and displays all non-offline ICQ contacts
3480 Revision 1.340 1999/07/31 07:18:01 ajc
3481 * Restructured the express message infrastructure, adding a class of function
3482 hooks for the addition of multiple paging modules with message routing
3484 Revision 1.339 1999/07/30 22:20:19 ajc
3485 * Applied bugfix patches contributed by Vaggelis Tsirkas:
3486 * rooms.c: buffer overrun fix
3487 * room_ops.c: cmd_rdir() now behaves better when directory doesn't exist
3489 Revision 1.338 1999/07/30 03:32:24 ajc
3490 * Added strdoop(), a leak-checked version of strdup()
3491 * Small fixes to new API functions in msgbase.c
3492 * ICQ metaclient stores/reads config using the message base API functions
3494 Revision 1.337 1999/07/29 03:36:37 ajc
3495 * msgbase.c: reorganized. output_message() now uses CtdlFetchMessage(),
3496 cmd_msg3() now fetches directly from disk and spews to the client.
3498 Revision 1.336 1999/07/28 04:02:37 ajc
3499 * Server modules are now labelled with their RCS ID instead of a complex and
3500 manually-updated data structure.
3502 Revision 1.335 1999/07/28 03:50:24 ajc
3503 * serv_expire.c: expire-by-age now calls CtdlFetchMessage() instead of
3504 calling output_message() in MT_DATE mode.
3505 * msgbase.c: removed MT_DATE mode ('twas a sleazy hack)
3507 Revision 1.334 1999/07/27 22:47:26 ajc
3508 * Implemented new data type "CtdlMessage" which will eventually be used as
3509 widely as possible to represent a message in memory.
3510 * Implemented CtdlFetchMessage() which is intended to become the back-end to
3511 output_message() as well as a bunch of other things.
3513 Revision 1.333 1999/07/27 20:00:24 ajc
3514 Removed all references to CC->msglist and CC->num_msgs, and all utility
3515 functions which relied upon them. Citadel Is Now Better.
3517 Revision 1.332 1999/07/27 19:32:22 ajc
3518 Removed serv_upgrade.c and all references to it in Makefile.in
3519 Reworked new-mail-count to not use MessageFromList() etc.
3521 Revision 1.331 1999/07/25 02:59:37 ajc
3522 Fixed reference count problem in cmd_move()
3524 Revision 1.330 1999/07/24 22:50:38 ajc
3525 Continued replacing references to [get|put]_msglist() with better code.
3526 For some reason, cmd_msgs() still doesn't always work right.
3528 Revision 1.329 1999/07/24 22:16:41 ajc
3529 Experimenting with automatic updating of ChangeLog by CVS. Simply twiddle
3530 ChangeLog a bit (i.e. by adding or removing a newline from the end of the
3531 file) before issusing "cvs commit", and the comments recorded by CVS will
3532 automatically appear at the beginning of ChangeLog.
3534 Revision 1.328 1999/07/24 22:14:21 ajc
3535 cmd_move() now uses CtdlDeleteMessages().
3536 WARNING: build is temporarily broken. Currently removing all references
3537 to the "msglist" kept in CitContext. It's ugly and must die.
3539 Thu Jul 22 22:26:50 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3540 * Moved message deletion into new API function CtdlDeleteMessages()
3541 * Added CtdlWriteObject() to store generic data in the msgbase
3542 * Fixed really dumb error that prevented network msgs from posting
3544 Tue Jul 20 22:14:54 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3545 * Moved the actual work done in cmd_msgs() into a new API function
3546 called CtdlForEachMessage() which is supplied a callback function.
3548 Mon Jul 19 23:24:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3549 * Keep the (unqualified) content-type in the SuppMsgInfo record. We'll
3550 be using this shortly to search rooms for specific object types.
3552 Sun Jul 18 14:53:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3553 * Changes to dynloader et al to handle ICQ module being written
3554 * serv_icq.c, serv_icq.mk: added (separate makefile is temporary)
3556 1999-07-17 Nathan Bryant <bryant@cs.usm.maine.edu>
3557 * chkpwd.c: DELETED CVS REVISION 1.3 (backed out Art's last change)
3558 use 'cvs update -r 1.2 chkpwd.c; cvs update -A chkpwd.c' NOW to
3559 avoid problems with working directories.
3560 * Makefile.in: don't install chkpwd setuid if make install isn't
3562 * citadel.spec: chmod u+s chkpwd during %install stage
3564 Fri Jul 16 18:39:04 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3565 * PEXP and GEXP no longer trip the idle time display
3566 * Fixed bug which duplicated incoming private mail to Trashcan
3567 * Improved auto-reconnect by NOT using SIGPIPE and longjmp(); also
3568 implemented a 15 second delay to wait for a crashed server to restart
3569 * Relaxed the security check in chkpwd.c a bit; it was just flat-out
3570 preventing logins on my system otherwise
3572 Thu Jul 15 22:57:32 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3573 * eliminate redundant "name" parameter in [l]putuser(), now uses
3574 usbuf->fullname to guarantee the correct name for the index
3576 1999-07-12 Nathan Bryant <bryant@cs.usm.maine.edu>
3577 * Makefile.in, configure.in: link netproc with gdbm
3578 * netproc.c: only include gdbm.h if HAVE_GDBM_H
3579 * user_ops.c: warning fix
3581 Mon Jul 12 19:51:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3582 * Mail is now saved in both sender and recipient mailboxes. This is
3583 structured in a way that will allow a separate "outbox" room and/or
3584 multiple recipients in the future.
3586 Sun Jul 11 18:46:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3587 * netproc.c: msgfind() no longer uses the timestamp as a message-ID
3588 when no other message-ID is available (it screws up the loopzapper)
3589 * room_ops.c: eliminate room name parameter in putroom() and its ilk;
3590 get data from quickroom.QRname instead; prevents incorrect indexes
3591 * Tentative implementation of "personal rooms" (user-private namespace)
3592 * Added supplementary message info records for info that may change
3593 at some time later than when the message is saved (i.e. ref counts)
3594 * Implemented msg reference count increment/decrement; delete messages
3595 whose reference count reaches zero
3597 Wed Jul 7 23:25:09 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3598 * control.c: create citadel.control if it doesn't exist (yikes!)
3599 * serv_expire.c: purge mailbox rooms belonging to non-existent users
3600 * user_ops.c: don't delete user's mailbox at user-delete time
3602 Mon Jul 5 17:01:29 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3603 * utilsmenu: removed menu items for defunct utilities
3605 Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3606 * Changed any remaining references to UUCP, to "Internet" instead.
3608 Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3609 * added server command line option "-f" to defrag databases on startup
3610 * control.c: better performance and reliability in [get|put]_control()
3611 * netproc.c: Finished the loopzapper
3613 Mon Jun 21 00:04:15 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3614 * netproc.c: started writing a vortex checker. Not finished.
3616 Wed Jun 9 23:34:25 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3617 * Replaced all code that generated temporary filenames with calls to
3618 tmpnam(). Rewrote using tmpfile() where possible.
3620 Thu Jun 3 11:35:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3621 * base64.c: mapped fi and fo to stdin and stdout using
3622 actual code rather than assignment at declaration time
3623 (several users of Red Hat Linux 6.0 reported problems)
3625 Fri May 21 20:05:00 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3626 * Added function CtdlGetDynamicSymbol() for dynamic symbol allocation
3627 * server.h: Changed discrete #define's to enum's where appropriate
3628 * sysdep.c: Changed the startup message to give credit to the whole
3629 development team :) Also made the message more GNU-ish.
3631 Thu May 20 20:01:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3632 * database.c: print log messages for file defragmentations
3633 * citserver.c: implemented CtdlAllocUserData() and CtdlGetUserData()
3634 for arbitrary per-session data storage (by modules etc.) without
3635 having to add fields to struct CitContext
3636 * msgbase.c: removed "desired_section" from struct CitContext and
3637 implemented it using CtdlGetUserData() as a test.
3639 Wed May 19 19:30:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3640 * commands.c, commands.h, routines.c: began color scheme changes
3642 1999-05-15 Nathan Bryant <bryant@cs.usm.maine.edu>
3643 * configure.in: Added untested support for BSDI 4.x.
3645 1999-05-13 Nathan Bryant <bryant@cs.usm.maine.edu>
3646 * acconfig.h, configure.in, routines.c: fix for certain SYSV variants
3647 which lack utmp.ut_host
3648 * citadel.h, file_ops.c, msgbase.c, netproc.c, serv_chat.c: fix
3649 namespace collision with <sys/stream.h> on aforementioned SYSV
3651 * configure.in, getutline.c: check for paths.h
3652 * configure.in, Makefile.in: check for -lsocket and -lnsl
3654 1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
3655 * chkpwd.c: fixed excessive paranoia; it used to refuse to run when
3656 invoked by root and BBSUID != 0
3657 * Makefile.in: ignore errors while installing /etc/pam.d/citadel
3659 1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
3660 * file_ops.c: fixed NDOP to not crash the server if it has trouble
3661 with a download file
3662 * netpoll.c: upped default packet size
3664 Mon Apr 26 22:06:57 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3665 * Repaired IGnorant security hole blunder re. citmail
3667 Sun Apr 25 12:44:08 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3668 * serv_chat.c: notify user of number of participants upon entering chat
3669 * Built the 5.53 distribution
3671 Wed Apr 21 22:23:13 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3672 * aidepost.c: add -r flag to allow posting to rooms other than Aide>
3673 * serv_expire.c: now posts transcripts of all auto-purged rooms/users
3675 Tue Apr 20 12:45:55 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3676 * messages.c: downloading more than MAX_MSGS messages now truncates
3677 (off the beginning of the list) rather than crashing.
3679 Mon Apr 19 12:11:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3680 * whobbs.c: auto-detect when being called from a webserver, and act
3681 as a CGI (print HTTP headers and HTML output)
3683 1999-04-18 Nathan Bryant <bryant@cs.usm.maine.edu>
3684 * serv_chat.c: fixed some potential buffer overruns (thanks dme)
3686 Wed Apr 14 21:32:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3687 * Makefile.in: chmod 4755 citmail to prevent citmail from aborting
3688 when called from sendmail due to citadel.config security check
3690 1999-04-13 Nathan Bryant <bryant@cs.usm.maine.edu>
3691 * dynloader.c: OpenBSD places underscores in front of symbol names
3692 * Makefile.in: fixed a few sillies
3693 * aidepost.c, citmail.c, file_ops.c, logging.c, msgbase.c, netmailer.c,
3694 netproc.c, rcit.c, routines.c, serv_upgrade.c: fixed time_t handling
3695 (have to cast it to long for printf/scanf)
3697 Mon Apr 12 22:13:26 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3698 * aidepost.c: rewrote to unlink temp file before writing to it so that
3699 it will automatically go away if interrupted. Also ran indent -kr -i8
3701 1999-04-12 Nathan Bryant <bryant@cs.usm.maine.edu>
3702 * configure.in, Makefile.in: taught it how to generate OpenBSD shared
3704 * config.c, sysdep.c: fix -h option not setting proper modules dir
3705 * configure.in, citadel.spec: make --enable-chkpwd the default
3706 * setup.c: don't chown chkpwd
3708 1999-04-11 Nathan Bryant <bryant@cs.usm.maine.edu>
3709 * configure.in: another OpenBSD fix, but we're still not quite there yet
3710 * serv_chat.c: warning fix
3712 Thu Apr 8 22:51:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3713 * config.c: now requires a setup run for *any* rev level difference
3714 * Updated docs & confs for 5.53b1 release
3715 * setup.c: sets the 0600 permission bits on citadel.config that
3716 is checked for in config.c
3718 1999-04-08 Nathan Bryant <bryant@cs.usm.maine.edu>
3719 * citserver.c: improved is_public_client(), also if a public_client
3720 only supplies a numeric address, attempt to resolve it
3721 * locate_host.c: verify that the forward DNS matches the reverse
3722 * locate_host.c, locate_host.h: more general interface
3723 * configure.in, acconfig.h: fixes for Digital UNIX
3725 Wed Apr 7 21:36:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
3726 * Implemented "access level required to create rooms" (client & server)
3728 1999-04-07 Nathan Bryant <bryant@cs.usm.maine.edu>
3729 * configure.in: updated help messages, OpenBSD support
3730 * setup.c: if /etc/inittab doesn't exist, don't ask to create an
3732 * server.h, sysdep.c: fix a potential deadlock/data corruption bug
3733 * room_ops.c: fixed the 'gdbm error: Illegal data' message when
3734 deleting a room which had never been posted to
3735 * user_ops.c: include errno.h
3736 * dynloader.c: fix for OpenBSD
3738 1999-04-06 Nathan Bryant <bryant@cs.usm.maine.edu>
3739 * Makefile.in, configure.in, getutline.c, sysdep.c:
3740 fixes/bug workarounds for FreeBSD
3742 1999-04-03 Nathan Bryant <bryant@cs.usm.maine.edu>
3743 * Makefile.in, configure.in, chkpwd.c, acconfig.h: support for
3744 `chkpwd', a setuid helper program for machines which use shadow
3745 passwords (configure --enable-chkpwd)
3746 * Makefile.in, configure.in, auth.c, citadel.pam, user_ops.c: support
3747 for PAM or shadow passwords (configure --with-pam)
3748 * Makefile.in: made some messages simpler
3749 * citadel.spec: updated for 5.53; correct name of tarball; build with
3750 --enable-chkpwd and --with-pam; add defattr tags so rpm's can be
3751 built by non-root user
3752 * commands.c: cosmetic cleanup
3753 * config.c: (security/paranoia) check permissions on citadel.config
3754 * configure.in: check for ncurses if we can't find curses
3755 * dynloader.c: warning fix
3756 * sysdep.c: don't complain if initgroups() fails
3757 * citadel.c: fix systems with SYSV-style signal handling (e.g. libc5)
3758 * Makefile.in: New! Improved! Cleaner! Shinier!
3760 Sun Mar 21 14:21:47 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3761 * messages.c: cosmetic cleanups to message reading loop
3763 Sat Mar 13 21:33:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3764 * commands.c: use bright colors by default in color mode
3765 * citserver.c: initialize wholist fields with (not logged in) etc.
3767 1999-03-08 Nathan Bryant <bryant@cs.usm.maine.edu>
3768 * sysdep.c: call DLoader_Init() with an absolute path so that gdb can
3770 * database.c: bail out if opening databases fails
3772 Sat Mar 6 01:55:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3773 * serv_chat.c: use memfmout(), *not* cprintf() to transmit express
3774 messages. Calling cprintf() on strings >256 bytes crashes the server
3775 * msgbase.c: minor logging fix in save_message()
3777 1999-03-05 Nathan Bryant <bryant@cs.usm.maine.edu>
3778 * sysdep.c: add undocumented -r flag to citserver to prevent it from
3779 dropping root permissions.
3780 * sysdep.c: also drop supplementary groups
3782 1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
3783 * config.c: error checking in put_config()
3784 * setup.c: chgrp files to the login group associated with BBSUID
3785 * sysdep.c: copyright 1987-1999; drop root perms; load modules and call
3786 master_startup() after dropping perms
3788 Wed Mar 3 00:00:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3789 * Prevent buffer overruns in lowercase_name in [get|put]user()
3790 * client_chat.c: use citedit() for page composition
3792 Sat Feb 27 07:47:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3793 * rooms.c: download_to_local_disk() prompts for a filename if a blank
3794 filename was supplied to it (for attachments without names)
3795 * mime_parser.c: strip leading whitespace in content_type & disposition
3797 1999-02-24 Nathan Bryant <bryant@cs.usm.maine.edu>
3798 * configure.in: improved check for pthreads
3799 * configure.in, routines.c, acconfig.h: check for ut_type in struct utmp
3800 * configure.in, Makefile.in: support for building server modules as
3801 relocatable objects for BSDI (which still uses a.out *gag* *choke*)
3802 * configure.in: compiler choice & flags for BSDI; check for libtermcap
3803 * database.c: don't use a critical section in open_databases()
3804 * housekeeping.c: use getfloor()/putfloor() instead of
3805 lgetfloor()/lputfloor() in check_ref_counts()
3806 * mime_parser.c: include <errno.h>
3807 * msgbase.c: include <limits.h>
3808 * sysdep.c: hacks for BSDI. use signals to fake thread cancellation;
3809 don't call master_cleanup() directly from signal handler.
3810 * routines.c: prototype getutline() if necessary
3811 * getutline.c: stupid bugfix
3812 * acconfig.h, configure.in, locate_host.c, server.h: work around
3813 nonreentrant gethostbyaddr() on BSDI
3815 Mon Feb 15 22:59:00 EST 1999 Vaggelis Tsirkas
3816 * citadel.c: increased hostname buffer size to handle very big names
3818 1999-02-15 Nathan Bryant <bryant@cs.usm.maine.edu>
3819 * sysdep.c(main): initialize alen before call to accept()
3821 1999-02-04 Nathan Bryant <bryant@cs.usm.maine.edu>
3822 * configure.in: improved check for cygwin
3823 * configure.in, routines.c: access utmp directly instead of calling
3824 `who' if getutline() is available.
3825 * configure.in, Makefile.in, getutline.c: replace getutline() on
3826 systems which don't have it
3827 * routines.c: now always access utmp directly unless we can't find
3830 1999-02-02 Nathan Bryant <bryant@cs.usm.maine.edu>
3832 - ifdef out file download methods that require named pipes (client)
3833 - include pthread.h and gdbm.h only if they are present (fixes
3834 auto dependency generation)
3835 - include snprintf.h where needed
3836 - handle .exe suffixes for "make install"
3838 Tue Feb 2 22:15:08 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3839 * Overhauled the express messaging system (again)
3841 Mon Feb 1 19:48:04 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3842 * messages.c: implemented client download of MIME attachments
3844 Sun Jan 31 18:29:18 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3845 * Added qpdecode.c to the distribution (decodes quoted-printable)
3846 * Finished the MIME parser
3847 * Gave MSG0 a reasonable behaviour for MIME messages
3848 * Added the OPNA command for downloading attachments
3850 Sat Jan 30 18:39:53 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3851 * Look for citadel.rc in current directory if not found elsewhere
3852 * More work on the MIME parser
3853 * Added base64.c to the distribution
3855 1999-01-29 Nathan Bryant <bryant@cs.usm.maine.edu>
3856 * fixes for IRIX (thanks to wr and family for use of the Indy):
3857 - use memset()/memcpy() instead of bzero()/bcopy() in all cases
3859 - handle `long' pid's
3860 - a few other little bits
3862 Mon Jan 25 21:23:07 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3863 * Fixed bug in save_message() which crashed the server on mail to sysop
3864 * Rewrote pop_march() to be smarter about <G>oto heuristics
3866 Sat Jan 23 14:32:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3867 * Changed internal storage of express messages from a linked list to
3868 a single, resizable buffer.
3869 * Added a "room order" key to the room record, to allow some control
3870 over room listing order.
3871 * Made the room list commands aware of the room order key.
3872 * Overhauled <G>oto heuristics to pay attention to floor & room order
3874 Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3875 * Added some more code to the unfinished MIME parser
3876 * Changed module loading path to simply "modules" because after calling
3877 get_config(), the cwd is guaranteed to be the correct BBS directory.
3879 Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3880 * Fixed a bug in the user editing command (client side)
3881 * Started a rewrite of the MIME parser
3883 Thu Jan 14 21:21:15 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3884 * Brought over the mime_parser from WebCit and began preliminary work
3885 on supporting MIME format messages.
3887 Tue Jan 12 22:30:00 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3888 * Various changes to begin work on support for MIME messages
3889 - Defined format type 4 for MIME
3890 - msgbase.c: *temporary* hacks in output_message() for Type 4
3891 - citmail.c: added more robust header parsing, and support
3892 for Type 4. Also eliminated the crappy built-in
3894 - Updated some of the technical documentation
3896 Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3897 * Fixed access to page log room
3899 Fri Jan 8 12:35:09 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3900 * control.c: include <limits.h> to fix PATH_MAX undefined
3901 * serv_chat.c: made the following changes to cmd_sexp() --
3902 * Send zero-length message to check only, don't send
3903 * Send "-" message on the command line to invoke
3904 the SEND_LISTING transfer mode for a multi-line message
3905 * Added facilities to log all pages to a room (site configurable)
3907 Tue Jan 5 23:24:52 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3908 * Replaced all occurances of malloc(), realloc(), and free() in the
3909 server and server-modules with mallok(), reallok(), and phree().
3910 Wrote macros and a set of leak-tracking functions.
3912 Sun Jan 3 20:38:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3913 * Documentation changes
3915 Fri Jan 1 01:01:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
3916 * Fixed security problem relating to private rooms
3918 Wed Dec 30 20:10:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3919 * sysdep.c: put a bigger string buffer into lprintf() to avoid overruns
3921 Sat Dec 26 16:56:46 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3922 * internetmail.config: commented this file more clearly
3924 Wed Dec 23 20:42:49 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3925 * citadel.c: added some experimental code to automatically reconnect
3926 to the server if the connection is broken. For some reason, it only
3929 Wed Dec 23 18:47:12 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3930 * sysdep.c: ignore SIGPIPE. This keeps broken connections from
3931 crashing the whole server.
3932 * Tagged everything for the official 5.50 release.
3934 Mon Dec 21 07:54:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3935 * housekeeping.c: call kill_session() with session_to_kill,
3936 not ccptr->cs_pid (was crashing the server)
3938 Sat Dec 19 13:57:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3939 * Added "-i" flag to netproc to make it skip the export phase.
3940 Updated other programs to call netproc in this way when appropriate.
3941 * Updated network.txt to reflect the usage for netproc (which has
3942 been wrong for several releases)
3944 Thu Dec 17 00:17:04 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3945 * Started removing the word "beta" from the docs and code.
3946 Preparing for an actual release.
3947 * msgbase.c: generate an 'I' field when requested (i.e. on locally
3948 originating messages. this was breaking parts of the network)
3950 1998-12-15 Art Cancro <ajc@uncensored.citadel.org>
3951 * msgbase.c: remove extra call to alias() which was causing
3952 Citadel-to-Citadel mail to fall into the bit bucket.
3953 * msgbase.c: fixed tempfile naming problem that could cause a new
3954 outgoing netmail message to overwrite another if netproc had not been
3957 1998-12-14 Art Cancro <ajc@uncensored.citadel.org>
3958 * More session table stability nonsense
3960 Sun Dec 13 17:40:08 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3961 * sysdep.c, citserver.c: (hopefully) fixed a session table concurrency
3962 bug which was causing the server to occasionally crash.
3963 * removed serv_test.so from the default build
3965 Fri Dec 11 18:50:00 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3966 * setup.c: default value for maxsessions is now 0 (no limit)
3967 * room_ops.c: don't allow users to create a room called "Mail"
3968 * serv_expire.c: fixed "number of messages purged" display
3969 * commands.c: when using color, default to low-intensity colors
3971 Tue Dec 8 07:58:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3974 Sat Dec 5 01:24:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3975 * Added a new type of module hook for adding logging functions
3976 * Removed whitespace to left and right of '@' in netmail recipients
3977 * sysdep.c: read citadel.config _before_ initializing loadable modules
3978 * stats.c: fixed segfault resulting from extracting log lines
3979 * Ripped most of the "attachments" stuff out of both the client and
3980 server. (Thought of a better way to handle it ... LATER.)
3982 1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
3983 * setup.c: create citadel.config with mode 0600
3984 * Makefile.in: don't chmod sendcommand
3985 * serv_upgrade.c: don't create citadel.config if it doesn't already
3987 * setup.c: saner defaults for nodename and fqdn
3989 Wed Dec 2 20:37:05 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3990 * msgbase.c: modified AddMessageToRoom() and all functions that call it
3991 to use a more reliable/accurate method to set quickroom.QRhighest
3992 * weekly.in: don't sort/purge filedir where filedir doesn't exist
3994 1998-12-02 Nathan Bryant <bryant@cs.usm.maine.edu>
3995 * weekly is now generated by configure
3997 Mon Nov 30 19:48:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
3998 * room_ops.c: added sort_msglist() to move and save operations
3999 * sendcommand.c: added (also updated utils.txt, weekly, Makefile.in)
4002 Sun Nov 29 23:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4003 * Fixed cmd_regi() to not display a second result code after xfer
4004 * Makefile.in: Removed "chmod 4755 citmail netmailer"
4006 1998-11-23 Nathan Bryant <bryant@cs.usm.maine.edu>
4007 * citadel.spec: added
4009 1998-11-22 Nathan Bryant <bryant@cs.usm.maine.edu>
4010 * Makefile.in: split install target into install-exec, install-data,
4011 and install-doc subtargets
4013 Sat Nov 21 16:53:30 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4014 * Added a fourth color mode in the client: "user" which turns color
4015 on or off according to a per-user flag stored on the server. Added
4016 server-side support for this too, of course.
4018 * serv_expire.c: finished the code to purge stale visits
4019 * sysdep.c: strip trailing nonprintables in client_gets()
4020 * routines2.c: fixed <.AS> command; all configs now work properly
4021 * Moved num_parms() and all the extract() type functions into tools.c
4022 and removed them from all other files. Linked in tools.[o|ro] there.
4023 * netproc.c: handled incoming file transfers to correct room directory
4024 * room_ops.c: fixed incorrect naming of files in info and images dirs
4026 Fri Nov 20 20:29:07 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4027 * setup.c: removed all prompts that can be configured from within the
4028 client in order to simplify the setup procedure
4030 Thu Nov 19 23:28:33 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4031 * Fixed serv_upgrade.c and export5.c (found elsewhere) to use a new
4032 export format which treats visits as a separate section
4033 * serv_expire.c: began writing functions to purge rooms and visits
4034 (neither work yet), and added a way to call defrag_databases()
4036 Wed Nov 18 23:51:17 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4037 * Reimplemented 'visit' structs stored globally instead of as
4040 Tue Nov 17 22:37:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4041 * Started implementing global room numbers.
4043 Sun Nov 15 20:32:34 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4044 * room_ops.c: mailbox rooms always appear on the main floor
4045 * made QR_MAILBOX rooms non-editable
4046 * cmd_setr() delete old room record when room name changes
4047 (This causes a big mess that exposes a flaw in the whole design.)
4048 * room_ops.c: users can delete messages from their mailboxes
4050 Thu Nov 12 23:59:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4051 * Rewrote cmd_rchg() and also increased the size of the "fakename"
4052 buffer. Overruns are probably what was causing the crashes.
4053 * Changed the way cmd_ent3() handles mail messages; the previous code
4054 rerouted all private mail to the trash.
4056 Wed Nov 11 17:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4057 * citserver.c: slight changes to cmd_rchg() and cmd_hchg() [crashes]
4058 * citserver.c, msgbase.c, user_ops.c: hide the owner-prefix of mail
4059 rooms in a couple more places: set_wtmpsupp() and make_message()
4060 * sysdep.c: added an fflush() to lprintf() for "tail -f"-able logs
4061 * serv_expire.c: purge ops are now a command instead of a cleanup
4062 function. This is probably temporary as well.
4063 * citadel.c: fixed the way <.WL> parses the returned data from a
4066 1998-11-11 Nathan Bryant <bryant@cs.usm.maine.edu>
4067 * serv_upgrade.c: fix uninitialized variable
4069 Wed Nov 11 00:47:32 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4070 * msgbase.c: fixed a bug that was misrouting incoming network msgs
4071 * server.h, database.c: wrapped all GDBM calls in critical sections
4072 to avoid making those calls re-entrantly (gdbm fatal: lseek error)
4074 1998-11-10 Nathan Bryant <bryant@cs.usm.maine.edu>
4075 * Makefile.in: link in snprintf.o where needed
4077 1998-11-09 Nathan Bryant <bryant@cs.usm.maine.edu>
4078 * client_chat.c: eliminate calls to sprintf()
4079 * commands.h, routines.c, routines2.c: warning fix
4080 * commands.c, control.c, cux2ascii.c, file_ops.c, import.c,
4081 ipc_c_tcp.c: eliminate sprintf() calls
4083 Mon Nov 9 19:15:31 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4084 * serv_upgrade.c: added all missing fields to export/import
4085 * serv_expire.c: support per-user purge time when purging users
4086 * user_ops.c: added per-user purge time to AGUP and ASUP commands
4087 * routines.c: added more stuff to <.A>ide <E>dit user
4089 Sun Nov 8 22:56:53 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4090 * serv_expire.c: created; moved message expiry from serv_test.c,
4091 moved user purge from userpurge.c
4092 * userpurge.c: deleted
4093 * routines2.c: finished <.AS> command
4094 * room_ops.c: fixed Aide room access (for some reason, the Aide
4095 room had the QR_MAILBOX flag set)
4097 1998-11-08 Nathan Bryant <bryant@cs.usm.maine.edu>
4098 * useradmin.c: really removed (cvs remove)
4099 * aidepost.c, citadel.c: convert all sprintf() calls to snprintf()
4100 * sysdep.c: fix overrun in lprintf() described by dme/Dead Monkey
4101 * citmail.c, citserver.c: convert all sprintf() call to snprintf()
4103 Sun Nov 8 13:19:36 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4104 * useradmin.c: removed
4105 * utils.doc: removed references to useradmin and sysoputil
4107 Fri Nov 6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4108 * citadel.h (and related files): removed defunct parameters,
4109 c_defent and c_msgbase (erase your test bbs)
4110 * Implemented CONF server command for site-global configs
4111 * Shuffled yesno() and yesno_d() from routines.c to commands.c
4112 * commands.c: implemented boolprompt()
4113 * routines2.c: started adding CONF questions to <.AS> command
4114 * room_ops.c: began a fix for the mysterious disappearing Aide room
4116 1998-11-05 Nathan Bryant <bryant@cs.usm.maine.edu>
4117 * snprintf.c: warning fix propagated over from gcit
4119 1998-11-04 Nathan Bryant <bryant@cs.usm.maine.edu>
4120 * added RCS Id keyword strings to sources
4121 * citmail.c: reverted to version 1.10
4123 Wed Nov 4 10:53:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4124 * messages.c: temporarily set screenwidth to a fixed value of 80
4125 during <P>rint operations.
4127 Mon Nov 2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4128 * setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
4129 try to get a default for bbsuid if it's currently set to 0
4130 * citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
4131 it complain about this before?)
4132 * serv_upgrade.c: began writing an "export" command to do sidegrades
4134 Sun Nov 1 18:47:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4135 * serv_upgrade.c: cosmetic changes
4136 * Implemented message expiry by date (this really needs to be moved
4137 out of serv_test.c, but where does it belong?)
4139 1998-11-01 Nathan Bryant <bryant@cs.usm.maine.edu>
4140 * serv_upgrade.c: warning fixes
4141 * acconfig.h: remove ANSI_COLOR
4142 * Configure, Makefile.tmpl: removed
4144 Sat Oct 31 20:48:44 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4145 * More stoopid ANSI colour additions here and there.
4146 * ANSI colour selection is now in citadel.rc instead of an option in
4147 the configure script. "on" "off" and "auto" are available.
4148 * added "build.txt" to the techdoc directory, with LS's build notes
4150 1998-10-31 Nathan Bryant <bryant@cs.usm.maine.edu>
4151 * citadel.c, commands.c, commands.h: set background color to black
4152 before clearing screen, so that we can actually see text on
4153 black-on-white xterms.
4155 1998-10-29 Nathan Bryant <bryant@cs.usm.maine.edu>
4156 * rooms.c: fix color of Mail>
4157 * citadel.c: send ANSI detect sequence after attach_to_server() so the
4158 terminal doesn't send the answerback sequence to the shell if we
4161 Wed Oct 28 20:20:14 EST 1998 Art Cancro <ajc@uncensored.citadel.org
4162 * citadel.c: Added a splash of colour to the Wholist
4164 1998-10-28 Nathan Bryant <bryant@cs.usm.maine.edu>
4165 * configure.in: added comments
4166 * mkinstalldirs: new file to be used for `make install'
4167 * aclocal.m4, missing: new files, also swiped from automake
4168 * citadel.c: don't mung the terminal if we can't find citadel.rc
4169 * Makefile.in: added `install' target, `clean' removes
4170 *.mo, rebuild configure when configure.in changes.
4171 * configure.in: check for install and autoconf
4172 * configure.in, Makefile.in: only pass -fPIC to gcc
4173 * policy.c: warning fix for OSF/1 (use memset() instead of bzero())
4175 Tue Oct 27 22:25:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4176 * Unified the "unpacked database" format for both upgrades and
4177 sidegrades (also see export5.c elsewhere)
4178 * citserver.c: clear out cmdbuf before reading a command; some server
4179 commands were accidentally extracting parameters from previous cmds
4180 * rooms.c: removed the warning about the ineffectiveness of kicking
4181 users out of public rooms, because the new server can do lockouts
4183 1998-10-27 Nathan Bryant <bryant@cs.usm.maine.edu>
4184 * sysdep.c (client_gets), ipc_c_tcp.c (serv_gets): improved handling
4186 * Makefile.in: partial support for VPATH builds, autodependency fix
4188 Tue Oct 27 00:08:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4189 * minor documentation changes
4191 Sun Oct 25 14:57:40 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4192 * messages.c: fixed an oversight that was allowing attachments even
4193 when disabled in citadel.rc
4195 1998-10-25 Nathan Bryant <bryant@cs.usm.maine.edu>
4196 * routines2.c: warning fix
4198 Sat Oct 24 22:07:56 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4199 * Client: added message expiration policy questions to room edit
4200 * Client: added <.A>ide <S>ystem configuration command
4202 1998-10-24 Nathan Bryant <bryant@cs.usm.maine.edu>
4203 * Makefile.in: Auto dependency generation (may require GNU make, but
4204 does at least function without this feature on OSF/1 make);
4205 Makefile is regenerated when Makefile.in changes (ditto);
4206 `realclean' is now known as `distclean';
4207 portability fixes for older Unix make utilities
4208 * citadel.c, citadel.h, commands.c: make client suspendable
4210 Fri Oct 23 19:34:38 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4211 * setup.c: default node name is now obtained from uname()
4212 * config.c: added put_config()
4213 * policy.c: added, moved GetExpirePolicy() from room_ops.c
4214 * policy.c: implemented cmd_gpex() and cmd_spex()
4216 Wed Oct 21 22:24:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4217 * Mail rooms now hide their owner-prefix from the client.
4218 * proxy.c: added configurability and primitive message expiry
4220 1998-10-20 Nathan Bryant <bryant@cs.usm.maine.edu>
4221 * Makefile.tmpl: fix to build client with old Configure script
4222 * configure.in: autologin defaults to enabled if crypt() is available
4223 * room_ops.c: fix improper null-termination bug I introduced
4225 Mon Oct 19 20:52:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4226 * Client ability to force display of prompts in Mail rooms, even when
4227 the user has prompting turned off (citadel.rc option)
4229 1998-10-16 Nathan Bryant <bryant@cs.usm.maine.edu>
4230 * sysdep.c (cprintf): generate a newline on truncated buffer
4231 * room_ops.c: exploitable overrun fixes
4233 Thu Oct 15 19:27:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4234 * msgbase.c: reimplemented cmd_move()
4235 room_ops.c: wrote AddMessageToRoom() which is used for both entering
4236 and moving messages.
4237 * setup.c: system-default message expire policy of "number of
4238 messages, 150" is now a default configuration instead of a temp hack
4239 * proxy.c: cache dir create now dies on any error except EEXIST
4241 Wed Oct 14 22:41:16 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4244 1998-10-13 Nathan Bryant <bryant@cs.usm.maine.edu>
4245 * configure.in: don't check for -lcrypt unless autologin is enabled
4246 * file_ops.c: fix another overrun
4248 Mon Oct 12 15:27:21 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4249 * Killed the "rooms" subdirectory (it isn't used anymore)
4250 * dynloader.c: Made dynamically added server commands case-insensitive
4251 * import.c is now serv_upgrade.c, a module
4252 * Removed most of the "level 9" trace messages no longer needed
4254 1998-10-12 Nathan Bryant <bryant@cs.usm.maine.edu>
4255 * Makefile.in: simplified to use pattern rules; files compiled with
4256 -D_REENTRANT go to *.ro to allow the same files to be used with both
4258 * tools.c, tools.h: new files; misc routines used by both client and
4259 server go here. contains safestrncpy() at the moment.
4260 * rooms.c: fix several exploitable buffer overruns
4261 * sysdep.c: fix infinite loop when long lines are received from the
4262 client; fix exploitable buffer overrun in cprintf()
4263 * ipc_c_tcp.c: fix infinite loop on long line from server
4264 * serv_upgrade.sh: remove uncnsrd-dependent absolute path
4265 * .cvsignore: add *.ro
4267 Sun Oct 11 23:17:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4268 * Built some more of the message expiry infrastructure
4270 1998-10-11 Nathan Bryant <bryant@cs.usm.maine.edu>
4271 * citserver.c: fix two more overruns, one of which was preventing
4272 the "From Host" from showing up in the <W>ho listing.
4274 Sun Oct 11 02:51:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4275 * Moved "struct visit" and its associated defs from citadel.h to
4276 server.h where they belong
4277 * Set up data structures for room policies (expiry, etc.)
4279 1998-10-10 Nathan Bryant <bryant@cs.usm.maine.edu>
4280 * citserver.c: fix overrun which caused segv's on servers with long
4283 Fri Oct 9 18:34:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4284 * user_ops.c: added PurgeStaleRelationships() to do processing at
4285 session logout time to remove visits for rooms which no longer exist
4286 * user_ops.c: implemented NewMailCount()
4288 1998-10-09 Nathan Bryant <bryant@cs.usm.maine.edu>
4289 * serv_chat.c: fix buffer overrun that was resulting in segv's
4290 * serv_chat.c: fix another overrun that could cause sessions to hang,
4291 and cleaned up some other strncpy()-related stuff. DON'T FORGET TO
4292 NULL-TERMINATE DESTINATION BUFFERS AFTER STRNCPY CALLS.
4294 Fri Oct 9 13:22:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4295 * Implemented "lazy mode" traversal - pressing the space bar will do
4296 <N>ext messsage, <G>oto next room, or read <N>ew as appropriate.
4297 * room_ops.c: modify CtdlRoomAccess() to allow access to mailbox rooms
4298 only to their owners.
4300 Thu Oct 8 17:13:27 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4301 * messages.c, citadel.rc: added the ability to display message numbers
4302 in the header when reading messages. I think this is butt ugly, but
4303 some of the DaveCode afficionados seem to like it...
4305 Thu Oct 8 15:34:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4306 * room_ops.c: Added is_noneditable() function to replace all of the
4307 duplicated code present in all functions which edit room parameters.
4309 1998-10-08 Nathan Bryant <bryant@cs.usm.maine.edu>
4310 * lots of warning fixes; builds with -std1 on dec unix
4311 * aidepost.c, citadel.h, citmail.c, file_ops.c, msgbase.c, netmailer.c,
4312 netproc.c, rcit.c, server.h, stats.c, userlist.c: use time_t where
4314 * control.c, room_ops.c, serv_chat.c, sysdep.c: use memset() instead of
4316 * dynloader.c, dynloader.h, messages.c, server.h, sysdep.c,
4317 sysdep_decls.h: function pointer/prototyping fixes
4318 * rooms.c: use mkfifo(3) instead of system("mkfifo")
4320 1998-10-07 Nathan Bryant <bryant@cs.usm.maine.edu>
4321 * snprintf.c, snprintf.h: new files
4322 * Makefile.in, configure.in, dynloader.c, sysdep.c: support for the
4323 above; citserver now builds and runs on Digital Unix 4.0d with the
4324 GNU-style configure script. there is a bug with the hostname display
4326 * netproc.c: sillyness fix
4327 * room_ops.h: prototype delete_room()
4328 * client_chat.c, commands.c, serv_chat.c, sysdep.c:
4329 use HAVE_SYS_SELECT_H macro
4331 Mon Oct 5 17:01:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4332 * Began fixing the stuff I broke
4334 Sun Oct 4 23:35:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4335 * Did the big migration to the new data structures. Lots of stuff is
4336 now broken. Basic moving from room to room works, but Mail is
4337 broken, and some of the administrative commands are unimplemented.
4339 1998-10-02 Nathan Bryant <bryant@cs.usm.maine.edu>
4340 * configure.in: autologin now defaults to disabled
4342 Fri Oct 2 00:04:31 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4343 * Finally removed all three usersupp.foo[MAXROOMS] elements, and
4344 migrated all the code that used them to use "struct visit" instead.
4346 Thu Oct 1 23:02:20 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4347 * Rewrote [l][get|put]room() functions to use room names rather than
4348 room index numbers. Temporarily prepended a "n" to these four
4349 function names until they are put to use.
4351 Thu Oct 1 16:27:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4352 * Removed a few more references to usersupp.lastseen[]
4354 1998-10-01 Nathan Bryant <bryant@cs.usm.maine.edu>
4355 * .cvsignore: add so_locations (generated by osf1 ld with shared libs)
4356 * Makefile.in: restructured variables for greater consistency, use
4357 @echo to print out notices during the make process, add so_locations
4359 * configure.in, Makefile.in: configure checks for -rdynamic
4360 * ipc_c_tcp.c: fix DEC compiler warning wrt unsigned char
4361 * stats.c: add semicolon to placate DREC compiler
4362 * user_ops.c: define _POSIX_C_SOURCE, include <limits.h>
4363 * configure.in: pass -pthread to DEC compiler, don't check for
4364 libpthread[s] on DEC Unix
4366 1998-09-30 Nathan Bryant <bryant@cs.usm.maine.edu>
4367 * Makefile.in: new variable PTHREAD_DEFS for portability
4368 * aidepost.c, citadel.c, citmail.c, mailinglist.c, msgform.c,
4369 netmailer.c, netpoll.c, netproc.c, rcit.c, readlog.c, setup.c,
4370 stats.c, userlist.c, whobbs.c: return type of main() is int
4371 * citadel.c, commands.c, messages.c: use time_t properly
4372 * citserver.c: include <limits.h>
4373 * config.guess, config.sub, install-sh: new files
4374 * configure.in: don't use gcc on Digital Unix
4376 Tue Sep 29 23:17:34 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4377 * room_ops.c: modified usergoto() to look at the new data structures
4378 for counting new messages and such.
4380 1998-09-29 Nathan Bryant <bryant@cs.usm.maine.edu>
4381 * user_ops.c: fix compiler warning and potential memory leak,
4383 * configure.in, Makefile.in: only build the server if we find pthreads
4384 * Makefile.in: realclean removes config.{cache,log,status}
4386 Tue Sep 29 13:20:14 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4387 * Removed code from some of the utilities which was still attempting
4388 to access the old non-gdbm data store.
4389 * housekeeping.c: rewrote check_ref_counts() to do a ForEachRoom()
4390 traversal instead of a MAXROOMS loop.
4391 * sysdep.c: set up a dummy CitContext record to be used during server
4392 startup, during which time there is no real context.
4394 Mon Sep 28 23:51:51 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4395 * Implemented the function ForEachRoom() to handle all-rooms traversal
4396 (this will work with both the old and new paradigms, because both
4397 use a GDBM database with one room per record). Migrated all room
4398 list commands to use it.
4400 Mon Sep 28 22:05:35 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4401 * Implemented the function CtdlRoomAccess() to handle *all* of the
4402 user-access-to-rooms functionality. Migrated all room list commands
4403 to use it. Still need to migrate gotos.
4405 1998-09-28 Nathan Bryant <bryant@cs.usm.maine.edu>
4406 * configure.in, acconfig.h: new files; partially functional GNU
4407 autoconf configure script. Run autoheader; autoconf; ./configure
4408 --prefix=`pwd` to test.
4409 * Makefile.tmpl: new file; this is what Makefile.in used to be. Used by
4411 * Makefile.in: modified to work with autoconf-style configure script
4412 * Configure: modified to use Makefile.tmpl and generate autoconf-style
4413 macros. Removed procfs detection. Pass -O2 to gcc, -O to other
4414 compilers. Removed mknod/mkfifo detection; code should use mkfifo(3).
4415 * citmail.c, msgform.c, netproc.c, routines.c, support.c, userlist.c,
4416 whobbs.c: use HAVE_STRERROR macro rather than NO_STRERROR
4417 * commands.c: use HAVE_TERMIOS_H macro rather than POSIX_TERMIO
4418 * netproc.c: remove procfs stuff. simply attempt to kill the target
4419 process with signal zero instead; this checks whether the process
4421 * setup.c, useradmin.c: use HAVE_CURSES_H macro
4423 Sun Sep 27 23:41:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4424 * BOTH the old and new generation systems are being written to at
4425 this point. Code that reads stuff is still using the old system.
4427 Sun Sep 27 16:10:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4428 * Changed all "generation" variables from char to long, in preparation
4429 for removing MAXROOMS. Generations for new rooms are now timestamps.
4430 * Defined "struct visit" to hold user/room relationships.
4431 * Removed some #define's from citadel.h that are no longer used.
4433 Wed Sep 23 13:41:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4434 * More changes to support attachments. They mostly work, but only
4435 in fixed-format messages.
4437 Mon Sep 21 21:19:17 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4438 * msgbase.c: began laying the groundwork to support attachments.
4439 Purchased Rogaine(tm) in preparation for expected hair loss.
4441 1998-09-21 Nathan Bryant <bryant@cs.usm.maine.edu>
4442 * msgbase.c: include dynloader.h
4443 * citadelapi.h: removed
4444 * dynloader.h: prototype CtdlRegisterUserHook()
4446 Sun Sep 20 18:56:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4447 * Added a UserFunctionHook category to implement hooks which perform
4448 operations on various users or usernames
4450 Fri Sep 18 21:14:41 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4451 * citserver.c: removed cmd_extn() and related code
4453 1998-09-18 Nathan Bryant <bryant@cs.usm.maine.edu>
4454 * user_ops.c: include dynloader.h
4455 * roomstats.{c,mk}: removed
4456 * Configure, Makefile.in: autodependency-related fixes
4458 Thu Sep 17 22:55:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4459 * Various changes to allow "new messages" to work correctly with Mail
4461 Thu Sep 17 22:21:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4462 * server.h, dynloader.c, citserver.c, user_ops.c: reduced the number
4463 of hook types by inventing an EventType field to the Session hook.
4464 * proxy.c: added pre-fetching
4466 1998-09-17 Nathan Bryant <bryant@cs.usm.maine.edu>
4467 * Makefile.in: add SERV_MODULES and PROXY_TARGETS to `cleaner'
4468 * dynloader.[ch], serv_{chat,test}.[ch], sysdep.c: cleaned
4469 up the dynamic loader interface as follows:
4470 - all the symbol table stuff is gone.
4471 - modules are loaded once at server startup and never unloaded.
4472 - Added a new function CtdlRegisterProtoHook() to handle the stuff
4473 that was being done with the symbol tables.
4474 - Dynamic_Module_Init() now returns a pointer to a static struct
4475 DLModule_Info; this structure itself has been modified to use char*
4476 fields instead of fixed char arrays.
4477 * roomstats.c: include <stdarg.h> not <stdargs.h> (is this file still
4479 * Configure, Makefile.in: added autodependency support
4481 Wed Sep 16 22:25:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4482 * Implemented separate structs, lists, and functions for each type
4483 of server-side hook available.
4485 1998-09-16 Nathan Bryant <bryant@cs.usm.maine.edu>
4486 * ipc_c_tcp.c: Fixed up some #include/prototyping stuff, call memcpy()
4489 * sysdep.c, user_ops.c: removed reference to hooks.h
4491 Wed Sep 16 11:42:42 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4492 * ipc_c_tcp.c: Reversed any changes that have been made to this file,
4493 because something was causing abominally slow response time.
4494 * proxy.c: added. This will eventually become a caching, pre-fetching
4495 multiuser proxy server for the Citadel protocol.
4497 1998-09-15 Nathan Bryant <bryant@cs.usm.maine.edu>
4498 * Makefile.in: remove support.o from serv_chat.so, add -fPIC to compile
4499 flags for serv_chat.o
4500 * dynloader.c: include "sysdep_decls.h", use RTLD_NOW not RTLD_LAZY
4501 * dynloader.h: prototype CtdlRegisterHook()
4502 * .cvsignore: added data
4504 Mon Sep 14 20:49:08 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4505 * Tried my hand at adding the ability for server extensions to
4506 register various types of "hooks" in addition to just adding
4507 server commands. This is probably not final.
4509 Tue Sep 8 12:11:56 EDT 1998 Brian Costello <btx@calyx.net>
4510 * Added support for dynamic server modules. Reworked serv_chat.c
4511 to be such a module.
4513 Tue Sep 1 23:09:50 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4514 * userpurge.c: rewrote using functions from the server core, rather
4515 than the now-defunct external API. This'll be ready once the module
4516 loading code is done. (I just had to commit _something_ tonight.)
4518 Mon Aug 31 22:47:58 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4519 * Yanked the citadelapi.c module. This wasn't working out well.
4520 * techdocs/citadelapi.txt - began documenting the new API to be used
4521 by modules which will be dynamic linked into the server - most of
4522 this API is existing server functions.
4523 * Added a ForEachUser() function with callback mechanism, and reworked
4524 cmd_list() to use it.
4526 Sun Aug 30 21:52:43 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4527 * Moved all of the gdbm databases to a separate "data" directory.
4529 1998-08-26 Nathan Bryant <bryant@cs.usm.maine.edu>
4530 * Makefile.in: realclean removes Makefile, fixed `touch citadel.h'
4533 1998-08-25 Nathan Bryant <bryant@cs.usm.maine.edu>
4534 * room_ops.c: include time.h
4535 * userlist.c, whobbs.c, serv_chat.c, user_ops.c, sysdep.c, stats.c,
4536 citadel_decls.h, commands.c, messages.h, routines.h, routines2.h:
4537 remove duplicated declarations
4539 Mon Aug 24 23:45:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4540 * setup.c: Removed yesno_s()
4541 * citadel.h, room_ops.c: added QRmtime field to struct quickroom,
4542 modified whenever a room is modified or posted in.
4543 * citadelapi.c: Added CtdlForEachRoom() function
4545 Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4546 * Makefile.in: new target `cleaner' does the same as `realclean'
4547 without removing sysdep.h
4548 * proto.h: is bad. eliminate. I've moved the prototypes into several
4549 header files, one per .c file
4551 Mon Aug 24 00:45:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4552 * Added a CtdlGotoRoom() function to the CitadelAPI.
4554 Sun Aug 23 21:47:00 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4555 * sysoputil is finally dead! Removed it from the build.
4556 * Added userpurge.c server extension (initial implementation)
4558 Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4559 * Makefile.in: `clean' target no longer rm's sysdep.h; new target
4560 `realclean' removes everything clean does, plus sysdep.h, plus
4562 * Configure: add -Wstrict-prototypes to CFLAGS for gcc systems
4563 * *.[ch]: protoized. Added several new header files containing
4564 prototypes and other external declarations; many duplicated
4565 declarations still should be moved to header files. proto.h must die
4568 Mon Aug 17 23:52:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4569 * Implemented a bunch of user account related functions in the
4572 Mon Aug 17 20:01:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4573 * Fixed the crash problem. It wasn't AGUP/ASUP, but rather a buffer
4574 overrun in getuser() (thanks, Nathan). Implemented overrun checks
4575 in getuser(), getroom(), and getfloor() to prevent future problems.
4577 Mon Aug 17 00:06:52 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4578 * Updated citmail.c with the latest stuff from the production system.
4579 * Implemented AGUP and ASUP commands, but AGUP crashes the server
4580 after its first successful use (user-not-found's don't affect it).
4582 Thu Aug 6 19:25:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4583 * Got the CitadelAPI library to the point where the server can start
4584 up an extension, and the extension will connect to the server, do
4585 some initialization, call a user-supplied CtdlMain(), and exit. Also
4586 hacked together a _temporary_ form of the new EXTN server command.
4588 Wed Aug 5 23:02:22 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4589 * Second attempt at getting the server API started. Now it runs
4590 outside of the server and builds a connection.
4592 Tue Aug 4 18:33:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4593 * Modified the appearance of Internet addresses when they arrive on
4595 * Removed the <E> field from the message format writeup in hack.txt.
4596 * Fixed-up citmail.c so that it doesn't try to do database lookups.
4598 Mon Aug 3 23:01:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4599 * Started developing the server-side API. This is in its very
4600 initial stages. See serverapi.c and techdoc/api.txt
4602 1998-08-02 Nathan Bryant <bryant@cs.usm.maine.edu>
4603 * Makefile.in: added config_decls.h to dependencies
4605 Sun Aug 2 21:09:09 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4606 * config_defs.h: renamed to config_decls.h
4607 * config.c, sysoputil.c: updated to reflect the above
4609 Sun Aug 2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4610 * config_defs.h: new file, contains external declarations from config.c
4611 * config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
4612 for bbs_home_directory
4613 * mailinglist.c, support.c: include <string.h>
4614 * sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
4615 duplicated defs, replace gets() call with fgets()
4616 * user_ops.c: define _XOPEN_SOURCE_EXTENDED
4618 Sat Aug 1 18:32:52 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4619 * ipc_c_tcp.c: fixed order of memcpy parameters after gethostbyname
4621 Sun Jul 19 17:26:12 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4622 * ChangeLog: reordered; the GNU standard is to add new entries to the
4624 * .cvsignore: added userlist
4626 Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
4627 * Finished migrating everything to the new data store.
4628 * Replaced the binary "calllog" with the ASCII "citadel.log"
4629 * Began converting broken utilities that depend on the old data store
4631 Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
4632 * Makefile.in: removed msgstats
4634 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
4635 * Initial CVS import