int march_access;
};
-#define NODENAME config.c_nodename
-#define FQDN config.c_fqdn
-#define HUMANNODE config.c_humannode
-#define PHONENUM config.c_phonenum
-#define CTDLUID config.c_ctdluid
-#define CREATAIDE config.c_creataide
-#define REGISCALL config.c_regiscall
-#define TWITDETECT config.c_twitdetect
-#define TWITROOM config.c_twitroom
-#define RESTRICT_INTERNET config.c_restrict
/*
* User records.
#include "ctdl_module.h"
struct config config;
+struct configlen configlen;
/*
* Put some sane default values into our configuration. Some will be overridden when we run setup.
/* Determine our host name, in case we need to use it as a default */
uname(&my_utsname);
-
+ memset(&configlen, 0, sizeof(struct configlen));
/* set some sample/default values in place of blanks... */
- extract_token(config.c_nodename, my_utsname.nodename, 0, '.', sizeof config.c_nodename);
+ configlen.c_nodename = extract_token(config.c_nodename, my_utsname.nodename, 0, '.', sizeof config.c_nodename);
if (IsEmptyStr(config.c_fqdn) ) {
if ((he = gethostbyname(my_utsname.nodename)) != NULL) {
- safestrncpy(config.c_fqdn, he->h_name, sizeof config.c_fqdn);
+ configlen.c_fqdn = safestrncpy(config.c_fqdn, he->h_name, sizeof config.c_fqdn);
}
else {
- safestrncpy(config.c_fqdn, my_utsname.nodename, sizeof config.c_fqdn);
+ configlen.c_fqdn = safestrncpy(config.c_fqdn, my_utsname.nodename, sizeof config.c_fqdn);
}
}
- safestrncpy(config.c_humannode, "Citadel Server", sizeof config.c_humannode);
- safestrncpy(config.c_phonenum, "US 800 555 1212", sizeof config.c_phonenum);
+ configlen.c_humannode = safestrncpy(config.c_humannode, "Citadel Server", sizeof config.c_humannode);
+ configlen.c_phonenum = safestrncpy(config.c_phonenum, "US 800 555 1212", sizeof config.c_phonenum);
config.c_initax = 4;
- safestrncpy(config.c_moreprompt, "<more>", sizeof config.c_moreprompt);
- safestrncpy(config.c_twitroom, "Trashcan", sizeof config.c_twitroom);
- safestrncpy(config.c_baseroom, BASEROOM, sizeof config.c_baseroom);
- safestrncpy(config.c_aideroom, "Aide", sizeof config.c_aideroom);
+ configlen.c_moreprompt = safestrncpy(config.c_moreprompt, "<more>", sizeof config.c_moreprompt);
+ configlen.c_twitroom = safestrncpy(config.c_twitroom, "Trashcan", sizeof config.c_twitroom);
+ configlen.c_baseroom = safestrncpy(config.c_baseroom, BASEROOM, sizeof config.c_baseroom);
+ configlen.c_aideroom = safestrncpy(config.c_aideroom, "Aide", sizeof config.c_aideroom);
config.c_port_number = 504;
config.c_sleeping = 900;
config.c_xmpp_s2s_port = 5269;
}
-
+void setcfglen(void)
+{
+ configlen.c_nodename = strlen(config.c_nodename);
+ configlen.c_fqdn = strlen(config.c_fqdn);
+ configlen.c_humannode = strlen(config.c_humannode);
+ configlen.c_phonenum = strlen(config.c_phonenum);
+ configlen.c_twitroom = strlen(config.c_twitroom);
+ configlen.c_moreprompt = strlen(config.c_moreprompt);
+ configlen.c_site_location = strlen(config.c_site_location);
+ configlen.c_sysadm = strlen(config.c_sysadm);
+ configlen.c_niu_2 = strlen(config.c_niu_2);
+ configlen.c_ip_addr = strlen(config.c_ip_addr);
+ configlen.c_logpages = strlen(config.c_logpages);
+ configlen.c_baseroom = strlen(config.c_baseroom);
+ configlen.c_aideroom = strlen(config.c_aideroom);
+ configlen.c_ldap_host = strlen(config.c_ldap_host);
+ configlen.c_ldap_base_dn = strlen(config.c_ldap_base_dn);
+ configlen.c_ldap_bind_dn = strlen(config.c_ldap_bind_dn);
+ configlen.c_ldap_bind_pw = strlen(config.c_ldap_bind_pw);
+ configlen.c_journal_dest = strlen(config.c_journal_dest);
+ configlen.c_default_cal_zone = strlen(config.c_default_cal_zone);
+ configlen.c_funambol_host = strlen(config.c_funambol_host);
+ configlen.c_funambol_source = strlen(config.c_funambol_source);
+ configlen.c_funambol_auth = strlen(config.c_funambol_auth);
+ configlen.c_master_user = strlen(config.c_master_user);
+ configlen.c_master_pass = strlen(config.c_master_pass);
+ configlen.c_pager_program = strlen(config.c_pager_program);
+}
/*
* get_config() is called during the initialization of Citadel server.
);
}
fclose(cfp);
+ setcfglen();
}
else {
brand_new_installation_set_defaults();
char *CtdlGetSysConfig(char *sysconfname);
void CtdlPutSysConfig(char *sysconfname, char *sysconfdata);
-
while (client_getln(buf, sizeof buf) >= 0 && strcmp(buf, "000")) {
switch (a) {
case 0:
- safestrncpy(config.c_nodename, buf,
- sizeof config.c_nodename);
+ configlen.c_nodename = safestrncpy(config.c_nodename, buf,
+ sizeof config.c_nodename);
break;
case 1:
- safestrncpy(config.c_fqdn, buf,
- sizeof config.c_fqdn);
+ configlen.c_fqdn = safestrncpy(config.c_fqdn, buf,
+ sizeof config.c_fqdn);
break;
case 2:
- safestrncpy(config.c_humannode, buf,
- sizeof config.c_humannode);
+ configlen.c_humannode = safestrncpy(config.c_humannode, buf,
+ sizeof config.c_humannode);
break;
case 3:
- safestrncpy(config.c_phonenum, buf,
- sizeof config.c_phonenum);
+ configlen.c_phonenum = safestrncpy(config.c_phonenum, buf,
+ sizeof config.c_phonenum);
break;
case 4:
config.c_creataide = atoi(buf);
config.c_twitdetect = 1;
break;
case 9:
- safestrncpy(config.c_twitroom, buf,
- sizeof config.c_twitroom);
+ configlen.c_twitroom = safestrncpy(config.c_twitroom, buf,
+ sizeof config.c_twitroom);
break;
case 10:
- safestrncpy(config.c_moreprompt, buf,
- sizeof config.c_moreprompt);
+ configlen.c_moreprompt = safestrncpy(config.c_moreprompt, buf,
+ sizeof config.c_moreprompt);
break;
case 11:
config.c_restrict = atoi(buf);
config.c_restrict = 1;
break;
case 12:
- safestrncpy(config.c_site_location, buf,
- sizeof config.c_site_location);
+ configlen.c_site_location = safestrncpy(
+ config.c_site_location, buf,
+ sizeof config.c_site_location);
break;
case 13:
- safestrncpy(config.c_sysadm, buf,
- sizeof config.c_sysadm);
+ configlen.c_sysadm = safestrncpy(config.c_sysadm, buf,
+ sizeof config.c_sysadm);
break;
case 14:
config.c_maxsessions = atoi(buf);
config.c_roompurge = atoi(buf);
break;
case 18:
- safestrncpy(config.c_logpages, buf,
- sizeof config.c_logpages);
+ configlen.c_logpages = safestrncpy(config.c_logpages, buf,
+ sizeof config.c_logpages);
break;
case 19:
config.c_createax = atoi(buf);
break;
case 31:
if ((config.c_purge_hour >= 0)
- && (config.c_purge_hour <= 23)) {
+ && (config.c_purge_hour <= 23)) {
config.c_purge_hour = atoi(buf);
}
break;
#ifdef HAVE_LDAP
case 32:
- safestrncpy(config.c_ldap_host, buf,
- sizeof config.c_ldap_host);
+ configlen.c_ldap_host = safestrncpy(config.c_ldap_host, buf,
+ sizeof config.c_ldap_host);
break;
case 33:
config.c_ldap_port = atoi(buf);
break;
case 34:
- safestrncpy(config.c_ldap_base_dn, buf,
- sizeof config.c_ldap_base_dn);
+ configlen.c_ldap_base_dn = safestrncpy(config.c_ldap_base_dn, buf,
+ sizeof config.c_ldap_base_dn);
break;
case 35:
- safestrncpy(config.c_ldap_bind_dn, buf,
- sizeof config.c_ldap_bind_dn);
+ configlen.c_ldap_bind_dn = safestrncpy(config.c_ldap_bind_dn, buf,
+ sizeof config.c_ldap_bind_dn);
break;
case 36:
- safestrncpy(config.c_ldap_bind_pw, buf,
- sizeof config.c_ldap_bind_pw);
+ configlen.c_ldap_bind_pw = safestrncpy(config.c_ldap_bind_pw, buf,
+ sizeof config.c_ldap_bind_pw);
break;
#endif
case 37:
- safestrncpy(config.c_ip_addr, buf,
- sizeof config.c_ip_addr);
+ configlen.c_ip_addr = safestrncpy(config.c_ip_addr, buf,
+ sizeof config.c_ip_addr);
case 38:
config.c_msa_port = atoi(buf);
break;
config.c_journal_pubmsgs = atoi(buf);
break;
case 48:
- safestrncpy(config.c_journal_dest, buf,
- sizeof config.c_journal_dest);
+ configlen.c_journal_dest = safestrncpy(config.c_journal_dest, buf,
+ sizeof config.c_journal_dest);
case 49:
- safestrncpy(config.c_default_cal_zone, buf,
- sizeof config.c_default_cal_zone);
+ configlen.c_default_cal_zone = safestrncpy(
+ config.c_default_cal_zone, buf,
+ sizeof config.c_default_cal_zone);
break;
case 50:
config.c_pftcpdict_port = atoi(buf);
case 52:
config.c_auth_mode = atoi(buf);
case 53:
- safestrncpy(config.c_funambol_host, buf,
+ configlen.c_funambol_host = safestrncpy(
+ config.c_funambol_host, buf,
sizeof config.c_funambol_host);
break;
case 54:
config.c_funambol_port = atoi(buf);
break;
case 55:
- safestrncpy(config.c_funambol_source,
- buf,
+ configlen.c_funambol_source = safestrncpy(
+ config.c_funambol_source, buf,
sizeof config.c_funambol_source);
break;
case 56:
- safestrncpy(config.c_funambol_auth,
- buf,
+ configlen.c_funambol_auth = safestrncpy(
+ config.c_funambol_auth, buf,
sizeof config.c_funambol_auth);
break;
case 57:
config.c_rbl_at_greeting = atoi(buf);
break;
case 58:
- safestrncpy(config.c_master_user, buf, sizeof config.c_master_user);
+ configlen.c_master_user = safestrncpy(
+ config.c_master_user,
+ buf, sizeof config.c_master_user);
break;
case 59:
- safestrncpy(config.c_master_pass, buf, sizeof config.c_master_pass);
+ configlen.c_master_pass = safestrncpy(
+ config.c_master_pass, buf, sizeof config.c_master_pass);
break;
case 60:
- safestrncpy(config.c_pager_program,
- buf,
- sizeof config.c_pager_program);
+ configlen.c_pager_program = safestrncpy(
+ config.c_pager_program, buf, sizeof config.c_pager_program);
break;
case 61:
config.c_imap_keep_from = atoi(buf);
int c_spam_flag_only;
int c_guest_logins;
};
+struct configlen {
+ long c_nodename;
+ long c_fqdn;
+ long c_humannode;
+ long c_phonenum;
+ long c_twitroom;
+ long c_moreprompt;
+ long c_site_location;
+ long c_sysadm;
+ long c_niu_2;
+ long c_ip_addr;
+ long c_logpages;
+ long c_baseroom;
+ long c_aideroom;
+ long c_ldap_host;
+ long c_ldap_base_dn;
+ long c_ldap_bind_dn;
+ long c_ldap_bind_pw;
+ long c_journal_dest;
+ long c_default_cal_zone;
+ long c_funambol_host;
+ long c_funambol_source;
+ long c_funambol_auth;
+ long c_master_user;
+ long c_master_pass;
+ long c_pager_program;
+};
extern struct config config;
+extern struct configlen configlen;
+
+
+#define NODENAME config.c_nodename
+#define FQDN config.c_fqdn
+#define CTDLUID config.c_ctdluid
+#define CREATAIDE config.c_creataide
+#define REGISCALL config.c_regiscall
+#define TWITDETECT config.c_twitdetect
+#define TWITROOM config.c_twitroom
+#define RESTRICT_INTERNET config.c_restrict
+#define CFG_KEY(which) config.which, configlen.which
typedef void (*CfgLineParser)(const CfgLineType *ThisOne, StrBuf *Line, const char *LinePos, OneRoomNetCfg *rncfg);
typedef void (*CfgLineSerializer)(const CfgLineType *ThisOne, StrBuf *OuptputBuffer, OneRoomNetCfg *rncfg, RoomNetCfgLine *data);
msg->cm_format_type = 4;
CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname));
- CM_SetField(msg, eNodeName, config.c_nodename, strlen(config.c_nodename));
- CM_SetField(msg, eHumanNode, config.c_humannode, strlen(config.c_humannode));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
+ CM_SetField(msg, eHumanNode, CFG_KEY(c_humannode));
MsgBody = NewStrBufPlain(NULL, serlen + 100);
StrBufAppendBufPlain(MsgBody, HKEY("Content-type: text/calendar\r\n\r\n"), 0);
IPutStr(user, strlen(user)); /* mailbox name (user id) */
IAPuts(" ");
if (!strcasecmp(node, config.c_nodename)) {
- IPutStr(config.c_fqdn, strlen(config.c_fqdn));
+ IPutStr(CFG_KEY(c_fqdn));
}
else {
IPutStr(node, strlen(node)); /* host name */
if ( ((CCC->room.QRflags & QR_MAILBOX) == 0) && (config.c_imap_keep_from == 0)) {
CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
- CM_SetField(msg, eNodeName, config.c_nodename, strlen(config.c_nodename));
- CM_SetField(msg, eHumanNode, config.c_humannode, strlen(config.c_humannode));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
+ CM_SetField(msg, eHumanNode, CFG_KEY(c_humannode));
}
}
}
CM_SetField(msg, eOriginalRoom, HKEY(PAGELOGROOM));
- CM_SetField(msg, eNodeName, NODENAME, strlen(NODENAME));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
CM_SetAsFieldSB(msg, eMesageText, &im->conversation); /* we own this memory now */
/* Start with usernums[1] because it's guaranteed to be higher than usernums[0],
if (CM_IsEmpty(msg, eMessagePath)) {
CM_SetField(msg, eMessagePath, defl, defllen);
}
- node_len = strlen(config.c_nodename);
+ node_len = configlen.c_nodename;
if (node_len >= SIZ)
node_len = SIZ - 1;
memcpy(buf, config.c_nodename, node_len);
msg->cm_fields[eNodeName]);
CM_SetField(msg, eAuthor, HKEY(BOUNCESOURCE));
- CM_SetField(msg, eNodeName, config.c_nodename, strlen(config.c_nodename));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
CM_SetField(msg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
Netmap_AddMe(msg, HKEY("unknown_user"));
CM_SetField(&SaveMsg->Msg, eAuthor, HKEY("rss"));
}
- CM_SetField(&SaveMsg->Msg, eNodeName, NODENAME, strlen(NODENAME));
+ CM_SetField(&SaveMsg->Msg, eNodeName, CFG_KEY(c_nodename));
if (SaveMsg->title != NULL) {
long len;
char *Sbj;
return;
}
- CM_SetField(msg, eNodeName, config.c_nodename, strlen(config.c_nodename));
- CM_SetField(msg, eHumanNode, config.c_humannode, strlen(config.c_humannode));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
+ CM_SetField(msg, eHumanNode, CFG_KEY(c_humannode));
CM_SetField(msg, eOriginalRoom, HKEY(MAILROOM));
if (sSMTP->preferred_sender_name != NULL)
CM_SetField(msg, eAuthor, SKEY(sSMTP->preferred_sender_name));
CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
- CM_SetField(bmsg, eNodeName, config.c_nodename, strlen(config.c_nodename));
+ CM_SetField(bmsg, eNodeName, CFG_KEY(c_nodename));
CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
CM_SetAsFieldSB(bmsg, eMesageText, &BounceMB);
bmsg->cm_format_type = FMT_RFC822;
CM_SetField(bmsg, eAuthor, HKEY("Citadel"));
CM_SetField(bmsg, eOriginalRoom, HKEY(MAILROOM));
- CM_SetField(bmsg, eNodeName, config.c_nodename, strlen(config.c_nodename));
+ CM_SetField(bmsg, eNodeName, CFG_KEY(c_nodename));
CM_SetField(bmsg, eMsgSubject, HKEY("Delivery Status Notification (Failure)"));
StrBufAppendBufPlain(
BounceMB,
msg->cm_format_type = 0;
CM_SetField(msg, eAuthor, usbuf->fullname, strlen(usbuf->fullname));
CM_SetField(msg, eOriginalRoom, HKEY(ADDRESS_BOOK_ROOM));
- CM_SetField(msg, eNodeName, NODENAME, strlen(NODENAME));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
CM_SetField(msg, eMesageText, HKEY("Purge this vCard\n"));
len = snprintf(buf, sizeof buf, VCARD_EXT_FORMAT,
CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
CM_SetField(msg, erFc822Addr, CCC->cs_inet_email, strlen(CCC->cs_inet_email));
CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname));
- CM_SetField(msg, eNodeName, NODENAME, strlen(NODENAME));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
CM_SetField(msg, eExclusiveID, pagename, strlen(pagename));
msgnum = CtdlSubmitMsg(msg, NULL, "", 0); /* Replace the current revision */
}
strcpy(suser, "");
strcpy(luser, "");
strcpy(fuser, "");
- strcpy(snode, NODENAME);
+ memcpy(snode, CFG_KEY(c_nodename) + 1);
if (mode == MT_RFC822)
OutputRFC822MsgHeaders(
TheMessage,
if (fromaddr != NULL) CM_SetField(msg, erFc822Addr, fromaddr, strlen(fromaddr));
if (room != NULL) CM_SetField(msg, eOriginalRoom, room, strlen(room));
- CM_SetField(msg, eNodeName, NODENAME, strlen(NODENAME));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
if (to != NULL) {
CM_SetField(msg, eRecipient, to, strlen(to));
recp = validate_recipients(to, NULL, 0);
CM_SetField(msg, eOriginalRoom, CCC->room.QRname, strlen(CCC->room.QRname));
}
- CM_SetField(msg, eNodeName, NODENAME, strlen(NODENAME));
- CM_SetField(msg, eHumanNode, HUMANNODE, strlen(HUMANNODE));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
+ CM_SetField(msg, eHumanNode, CFG_KEY(c_humannode));
if (rcplen > 0) {
CM_SetField(msg, eRecipient, recipient, rcplen);
msg->cm_format_type = 4;
CM_SetField(msg, eAuthor, CCC->user.fullname, strlen(CCC->user.fullname));
CM_SetField(msg, eOriginalRoom, req_room, strlen(req_room));
- CM_SetField(msg, eNodeName, config.c_nodename, strlen(config.c_nodename));
- CM_SetField(msg, eHumanNode, config.c_humannode, strlen(config.c_humannode));
+ CM_SetField(msg, eNodeName, CFG_KEY(c_nodename));
+ CM_SetField(msg, eHumanNode, CFG_KEY(c_humannode));
msg->cm_flags = flags;
CM_SetAsFieldSB(msg, eMesageText, &encoded_message);
/* If a "master user" is defined, handle its authentication if specified */
CC->is_master = 0;
- if (strlen(config.c_master_user) > 0) if (strlen(config.c_master_pass) > 0) if (authname) {
- if (!strcasecmp(authname, config.c_master_user)) {
- CC->is_master = 1;
- }
+ if ((configlen.c_master_user > 0) &&
+ (configlen.c_master_pass > 0) &&
+ (authname != NULL) &&
+ (!strcasecmp(authname, config.c_master_user)))
+ {
+ CC->is_master = 1;
}
/* Continue attempting user validation... */