split citadel protocol related functions from msgbase.c into ctdl_message.c; fix...
[citadel.git] / citadel / internet_addressing.h
index c63ec94cc6d272fc515ea726e2592fca4eb82436..74e581883803cdb0e2b37ee3f71baed0cc1bcb07 100644 (file)
@@ -1,7 +1,3 @@
-/* 
- * $Id$
- *
- */
 
 #include "server.h"
 
@@ -12,18 +8,53 @@ struct internet_address_list {
        char ial_name[SIZ];
 };
 
+/* Data structure returned by validate_recipients() */
+struct recptypes {
+       int recptypes_magic;
+        int num_local;
+        int num_internet;
+        int num_ignet;
+       int num_room;
+        int num_error;
+       char *errormsg;
+       char *recp_local;
+       char *recp_internet;
+       char *recp_ignet;
+       char *recp_room;
+       char *recp_orgroom;
+       char *display_recp;
+       char *bounce_to;
+       char *envelope_from;
+       char *sending_room;
+};
+
+#define RECPTYPES_MAGIC 0xfeeb
+
+struct recptypes *validate_recipients(const char *recipients,
+                                     const char *RemoteIdentifier, 
+                                     int Flags);
+
+void free_recipients(struct recptypes *);
+
 
 int fuzzy_match(struct ctdluser *us, char *matchstring);
 void process_rfc822_addr(const char *rfc822, char *user, char *node, char *name);
-char *rfc822_fetch_field(char *rfc822, char *fieldname);
+char *rfc822_fetch_field(const char *rfc822, const char *fieldname);
+void sanitize_truncated_recipient(char *str);
+char *qp_encode_email_addrs(char *source);
+int alias (char *name);
 
-int IsDirectory(char *addr);
+
+int IsDirectory(char *addr, int allow_masq_domains);
 void CtdlDirectoryInit(void);
-void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr);
-void CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr);
-int CtdlDirectoryLookup(char *target, char *internet_addr);
+int CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr);
+int CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr);
+int CtdlDirectoryLookup(char *target, char *internet_addr, size_t targbuflen);
 struct CtdlMessage *convert_internet_message(char *rfc822);
+struct CtdlMessage *convert_internet_message_buf(StrBuf **rfc822);
+
 int CtdlHostAlias(char *fqdn);
+char *harvest_collected_addresses(struct CtdlMessage *msg);
 
 /* 
  * Values that can be returned by CtdlHostAlias()
@@ -32,7 +63,8 @@ enum {
        hostalias_nomatch,
        hostalias_localhost,
        hostalias_gatewaydomain,
-       hostalias_directory
+       hostalias_directory,
+       hostalias_masq
 };
 
 extern char *inetcfg;