From 3a969ce258b58045ce0f32f1fd50bdeeb581a304 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 20 Sep 2007 04:11:52 +0000 Subject: [PATCH] Master User hack is now defined in site config instead of as an ifdef. Also added the SVN Id: tag to the contents of the x-macros directory. --- citadel/config.h | 77 +-------------------------- citadel/include/artv_deserialize.h | 6 +-- citadel/include/artv_serialize.h | 6 +-- citadel/include/ctdl_module.h | 5 +- citadel/include/datadefinitions.h | 8 ++- citadel/include/dtds/config-defs.h | 56 +++++++++++-------- citadel/include/php_datadefinitions.h | 5 +- citadel/include/undef_data.h | 6 +-- citadel/user_ops.c | 14 ++--- 9 files changed, 58 insertions(+), 125 deletions(-) diff --git a/citadel/config.h b/citadel/config.h index 90d8bf604..c07f3ad8e 100644 --- a/citadel/config.h +++ b/citadel/config.h @@ -5,87 +5,14 @@ #include "serv_extensions.h" #include "citadel_dirs.h" + /* - * Global system configuration. - * - * Developers: please do NOT remove the fields labelled "not in use". We - * can't simply remove them from the struct, because this gets written to - * disk, and if you change it then you'll break all existing systems. - * However, if you'd like to reclaim some of that space for another use, feel - * free to do so, as long as the sizes are kept identical. + * Global system configuration. Don't change anything here. It's all in dtds/config-defs.h now. */ struct config { #include "datadefinitions.h" #include "dtds/config-defs.h" #include "undef_data.h" - -/// char c_nodename[16]; /* Unqualified "short" nodename */ -/// char c_fqdn[64]; /* Fully Qualified Domain Name */ -/// char c_humannode[21]; /* Long name of system */ -/// char c_phonenum[16]; /* Dialup number of system */ -/// uid_t c_ctdluid; /* UID under which we run Citadel */ -/// char c_creataide; /* room creator = room aide flag */ -/// int c_sleeping; /* watchdog timer setting */ -/// char c_initax; /* initial access level */ -/// char c_regiscall; /* call number to register on */ -/// char c_twitdetect; /* twit detect flag */ -/// char c_twitroom[ROOMNAMELEN]; /* twit detect msg move to room */ -/// char c_moreprompt[80]; /* paginator prompt */ -/// char c_restrict; /* restrict Internet mail flag */ -/// long c_niu_1; /* (not in use) */ -/// char c_site_location[32]; /* physical location of server */ -/// char c_sysadm[26]; /* name of system administrator */ -/// char c_niu_2[15]; /* (not in use) */ -/// int c_setup_level; /* what rev level we've setup to */ -/// int c_maxsessions; /* maximum concurrent sessions */ -/// char c_ip_addr[20]; /* IP address to listen on */ -/// int c_port_number; /* Cit listener port (usually 504) */ -/// int c_ipgm_secret; /* Internal program authentication */ -/// struct ExpirePolicy c_ep; /* System default msg expire policy */ -/// int c_userpurge; /* System default user purge (days) */ -/// int c_roompurge; /* System default room purge (days) */ -/// char c_logpages[ROOMNAMELEN]; /* Room to log pages to (or not) */ -/// char c_createax; /* Axlevel required to create rooms */ -/// long c_maxmsglen; /* Maximum message length */ -/// int c_min_workers; /* Lower limit on number of threads */ -/// int c_max_workers; /* Upper limit on number of threads */ -/// int c_pop3_port; /* POP3 listener port (usually 110) */ -/// int c_smtp_port; /* SMTP listener port (usually 25) */ -/// int c_rfc822_strict_from; /* 1 = don't correct From: forgeries*/ -/// int c_aide_zap; /* Are Aides allowed to zap rooms? */ -/// int c_imap_port; /* IMAP listener port (usually 143) */ -/// time_t c_net_freq; /* how often to run the networker */ -/// char c_disable_newu; /* disable NEWU command */ -/// char c_enable_fulltext; /* enable full text indexing */ -/// char c_baseroom[ROOMNAMELEN]; /* Name of baseroom (Lobby) */ -/// char c_aideroom[ROOMNAMELEN]; /* Name of aideroom (Aide) */ -/// int c_purge_hour; /* Hour during which db purges run */ -/// struct ExpirePolicy c_mbxep; /* Expire policy for mailbox rooms */ -/// char c_ldap_host[128]; /* Host where LDAP service lives */ -/// int c_ldap_port; /* Port on host where LDAP lives */ -/// char c_ldap_base_dn[256]; /* LDAP base DN */ -/// char c_ldap_bind_dn[256]; /* LDAP bind DN */ -/// char c_ldap_bind_pw[256]; /* LDAP bind password */ -/// int c_msa_port; /* SMTP MSA listener port (usu 587) */ -/// int c_imaps_port; /* IMAPS listener port (usually 993)*/ -/// int c_pop3s_port; /* POP3S listener port (usually 995)*/ -/// int c_smtps_port; /* SMTPS listener port (usually 465)*/ -/// char c_auto_cull; /* Cull db logs automatically? */ -/// char c_instant_expunge; /* IMAP instant expunge deleted msgs*/ -/// char c_allow_spoofing; /* SMTP allow spoofing of my domains*/ -/// char c_journal_email; /* Perform journaling of email */ -/// char c_journal_pubmsgs; /* Perform journaling of non-email */ -/// char c_journal_dest[128]; /* Where to send journalized msgs */ -/// char c_default_cal_zone[128]; /* Default calendar time zone */ -/// int c_pftcpdict_port; /* postfix tcptable support, see http://www.postfix.org/tcp_table.5.html */ -/// int c_managesieve_port; /* managesieve port. */ -/// int c_auth_mode; /* 0 = built-in Citadel auth; 1 = underlying host system auth */ -/// char c_funambol_host[256]; /* Funambol host. Blank to disable */ -/// int c_funambol_port; /* Funambol port */ -/// char c_funambol_source[256]; /* Funambol sync source */ -/// char c_funambol_auth[256]; /* Funambol auth details */ -/// char c_rbl_at_greeting; /* Check RBL's at connect instead of after RCPT */ -/// }; diff --git a/citadel/include/artv_deserialize.h b/citadel/include/artv_deserialize.h index 22f65fda7..18699ad5d 100644 --- a/citadel/include/artv_deserialize.h +++ b/citadel/include/artv_deserialize.h @@ -1,5 +1,7 @@ - /** + * + * $Id$ + * * this file contains the defines that cause our x-macros to serialize for artv export */ #define CFG_VALUE(a,b) a @@ -20,7 +22,5 @@ #define TIME(a) client_getln(cbuf, sizeof cbuf); buf->a = atol(cbuf) #define UID_T(a) client_getln(cbuf, sizeof cbuf); buf->a = atol(cbuf) - - #define STRING_BUF(a, b) client_getln(buf->a, b) #define STRING(a) client_getln(buf->a, sizeof buf->a) diff --git a/citadel/include/artv_serialize.h b/citadel/include/artv_serialize.h index eac490fd6..8e4c978dd 100644 --- a/citadel/include/artv_serialize.h +++ b/citadel/include/artv_serialize.h @@ -1,5 +1,7 @@ - /** + * + * $Id$ + * * this file contains the defines that cause our x-macros to serialize for artv export */ @@ -21,7 +23,5 @@ #define TIME(a) cprintf("%ld\n", (long)buf->a) #define UID_T(a) cprintf("%ld\n", (long)buf->a) - - #define STRING_BUF(a, b) cprintf("%s\n", buf->a) #define STRING(a) cprintf("%s\n", buf->a) diff --git a/citadel/include/ctdl_module.h b/citadel/include/ctdl_module.h index 8c0efb0e1..ce1b148f8 100644 --- a/citadel/include/ctdl_module.h +++ b/citadel/include/ctdl_module.h @@ -1,16 +1,15 @@ -/* $Id:$ */ +/* $Id$ */ #ifndef CTDL_MODULE_H #define CTDL_MODULE_H - #include "server.h" #include "sysdep_decls.h" + /* * define macros for module init stuff */ - #define CTDL_MODULE_INIT(module_name) char *ctdl_module_##module_name##_init (void) #define CTDL_INIT_CALL(module_name) ctdl_module_##module_name##_init () diff --git a/citadel/include/datadefinitions.h b/citadel/include/datadefinitions.h index a3d04b7e6..a6ca931e7 100644 --- a/citadel/include/datadefinitions.h +++ b/citadel/include/datadefinitions.h @@ -1,6 +1,7 @@ - - /** + * + * $Id$ + * * this file contains the defines that convert our x-macros to datatypes */ #define CFG_VALUE(a,b) a @@ -22,8 +23,5 @@ #define TIME(a) time_t a #define UID_T(a) uid_t a - - #define STRING_BUF(a, b) char a[b] #define STRING(a) char *a - diff --git a/citadel/include/dtds/config-defs.h b/citadel/include/dtds/config-defs.h index 8c0b3afe2..d95d454fb 100644 --- a/citadel/include/dtds/config-defs.h +++ b/citadel/include/dtds/config-defs.h @@ -1,44 +1,54 @@ +/* + * Global system configuration. + * + * Developers: please do NOT remove the fields labelled "not in use". We + * can't simply remove them from the struct, because this gets written to + * disk, and if you change it then you'll break all existing systems. + * However, if you'd like to reclaim some of that space for another use, feel + * free to do so, as long as the sizes are kept identical. + */ + CFG_VALUE(STRING_BUF(c_nodename, 16), " Unqualified \"short\" nodename "); CFG_VALUE(STRING_BUF(c_fqdn, 64), " Fully Qualified Domain Name "); CFG_VALUE(STRING_BUF(c_humannode, 21), " long name of system "); CFG_VALUE(STRING_BUF(c_phonenum, 16), " Dialup number of system "); -CFG_VALUE(UID_T(c_ctdluid), " UID under which we run Citadel "); -CFG_VALUE(CHAR(c_creataide), " room creator = room aide flag "); +CFG_VALUE(UID_T(c_ctdluid), " UID under which we run Citadel "); +CFG_VALUE(CHAR(c_creataide), " room creator = room aide flag "); CFG_VALUE(INTEGER(c_sleeping), " watchdog timer setting "); CFG_VALUE(CHAR(c_initax), " initial access level "); -CFG_VALUE(CHAR(c_regiscall), " call number to register on "); -CFG_VALUE(CHAR(c_twitdetect), " twit detect flag "); +CFG_VALUE(CHAR(c_regiscall), " call number to register on "); +CFG_VALUE(CHAR(c_twitdetect), " twit detect flag "); CFG_VALUE(STRING_BUF(c_twitroom, ROOMNAMELEN), " twit detect msg move to room "); CFG_VALUE(STRING_BUF(c_moreprompt, 80), " paginator prompt "); -CFG_VALUE(CHAR(c_restrict), " restrict internet mail flag "); -NO_ARTV(CFG_VALUE(LONG(c_niu_1), " (not in use) ")); /////// +CFG_VALUE(CHAR(c_restrict), " restrict internet mail flag "); +NO_ARTV(CFG_VALUE(LONG(c_niu_1), " (not in use) ")); /////// CFG_VALUE(STRING_BUF(c_site_location, 32), " physical location of server "); CFG_VALUE(STRING_BUF(c_sysadm, 26), " name of system administrator "); -NO_ARTV(CFG_VALUE(STRING_BUF(c_niu_2, 15), " (not in use) ")); +NO_ARTV(CFG_VALUE(STRING_BUF(c_niu_2, 15), " (not in use) ")); CFG_VALUE(INTEGER(c_setup_level), " what rev level we've setup to "); CFG_VALUE(INTEGER(c_maxsessions), " maximum concurrent sessions "); /* c_ip_addr is out of sortorder; its located after c_ldap_bind_pw in the old export */ CFG_VALUE(STRING_BUF(c_ip_addr, 20), " IP address to listen on "); CFG_VALUE(INTEGER(c_port_number), " Cit listener port (usually 504) "); -NO_ARTV(CFG_VALUE(INTEGER(c_ipgm_secret), " internal program authentication ")); -CFG_VALUE(SUBSTRUCT(struct ExpirePolicy c_ep), " System default msg expire policy "); +NO_ARTV(CFG_VALUE(INTEGER(c_ipgm_secret), " internal program authentication ")); +CFG_VALUE(SUBSTRUCT(struct ExpirePolicy c_ep), " System default msg expire policy "); SUBSTRUCT_ELEMENT(INTEGER(c_ep.expire_mode);) SUBSTRUCT_ELEMENT(INTEGER(c_ep.expire_value);) -CFG_VALUE(INTEGER(c_userpurge), " System default user purge (days) "); -CFG_VALUE(INTEGER(c_roompurge), " System default room purge (days) "); +CFG_VALUE(INTEGER(c_userpurge), " System default user purge (days) "); +CFG_VALUE(INTEGER(c_roompurge), " System default room purge (days) "); CFG_VALUE(STRING_BUF(c_logpages, ROOMNAMELEN), " Room to log pages to (or not) "); -CFG_VALUE(CHAR(c_createax), " Axlevel required to create rooms "); -CFG_VALUE(LONG(c_maxmsglen), " Maximum message length "); +CFG_VALUE(CHAR(c_createax), " Axlevel required to create rooms "); +CFG_VALUE(LONG(c_maxmsglen), " Maximum message length "); CFG_VALUE(INTEGER(c_min_workers), " Lower limit on number of threads "); CFG_VALUE(INTEGER(c_max_workers), " Upper limit on number of threads "); -CFG_VALUE(INTEGER(c_pop3_port), " POP3 listener port (usually 110) "); -CFG_VALUE(INTEGER(c_smtp_port), " SMTP listener port (usually 25) "); +CFG_VALUE(INTEGER(c_pop3_port), " POP3 listener port (usually 110) "); +CFG_VALUE(INTEGER(c_smtp_port), " SMTP listener port (usually 25) "); ////purge_hour? mbxexp? ldap_host? ldap_port? CFG_VALUE(INTEGER(c_rfc822_strict_from), " 1 = don't correct From: forgeries"); CFG_VALUE(INTEGER(c_aide_zap), " Are Aides allowed to zap rooms? "); -CFG_VALUE(INTEGER(c_imap_port), " IMAP listener port (usually 143) "); -CFG_VALUE(TIME(c_net_freq), " how often to run the networker "); -CFG_VALUE(CHAR(c_disable_newu), " disable NEWU command "); +CFG_VALUE(INTEGER(c_imap_port), " IMAP listener port (usually 143) "); +CFG_VALUE(TIME(c_net_freq), " how often to run the networker "); +CFG_VALUE(CHAR(c_disable_newu), " disable NEWU command "); CFG_VALUE(CHAR(c_enable_fulltext), " enable full text indexing "); CFG_VALUE(STRING_BUF(c_baseroom, ROOMNAMELEN), " Name of baseroom (Lobby) "); CFG_VALUE(STRING_BUF(c_aideroom, ROOMNAMELEN), " Name of aideroom (Aide) "); @@ -47,7 +57,7 @@ CFG_VALUE(SUBSTRUCT(struct ExpirePolicy c_mbxep), " Expire policy for mailbox ro SUBSTRUCT_ELEMENT(INTEGER(c_mbxep.expire_mode);) SUBSTRUCT_ELEMENT(INTEGER(c_mbxep.expire_value);) CFG_VALUE(STRING_BUF(c_ldap_host, 128), " Host where LDAP service lives "); -CFG_VALUE(INTEGER(c_ldap_port), " Port on host where LDAP lives "); +CFG_VALUE(INTEGER(c_ldap_port), " Port on host where LDAP lives "); CFG_VALUE(STRING_BUF(c_ldap_base_dn, 256), " LDAP base DN "); CFG_VALUE(STRING_BUF(c_ldap_bind_dn, 256), " LDAP bind DN "); CFG_VALUE(STRING_BUF(c_ldap_bind_pw, 256), " LDAP bind password "); @@ -55,18 +65,20 @@ CFG_VALUE(INTEGER(c_msa_port), " SMTP MSA listener port (usu 587) "); CFG_VALUE(INTEGER(c_imaps_port), " IMAPS listener port (usually 993)"); CFG_VALUE(INTEGER(c_pop3s_port), " POP3S listener port (usually 995)"); CFG_VALUE(INTEGER(c_smtps_port), " SMTPS listener port (usually 465)"); -CFG_VALUE(CHAR(c_auto_cull), " Cull db logs automatically? "); +CFG_VALUE(CHAR(c_auto_cull), " Cull db logs automatically? "); CFG_VALUE(CHAR(c_instant_expunge), " IMAP instant expunge deleted msgs"); CFG_VALUE(CHAR(c_allow_spoofing), " SMTP allow spoofing of my domains"); CFG_VALUE(CHAR(c_journal_email), " Perform journaling of email "); CFG_VALUE(CHAR(c_journal_pubmsgs), " Perform journaling of non-email "); CFG_VALUE(STRING_BUF(c_journal_dest, 128), " Where to send journalized msgs "); CFG_VALUE(STRING_BUF(c_default_cal_zone, 128), " Default calendar time zone "); -CFG_VALUE(INTEGER(c_pftcpdict_port), " postfix tcptable support, see http://www.postfix.org/tcp_table.5.html "); -CFG_VALUE(INTEGER(c_managesieve_port), " managesieve port. "); +CFG_VALUE(INTEGER(c_pftcpdict_port), " postfix tcptable support, see http://www.postfix.org/tcp_table.5.html "); +CFG_VALUE(INTEGER(c_managesieve_port), " managesieve port. "); CFG_VALUE(INTEGER(c_auth_mode), " 0 = built-in Citadel auth), 1 = underlying host system auth "); CFG_VALUE(STRING_BUF(c_funambol_host, 256), " Funambol host. Blank to disable "); CFG_VALUE(INTEGER(c_funambol_port), " Funambol port "); CFG_VALUE(STRING_BUF(c_funambol_source, 256), " Funambol sync source "); CFG_VALUE(STRING_BUF(c_funambol_auth, 256), " Funambol auth details "); CFG_VALUE(CHAR(c_rbl_at_greeting), " Check RBL's at connect instead of after RCPT "); +CFG_VALUE(STRING_BUF(c_master_user, 32), " Master user name "); +CFG_VALUE(STRING_BUF(c_master_pass, 32), " Master user password "); diff --git a/citadel/include/php_datadefinitions.h b/citadel/include/php_datadefinitions.h index 430081705..276ed5c69 100644 --- a/citadel/include/php_datadefinitions.h +++ b/citadel/include/php_datadefinitions.h @@ -1,6 +1,7 @@ - - /** + * + * $Id: $ + * * this file contains the defines that convert our x-macros to datatypes */ diff --git a/citadel/include/undef_data.h b/citadel/include/undef_data.h index f3d772423..791a9458b 100644 --- a/citadel/include/undef_data.h +++ b/citadel/include/undef_data.h @@ -1,6 +1,7 @@ - - /** + * + * $Id: $ + * * this file contains the defines that convert our x-macros to datatypes */ @@ -22,7 +23,6 @@ #undef TIME #undef UID_T - #undef STRING_BUF #undef STRING diff --git a/citadel/user_ops.c b/citadel/user_ops.c index b23a4426e..68ea60569 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -340,9 +340,6 @@ int getuserbyuid(struct ctdluser *usbuf, uid_t number) return (-1); } -#define MASTER_USER "master" -#define MASTER_PASSWORD "d0nuts" - /* * Back end for cmd_user() and its ilk * @@ -359,16 +356,15 @@ int CtdlLoginExistingUser(char *authname, char *trythisname) if (trythisname == NULL) return login_not_found; + /* If a "master user" is defined, handle its authentication if specified */ CC->is_master = 0; -#ifdef MASTER_USER_HACK - /* This lives inside an ifdef for now, because it isn't yet secure enough for general deployment */ - if (authname) { - if (!strcasecmp(authname, MASTER_USER)) { + 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; } } -#endif + /* Continue attempting user validation... */ safestrncpy(username, trythisname, USERNAME_SIZE); striplt(username); @@ -697,7 +693,7 @@ int CtdlTryPassword(char *password) code = (-1); if (CC->is_master) { - code = strcmp(password, MASTER_PASSWORD); + code = strcmp(password, config.c_master_pass); } else if (config.c_auth_mode == 1) { -- 2.30.2