From 63cfc2cf544fe229e85cf6a8a50e5ec5c37f3894 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 10 Jan 2002 21:22:38 +0000 Subject: [PATCH] * Minor changes for global directory service --- citadel/ChangeLog | 4 ++ citadel/internet_addressing.c | 72 +++++++++++++++++++++++++++++++++++ citadel/internet_addressing.h | 4 ++ citadel/msgbase.c | 1 - citadel/serv_vcard.c | 10 ++--- 5 files changed, 83 insertions(+), 8 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 97543b6b9..a32d491bc 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,7 @@ $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 @@ -3124,3 +3127,4 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import + diff --git a/citadel/internet_addressing.c b/citadel/internet_addressing.c index 5cb359681..4e634006d 100644 --- a/citadel/internet_addressing.c +++ b/citadel/internet_addressing.c @@ -632,3 +632,75 @@ char *rfc822_fetch_field(char *rfc822, char *fieldname) { } 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); +} diff --git a/citadel/internet_addressing.h b/citadel/internet_addressing.h index 414fb860e..2bca6173f 100644 --- a/citadel/internet_addressing.h +++ b/citadel/internet_addressing.h @@ -17,6 +17,10 @@ int fuzzy_match(struct usersupp *us, char *matchstring); 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 { diff --git a/citadel/msgbase.c b/citadel/msgbase.c index afbb717ff..b1b9884fc 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -794,7 +794,6 @@ void CtdlFreeMessage(struct CtdlMessage *msg) { int i; - lprintf(9, "CtdlFreeMessage() called\n"); if (is_valid_message(msg) == 0) return; for (i = 0; i < 256; ++i) diff --git a/citadel/serv_vcard.c b/citadel/serv_vcard.c index c577aaa38..36f4b2316 100644 --- a/citadel/serv_vcard.c +++ b/citadel/serv_vcard.c @@ -60,6 +60,7 @@ #include "policy.h" #include "database.h" #include "msgbase.h" +#include "internet_addressing.h" #include "tools.h" #include "vcard.h" @@ -72,10 +73,6 @@ unsigned long SYM_VCARD; #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. @@ -119,7 +116,7 @@ void vcard_add_to_directory(long msgnum, void *data) { msg = CtdlFetchMessage(msgnum); if (msg != NULL) { - vcard_extract_internet_addresses(msg, temporary_FIXME_backend); + vcard_extract_internet_addresses(msg, CtdlDirectoryAddUser); } CtdlFreeMessage(msg); @@ -148,14 +145,13 @@ void cmd_igab(char *argbuf) { * 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"); } -- 2.30.2