#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"
};
char *inetcfg = NULL;
-
+struct spamstrings_t *spamstrings = NULL;
/*
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);
*
* 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))
* 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;
end = pos;
}
- /* done with headers? */
+ /* done with headers? (commented out; see below)
if ( ((rfc822[pos]=='\n')
||(rfc822[pos]=='\r') )
&& ( (rfc822[pos+1]=='\n')
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;
* Initialize the directory database (erasing anything already there)
*/
void CtdlDirectoryInit(void) {
- /* FIXME ... write this */
+ cdb_trunc(CDB_DIRECTORY);
}
/*
- * 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);
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);
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);
}