Make config defaults seteable by environment variables if setup is running headless
authorWilfried Goesgens <dothebart@citadel.org>
Thu, 12 May 2011 19:50:47 +0000 (19:50 +0000)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 4 Sep 2011 20:31:59 +0000 (20:31 +0000)
these are the environment variables and their defaults:
uname(&my_utsname);
/* set some sample/default values in place of blanks... */
CITADEL_c_nodename=my_utsname.nodename
CITADEL_c_humannode=_("My System")
CITADEL_c_phonenum=_("US 800 555 1212")
CITADEL_c_initax=4
CITADEL_c_moreprompt="<more>"
CITADEL_c_twitroom="Trashcan"
CITADEL_c_baseroom=BASEROOM
CITADEL_c_aideroom="Aide"
CITADEL_c_port_number=504
CITADEL_c_sleeping=900
CITADEL_c_smtp_port=25
CITADEL_c_pop3_port=110
CITADEL_c_imap_port=143
CITADEL_c_msa_port=587
CITADEL_c_smtps_port=465
CITADEL_c_pop3s_port=995
CITADEL_c_imaps_port=993
CITADEL_c_pftcpdict_port=-1
CITADEL_c_managesieve_port=2020
CITADEL_c_xmpp_c2s_port=5222
CITADEL_c_xmpp_s2s_port=5269

citadel/utils/setup.c

index fc702d44fd8c9d78bec0b031e30211778f415dc5..ae7b28ecd3a728cf30f359667f3f59bbf5d55387 100644 (file)
@@ -1252,6 +1252,47 @@ void check_init_script (char *relhome)
        }
 }
 
+
+
+#define GetDefaultVALINT(CFGNAME, DEFL) GetDefaultValInt(&config.CFGNAME, "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValInt(int *WhereTo, const char *VarName, int DefVal)
+{
+       const char *ch;
+       if (*WhereTo == 0) *WhereTo = DefVal;
+
+       if ((setup_type == UI_SILENT) &&
+           (ch = getenv(VarName), ch != NULL))
+       {
+               *WhereTo = atoi(ch);
+       }
+}
+#define GetDefaultVALCHAR(CFGNAME, DEFL) GetDefaultValChar(&config.CFGNAME, "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValChar(char *WhereTo, const char *VarName, char DefVal)
+{
+       const char *ch;
+       if (*WhereTo == 0) *WhereTo = DefVal;
+
+       if ((setup_type == UI_SILENT) &&
+           (ch = getenv(VarName), ch != NULL))
+       {
+               *WhereTo = atoi(ch);
+       }
+}
+#define GetDefaultVALSTR(CFGNAME, DEFL) GetDefaultValStr((char**)&config.CFGNAME, sizeof(config.CFGNAME), "CITADEL_"#CFGNAME, DEFL)
+void GetDefaultValStr(char **WhereTo, size_t nMax, const char *VarName, const char *DefVal)
+{
+       const char *ch;
+       if (**WhereTo == '\0') 
+               safestrncpy(*WhereTo, DefVal, nMax);
+
+       if ((setup_type == UI_SILENT) &&
+           (ch = getenv(VarName), ch != NULL))
+       {
+               safestrncpy(*WhereTo, ch, nMax);
+       }
+}
+
+
 void set_default_values(void)
 {
        struct passwd *pw;
@@ -1262,9 +1303,7 @@ void set_default_values(void)
        uname(&my_utsname);
 
        /* set some sample/default values in place of blanks... */
-       if (IsEmptyStr(config.c_nodename))
-               safestrncpy(config.c_nodename, my_utsname.nodename,
-                           sizeof config.c_nodename);
+       GetDefaultVALSTR(c_nodename, my_utsname.nodename);
        strtok(config.c_nodename, ".");
        if (IsEmptyStr(config.c_fqdn) ) {
                if ((he = gethostbyname(my_utsname.nodename)) != NULL) {
@@ -1273,25 +1312,19 @@ void set_default_values(void)
                        safestrncpy(config.c_fqdn, my_utsname.nodename, sizeof config.c_fqdn);
                }
        }
-       if (IsEmptyStr(config.c_humannode)) {
-               strcpy(config.c_humannode, _("My System"));
-       }
-       if (IsEmptyStr(config.c_phonenum)) {
-               strcpy(config.c_phonenum, _("US 800 555 1212"));
-       }
-       if (config.c_initax == 0) {
-               config.c_initax = 4;
-       }
-       if (IsEmptyStr(config.c_moreprompt)) strcpy(config.c_moreprompt, "<more>");
-       if (IsEmptyStr(config.c_twitroom)) strcpy(config.c_twitroom, "Trashcan");
-       if (IsEmptyStr(config.c_baseroom)) strcpy(config.c_baseroom, BASEROOM);
-       if (IsEmptyStr(config.c_aideroom)) strcpy(config.c_aideroom, "Aide");
-       if (config.c_port_number == 0) {
-               config.c_port_number = 504;
-       }
-       if (config.c_sleeping == 0) {
-               config.c_sleeping = 900;
-       }
+       GetDefaultVALSTR(c_humannode, _("My System"));
+       GetDefaultVALSTR(c_phonenum, _("US 800 555 1212"));
+
+       GetDefaultVALCHAR(c_initax, 4);
+
+       GetDefaultVALSTR(c_moreprompt, "<more>");
+       GetDefaultVALSTR(c_twitroom, "Trashcan");
+       GetDefaultVALSTR(c_baseroom, BASEROOM);
+       GetDefaultVALSTR(c_aideroom, "Aide");
+       GetDefaultVALINT(c_port_number, 504);
+       
+       GetDefaultVALINT(c_sleeping, 900);
+
        if (config.c_ctdluid == 0) {
                pw = getpwnam("citadel");
                if (pw != NULL) {
@@ -1331,17 +1364,17 @@ void set_default_values(void)
        /*
         * Default port numbers for various services
         */
-       if (config.c_smtp_port == 0) config.c_smtp_port = 25;
-       if (config.c_pop3_port == 0) config.c_pop3_port = 110;
-       if (config.c_imap_port == 0) config.c_imap_port = 143;
-       if (config.c_msa_port == 0) config.c_msa_port = 587;
-       if (config.c_smtps_port == 0) config.c_smtps_port = 465;
-       if (config.c_pop3s_port == 0) config.c_pop3s_port = 995;
-       if (config.c_imaps_port == 0) config.c_imaps_port = 993;
-       if (config.c_pftcpdict_port == 0) config.c_pftcpdict_port = -1;
-       if (config.c_managesieve_port == 0) config.c_managesieve_port = 2020;
-       if (config.c_xmpp_c2s_port == 0) config.c_xmpp_c2s_port = 5222;
-       if (config.c_xmpp_s2s_port == 0) config.c_xmpp_s2s_port = 5269;
+       GetDefaultVALINT(c_smtp_port, 25);
+       GetDefaultVALINT(c_pop3_port, 110);
+       GetDefaultVALINT(c_imap_port, 143);
+       GetDefaultVALINT(c_msa_port, 587);
+       GetDefaultVALINT(c_smtps_port, 465);
+       GetDefaultVALINT(c_pop3s_port, 995);
+       GetDefaultVALINT(c_imaps_port, 993);
+       GetDefaultVALINT(c_pftcpdict_port, -1);
+       GetDefaultVALINT(c_managesieve_port, 2020);
+       GetDefaultVALINT(c_xmpp_c2s_port, 5222);
+       GetDefaultVALINT(c_xmpp_s2s_port, 5269);
 }