* This file contains functions which handle the mapping of Internet addresses
* to users on the Citadel system.
*
- * Copyright (c) 1987-2015 by the citadel.org team
+ * Copyright (c) 1987-2017 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
*/
int alias(char *name)
{ /* process alias and routing info for mail */
- struct CitContext *CCC = CC;
FILE *fp;
int a, i;
char aaa[SIZ], bbb[SIZ];
}
if (strcasecmp(original_name, name)) {
- MSG_syslog(LOG_INFO, "%s is being forwarded to %s\n", original_name, name);
+ syslog(LOG_INFO, "internet_addressing: %s is being forwarded to %s", original_name, name);
}
/* Change "user @ xxx" to "user" if xxx is an alias for this host */
if (name[a] == '@') {
if (CtdlHostAlias(&name[a+1]) == hostalias_localhost) {
name[a] = 0;
- MSG_syslog(LOG_INFO, "Changed to <%s>\n", name);
+ syslog(LOG_DEBUG, "internet_addressing: changed to <%s>", name);
break;
}
}
striplt(this_recp);
if (IsEmptyStr(this_recp))
break;
- MSG_syslog(LOG_DEBUG, "Evaluating recipient #%d: %s\n", num_recps, this_recp);
+ syslog(LOG_DEBUG, "internet_addressing: evaluating recipient #%d: %s", num_recps, this_recp);
++num_recps;
strcpy(org_recp, this_recp);
strcpy(ret->errormsg, "No recipients specified.");
}
- MSGM_syslog(LOG_DEBUG, "validate_recipients()\n");
- MSG_syslog(LOG_DEBUG, " local: %d <%s>\n", ret->num_local, ret->recp_local);
- MSG_syslog(LOG_DEBUG, " room: %d <%s>\n", ret->num_room, ret->recp_room);
- MSG_syslog(LOG_DEBUG, " inet: %d <%s>\n", ret->num_internet, ret->recp_internet);
- MSG_syslog(LOG_DEBUG, " ignet: %d <%s>\n", ret->num_ignet, ret->recp_ignet);
- MSG_syslog(LOG_DEBUG, " error: %d <%s>\n", ret->num_error, ret->errormsg);
+ syslog(LOG_DEBUG, "internet_addressing: validate_recipients() = %d local, %d room, %d SMTP, %d IGnet, %d error",
+ ret->num_local, ret->num_room, ret->num_internet, ret->num_ignet, ret->num_error
+ );
free(recipients);
return(ret);
}
if (valid->recptypes_magic != RECPTYPES_MAGIC) {
- struct CitContext *CCC = CC;
- MSGM_syslog(LOG_EMERG, "Attempt to call free_recipients() on some other data type!\n");
+ syslog(LOG_ERR, "internet_addressing: attempt to call free_recipients() on some other data type!");
abort();
}
char *qp_encode_email_addrs(char *source)
{
- struct CitContext *CCC = CC;
char *user, *node, *name;
const char headerStr[] = "=?UTF-8?Q?";
char *Encoded;
if (source == NULL) return source;
if (IsEmptyStr(source)) return source;
- if (MessageDebugEnabled != 0) cit_backtrace();
- MSG_syslog(LOG_DEBUG, "qp_encode_email_addrs: [%s]\n", source);
+ syslog(LOG_DEBUG, "internet_addressing: qp_encode_email_addrs <%s>", source);
AddrPtr = malloc (sizeof (long) * nAddrPtrMax);
AddrUtf8 = malloc (sizeof (long) * nAddrPtrMax);
}
-/*
- * Return 0 if a given string fuzzy-matches a Citadel user account
- *
- * FIXME ... this needs to be updated to handle aliases.
- */
-int fuzzy_match(struct ctdluser *us, char *matchstring) {
- int a;
- long len;
-
- if ( (!strncasecmp(matchstring, "cit", 3))
- && (atol(&matchstring[3]) == us->usernum)) {
- return 0;
- }
-
- len = strlen(matchstring);
- for (a=0; !IsEmptyStr(&us->fullname[a]); ++a) {
- if (!strncasecmp(&us->fullname[a],
- matchstring, len)) {
- return 0;
- }
- }
- return -1;
-}
-
-
/*
* Unfold a multi-line field into a single line, removing multi-whitespaces
*/
else if (!strcasecmp(key, "From")) {
process_rfc822_addr(value, user, node, name);
- syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
+ syslog(LOG_DEBUG, "internet_addressing: converted to <%s@%s> (%s)", user, node, name);
snprintf(addr, sizeof(addr), "%s@%s", user, node);
- if (CM_IsEmpty(msg, eAuthor))
+ if (CM_IsEmpty(msg, eAuthor) && !IsEmptyStr(name))
CM_SetField(msg, eAuthor, name, strlen(name));
- if (CM_IsEmpty(msg, erFc822Addr))
+ if (CM_IsEmpty(msg, erFc822Addr) && !IsEmptyStr(addr))
CM_SetField(msg, erFc822Addr, addr, strlen(addr));
processed = 1;
}
else if (!strcasecmp(key, "Message-ID")) {
if (!CM_IsEmpty(msg, emessageId)) {
- syslog(LOG_WARNING, "duplicate message id\n");
+ syslog(LOG_WARNING, "internet_addressing: duplicate message id");
}
else {
char *pValue;
}
key[keylen++] = 0;
- syslog(LOG_DEBUG, "Directory key is <%s>\n", key);
+ syslog(LOG_DEBUG, "internet_addressing: directory key is <%s>", key);
}
-
/* Return nonzero if the supplied address is in a domain we keep in
* the directory
*/
if (IsDirectory(internet_addr, 0) == 0)
return 0;
- syslog(LOG_DEBUG, "Create directory entry: %s --> %s\n", internet_addr, citadel_addr);
+ syslog(LOG_DEBUG, "internet_addressing: create directory entry: %s --> %s", internet_addr, citadel_addr);
directory_key(key, internet_addr);
cdb_store(CDB_DIRECTORY, key, strlen(key), citadel_addr, strlen(citadel_addr)+1 );
return 1;
*/
int CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr) {
char key[SIZ];
-
- syslog(LOG_DEBUG, "Delete directory entry: %s --> %s\n", internet_addr, citadel_addr);
+
+ syslog(LOG_DEBUG, "internet_addressing: delete directory entry: %s --> %s", internet_addr, citadel_addr);
directory_key(key, internet_addr);
return cdb_delete(CDB_DIRECTORY, key, strlen(key) ) == 0;
}