$Log$
+ Revision 590.53 2002/01/10 21:22:37 ajc
+ * Minor changes for global directory service
+
Revision 590.52 2002/01/10 04:29:28 ajc
* Minor updates for directory service
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
+
}
return(NULL);
}
+
+
+
+/*****************************************************************************
+ * DIRECTORY MANAGEMENT FUNCTIONS *
+ *****************************************************************************/
+
+
+/* Return nonzero if the supplied address is in a domain we keep in
+ * the directory
+ */
+int IsDirectory(char *addr) {
+ char domain[SIZ];
+ int h;
+
+ extract_token(domain, addr, 1, '@');
+ striplt(domain);
+
+ h = CtdlHostAlias(domain);
+
+ if ( (h == hostalias_localhost) || (h == hostalias_directory) ) {
+ return(1);
+ }
+ else {
+ return(0);
+ }
+}
+
+
+/*
+ * Initialize the directory database (erasing anything already there)
+ */
+void CtdlDirectoryInit(void) {
+ /* FIXME ... write this */
+}
+
+
+/*
+ * Add an Internet e-mail address to the directory for a user
+ */
+void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) {
+
+ lprintf(9, "Dir: %s --> %s\n",
+ internet_addr, citadel_addr);
+ if (IsDirectory(internet_addr) == 0) return;
+
+ lprintf(9, "** FIXME write to db\n");
+ /* FIXME ... write this */
+
+}
+
+
+/*
+ * Delete an Internet e-mail address from the directory
+ */
+void CtdlDirectoryDelUser(char *internet_addr) {
+ /* FIXME ... write this */
+}
+
+
+/*
+ * Look up an Internet e-mail address in the directory.
+ * On success: returns 0, and Citadel address stored in 'target'
+ * On failure: returns nonzero
+ */
+int CtdlDirectoryLookup(char *target, char *internet_addr) {
+
+ if (IsDirectory(internet_addr) == 0) return(-1);
+
+ /* FIXME ... write this */
+ return(-1);
+}
void process_rfc822_addr(char *rfc822, char *user, char *node, char *name);
char *rfc822_fetch_field(char *rfc822, char *fieldname);
+void CtdlDirectoryInit(void);
+void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr);
+void CtdlDirectoryDelUser(char *internet_addr);
+int CtdlDirectoryLookup(char *target, char *internet_addr);
int convert_internet_address(char *destuser, char *desthost, char *source);
enum {
{
int i;
- lprintf(9, "CtdlFreeMessage() called\n");
if (is_valid_message(msg) == 0) return;
for (i = 0; i < 256; ++i)
#include "policy.h"
#include "database.h"
#include "msgbase.h"
+#include "internet_addressing.h"
#include "tools.h"
#include "vcard.h"
#define VC ((struct vcard_internal_info *)CtdlGetUserData(SYM_VCARD))
-void temporary_FIXME_backend(char *internet_addr, char *citadel_addr) {
- cprintf("extracted '%s' --> '%s'\n", internet_addr, citadel_addr);
-}
-
/*
* Extract Internet e-mail addresses from a message containing a vCard, and
* perform a callback for any found.
msg = CtdlFetchMessage(msgnum);
if (msg != NULL) {
- vcard_extract_internet_addresses(msg, temporary_FIXME_backend);
+ vcard_extract_internet_addresses(msg, CtdlDirectoryAddUser);
}
CtdlFreeMessage(msg);
* client when finished.
*/
- cprintf("%d FIXME\n", LISTING_FOLLOWS);
+ cprintf("%d Directory will be rebuilt\n", OK);
/* We want the last (and probably only) vcard in this room */
CtdlForEachMessage(MSGS_ALL, 0, (-127), "text/x-vcard",
NULL, vcard_add_to_directory, NULL);
getroom(&CC->quickroom, hold_rm); /* return to saved room */
- cprintf("000\n");
}