* Minor changes for global directory service
authorArt Cancro <ajc@citadel.org>
Thu, 10 Jan 2002 21:22:38 +0000 (21:22 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 10 Jan 2002 21:22:38 +0000 (21:22 +0000)
citadel/ChangeLog
citadel/internet_addressing.c
citadel/internet_addressing.h
citadel/msgbase.c
citadel/serv_vcard.c

index 97543b6b9d634c71b48d5b6d0838d1e2a451aec0..a32d491bc44a6284051cbd46dbbe29a5c6c4d0fc 100644 (file)
@@ -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 <bryant@cs.usm.maine.edu>
 
 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
        * Initial CVS import 
+
index 5cb35968164b728065dd132df93235bd30d334bc..4e634006de361707aeeb45db7c17cf4949705f43 100644 (file)
@@ -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);
+}
index 414fb860ee6d8933f2ea13690de06fb919bfaff8..2bca6173faa64c31172b7f83c9b1a94b37591f92 100644 (file)
@@ -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 {
index afbb717ff6b5f6589d8d0c6b689b0b2b06cdeca5..b1b9884fc746bed0fef61b695e0026593c176e7a 100644 (file)
@@ -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)
index c577aaa385f31334bc108e1730e8d70f9a1daf77..36f4b2316cb2ad9a63af636df1b3fa86913bc25e 100644 (file)
@@ -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");
 }