Master User hack is now defined in site config instead of
authorArt Cancro <ajc@citadel.org>
Thu, 20 Sep 2007 04:11:52 +0000 (04:11 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 20 Sep 2007 04:11:52 +0000 (04:11 +0000)
as an ifdef.  Also added the SVN Id: tag to the contents of the x-macros directory.

citadel/config.h
citadel/include/artv_deserialize.h
citadel/include/artv_serialize.h
citadel/include/ctdl_module.h
citadel/include/datadefinitions.h
citadel/include/dtds/config-defs.h
citadel/include/php_datadefinitions.h
citadel/include/undef_data.h
citadel/user_ops.c

index 90d8bf60430e454de4da909c8aa5f3f8adc79273..c07f3ad8e5346e7aedb231dabc830b2faff835e3 100644 (file)
@@ -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 */
-///
 };
 
 
index 22f65fda7d3a802b40998211846754cb0f2e3c47..18699ad5dc79074f75f1ae991e97377dc5b51909 100644 (file)
@@ -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)
index eac490fd6d704ef7dbde7e7ea1458e0db47fea56..8e4c978dd3b84cdb21d9a6982bb58a48c3d20d10 100644 (file)
@@ -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)
index 8c0efb0e173647739db7f877ef7ff1b884565fbb..ce1b148f87d161820de09c0f2c29ef53e2626de9 100644 (file)
@@ -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 ()
index a3d04b7e6ce121c2ded8c786de3e0b87bdfb07c3..a6ca931e7ac061e4e94ada1d08d84129966eb9d1 100644 (file)
@@ -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
-
index 8c0b3afe23f59ab5e3bd24b4454fc830872ee40f..d95d454fbc03ff4eccf8f2acce1ac9d0013f01c9 100644 (file)
@@ -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 ");
index 430081705b5dfdab02fd3e3be2235e5604e03dc4..276ed5c69bddca60af96be9fc7dbf07b4173e3d2 100644 (file)
@@ -1,6 +1,7 @@
-
-
 /**
+ *
+ * $Id: $
+ *
  * this file contains the defines that convert our x-macros to datatypes
  */
 
index f3d772423e1722a7aae433cfedc3099b9b97289c..791a9458b77333e6764da87af1c62be44bf8b8f7 100644 (file)
@@ -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
 
index b23a4426eaf1db8549d0c1e7fbea2a1f7a143d3a..68ea605695b01c43fa51778611ff64099f525da6 100644 (file)
@@ -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) {