]> code.citadel.org Git - citadel.git/blobdiff - citadel/internet_addressing.c
* Renamed "struct user" to "struct ctdluser"
[citadel.git] / citadel / internet_addressing.c
index 3063395025593de3801027dba132f5856a93a906..50da226926d6515b14c3ebc0855138fc31094cd3 100644 (file)
@@ -36,7 +36,7 @@
 #include <limits.h>
 #include "citadel.h"
 #include "server.h"
-#include "dynloader.h"
+#include "serv_extensions.h"
 #include "sysdep_decls.h"
 #include "citserver.h"
 #include "support.h"
@@ -61,7 +61,7 @@ struct trynamebuf {
 };
 
 char *inetcfg = NULL;
-
+struct spamstrings_t *spamstrings = NULL;
 
 
 /*
@@ -73,6 +73,8 @@ int CtdlHostAlias(char *fqdn) {
        char buf[SIZ];
        char host[SIZ], type[SIZ];
 
+       if (fqdn == NULL) return(hostalias_nomatch);
+       if (strlen(fqdn) == 0) return(hostalias_nomatch);
        if (!strcasecmp(fqdn, config.c_fqdn)) return(hostalias_localhost);
        if (!strcasecmp(fqdn, config.c_nodename)) return(hostalias_localhost);
        if (inetcfg == NULL) return(hostalias_nomatch);
@@ -111,7 +113,7 @@ int CtdlHostAlias(char *fqdn) {
  *
  * FIXME ... this needs to be updated to handle aliases.
  */
-int fuzzy_match(struct usersupp *us, char *matchstring) {
+int fuzzy_match(struct ctdluser *us, char *matchstring) {
        int a;
 
        if ( (!strncasecmp(matchstring, "cit", 3)) 
@@ -157,7 +159,7 @@ void unfold_rfc822_field(char *field) {
  * Split an RFC822-style address into userid, host, and full name
  *
  */
-void process_rfc822_addr(char *rfc822, char *user, char *node, char *name)
+void process_rfc822_addr(const char *rfc822, char *user, char *node, char *name)
 {
        int a;
 
@@ -410,7 +412,7 @@ struct CtdlMessage *convert_internet_message(char *rfc822) {
                                end = pos;
                        }
 
-                       /* done with headers? */
+                       /* done with headers? (commented out; see below)
                        if (   ((rfc822[pos]=='\n')
                              ||(rfc822[pos]=='\r') )
                           && ( (rfc822[pos+1]=='\n')
@@ -418,6 +420,15 @@ struct CtdlMessage *convert_internet_message(char *rfc822) {
                                end = pos;
                                done = 1;
                        }
+                       */
+
+                       /* done with headers? (try this way instead) */
+                       if (   (rfc822[pos]=='\n')
+                          && ( (rfc822[pos+1]=='\n')
+                             ||(rfc822[pos+1]=='\r')) ) {
+                               end = pos;
+                               done = 1;
+                       }
 
                        if (pos >= (msglen-1) ) {
                                end = pos;
@@ -576,7 +587,7 @@ int IsDirectory(char *addr) {
  * Initialize the directory database (erasing anything already there)
  */
 void CtdlDirectoryInit(void) {
-       /* FIXME ... write this */
+       cdb_trunc(CDB_DIRECTORY);
 }
 
 
@@ -598,9 +609,12 @@ void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) {
 
 
 /*
- * Delete an Internet e-mail address from the directory
+ * Delete an Internet e-mail address from the directory.
+ *
+ * (NOTE: we don't actually use or need the citadel_addr variable; it's merely
+ * here because the callback API expects to be able to send it.)
  */
-void CtdlDirectoryDelUser(char *internet_addr) {
+void CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr) {
        char key[SIZ];
 
        directory_key(key, internet_addr);
@@ -617,8 +631,13 @@ int CtdlDirectoryLookup(char *target, char *internet_addr) {
        struct cdbdata *cdbrec;
        char key[SIZ];
 
-       lprintf(9, "CtdlDirectoryLookup(%s)\n", internet_addr);
+       /* Dump it in there unchanged, just for kicks */
+       strcpy(target, internet_addr);
+
+       /* Only do lookups for addresses with hostnames in them */
+       if (num_tokens(internet_addr, '@') != 2) return(-1);
 
+       /* Only do lookups for domains in the directory */
        if (IsDirectory(internet_addr) == 0) return(-1);
 
        directory_key(key, internet_addr);
@@ -626,10 +645,8 @@ int CtdlDirectoryLookup(char *target, char *internet_addr) {
        if (cdbrec != NULL) {
                safestrncpy(target, cdbrec->ptr, SIZ);
                cdb_free(cdbrec);
-               lprintf(9, "Looked up as <%s>\n", target);
                return(0);
        }
 
-       lprintf(9, "Lookup failed\n");
        return(-1);
 }