/*
* 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
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
+
#include "sysdep.h"
#include <stdlib.h>
#include <unistd.h>
if (fqdn == NULL) return(hostalias_nomatch);
if (IsEmptyStr(fqdn)) return(hostalias_nomatch);
if (!strcasecmp(fqdn, "localhost")) return(hostalias_localhost);
- if (!strcasecmp(fqdn, config.c_fqdn)) return(hostalias_localhost);
- if (!strcasecmp(fqdn, config.c_nodename)) return(hostalias_localhost);
+ if (!strcasecmp(fqdn, CtdlGetConfigStr("c_fqdn"))) return(hostalias_localhost);
+ if (!strcasecmp(fqdn, CtdlGetConfigStr("c_nodename"))) return(hostalias_localhost);
if (inetcfg == NULL) return(hostalias_nomatch);
config_lines = num_tokens(inetcfg, '\n');
case MES_LOCAL:
if (!strcasecmp(this_recp, "sysop")) {
++ret->num_room;
- strcpy(this_recp, config.c_aideroom);
+ strcpy(this_recp, CtdlGetConfigStr("c_aideroom"));
if (!IsEmptyStr(ret->recp_room)) {
strcat(ret->recp_room, "|");
}
int a;
strcpy(user, "");
- strcpy(node, config.c_fqdn);
+ strcpy(node, CtdlGetConfigStr("c_fqdn"));
strcpy(name, "");
if (rfc822 == NULL) return;
&& (haschar(node, '%')==0)
&& (haschar(node, '!')==0)
) {
- strcpy(node, config.c_nodename);
+ strcpy(node, CtdlGetConfigStr("c_nodename"));
}
else {
* message text.
*/
int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) {
+ struct CitContext *CCC = CC;
char *key, *value, *valueend;
long len;
const char *pos;
else if (!strcasecmp(key, "From")) {
process_rfc822_addr(value, user, node, name);
- syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
+ MSG_syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", 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;
}
void directory_key(char *key, char *addr) {
int i;
int keylen = 0;
+ struct CitContext *CCC = CC;
for (i=0; !IsEmptyStr(&addr[i]); ++i) {
if (!isspace(addr[i])) {
}
key[keylen++] = 0;
- syslog(LOG_DEBUG, "Directory key is <%s>\n", key);
+ MSG_syslog(LOG_DEBUG, "Directory key is <%s>\n", key);
}
*/
int CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) {
char key[SIZ];
+ struct CitContext *CCC = CC;
if (IsDirectory(internet_addr, 0) == 0)
return 0;
- syslog(LOG_DEBUG, "Create directory entry: %s --> %s\n", internet_addr, citadel_addr);
+ MSG_syslog(LOG_DEBUG, "Create directory entry: %s --> %s\n", 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);
+ struct CitContext *CCC = CC;
+
+ MSG_syslog(LOG_DEBUG, "Delete directory entry: %s --> %s\n", internet_addr, citadel_addr);
directory_key(key, internet_addr);
return cdb_delete(CDB_DIRECTORY, key, strlen(key) ) == 0;
}