]> code.citadel.org Git - citadel.git/blobdiff - citadel/setup.c
Prepared some of the authmode stuff for the imminent addition
[citadel.git] / citadel / setup.c
index 9f4bf5dc7ef8d3a36d1a2e48bb77b1740ab4ae79..fc64eb78e0586e1c998bc9075dc2a4a1100c5324 100644 (file)
 #include <limits.h>
 #include <pwd.h>
 #include <time.h>
-
+#include <libcitadel.h>
 #include "citadel.h"
 #include "axdefs.h"
 #include "sysdep.h"
 #include "config.h"
-#include "tools.h"
 #include "citadel_dirs.h"
 
 #define MAXSETUP 5     /* How many setup questions to ask */
@@ -379,10 +378,6 @@ void install_init_scripts(void)
        char *initfile = "/etc/init.d/citadel";
        char command[SIZ];
 
-       if (yesno("Would you like to automatically start Citadel at boot?\n", 1) == 0) {
-               return;
-       }
-
        if ((stat("/etc/init.d/", &etcinitd) == -1) && 
            (errno == ENOENT))
        {
@@ -393,6 +388,20 @@ void install_init_scripts(void)
                        initfile = "/etc/rc.d/init.d/citadel";
        }
 
+       fp = fopen(initfile, "r");
+       if (fp != NULL) {
+               if (yesno("Citadel already appears to be configured to start at boot.\n"
+                  "Would you like to keep your boot configuration as is?\n", 1) == 1) {
+                       return;
+               }
+               fclose(fp);
+               
+       }
+
+       if (yesno("Would you like to automatically start Citadel at boot?\n", 1) == 0) {
+               return;
+       }
+
        fp = fopen(initfile, "w");
        if (fp == NULL) {
                display_error("Cannot create /etc/init.d/citadel");
@@ -631,7 +640,7 @@ void strprompt(char *prompt_title, char *prompt_text, char *str)
                printf("Enter new value or press return to leave unchanged:\n");
                fgets(buf, sizeof buf, stdin);
                buf[strlen(buf) - 1] = 0;
-               if (strlen(buf) != 0)
+               if (!IsEmptyStr(buf))
                        strcpy(str, buf);
                break;
 
@@ -742,8 +751,8 @@ void edit_value(int curr)
                                        config.c_ctdluid = atoi(ctdluidname);
                                }
                        }
-               }
 #endif
+               }
                break;
 
        case 3:
@@ -776,10 +785,10 @@ void edit_value(int curr)
                {
                        if (getenv("ENABLE_UNIX_AUTH")) {
                                if (!strcasecmp(getenv("ENABLE_UNIX_AUTH"), "yes")) {
-                                       config.c_auth_mode = 1;
+                                       config.c_auth_mode = AUTHMODE_HOST;
                                }
                                else {
-                                       config.c_auth_mode = 0;
+                                       config.c_auth_mode = AUTHMODE_NATIVE;
                                }
                        }
                }
@@ -940,6 +949,8 @@ int main(int argc, char *argv[])
        char relhome[PATH_MAX]="";
        char ctdldir[PATH_MAX]=CTDLDIR;
        
+       CtdlInitBase64Table();
+
        /* set an invalid setup type */
        setup_type = (-1);
 
@@ -993,7 +1004,7 @@ int main(int argc, char *argv[])
                safestrncpy(relhome, ctdl_home_directory, sizeof relhome);
        }
 
-       calc_dirs_n_files(relh, home, relhome, ctdldir);
+       calc_dirs_n_files(relh, home, relhome, ctdldir, 0);
        
        enable_home=(relh|home);
 
@@ -1069,11 +1080,11 @@ int main(int argc, char *argv[])
        fclose(fp);
 
        /* set some sample/default values in place of blanks... */
-       if (strlen(config.c_nodename) == 0)
+       if (IsEmptyStr(config.c_nodename))
                safestrncpy(config.c_nodename, my_utsname.nodename,
                            sizeof config.c_nodename);
        strtok(config.c_nodename, ".");
-       if (strlen(config.c_fqdn) == 0) {
+       if (IsEmptyStr(config.c_fqdn) ) {
                if ((he = gethostbyname(my_utsname.nodename)) != NULL)
                        safestrncpy(config.c_fqdn, he->h_name,
                                    sizeof config.c_fqdn);
@@ -1081,20 +1092,20 @@ int main(int argc, char *argv[])
                        safestrncpy(config.c_fqdn, my_utsname.nodename,
                                    sizeof config.c_fqdn);
        }
-       if (strlen(config.c_humannode) == 0)
+       if (IsEmptyStr(config.c_humannode))
                strcpy(config.c_humannode, "My System");
-       if (strlen(config.c_phonenum) == 0)
+       if (IsEmptyStr(config.c_phonenum))
                strcpy(config.c_phonenum, "US 800 555 1212");
        if (config.c_initax == 0) {
                config.c_initax = 4;
        }
-       if (strlen(config.c_moreprompt) == 0)
+       if (IsEmptyStr(config.c_moreprompt))
                strcpy(config.c_moreprompt, "<more>");
-       if (strlen(config.c_twitroom) == 0)
+       if (IsEmptyStr(config.c_twitroom))
                strcpy(config.c_twitroom, "Trashcan");
-       if (strlen(config.c_baseroom) == 0)
+       if (IsEmptyStr(config.c_baseroom))
                strcpy(config.c_baseroom, BASEROOM);
-       if (strlen(config.c_aideroom) == 0)
+       if (IsEmptyStr(config.c_aideroom))
                strcpy(config.c_aideroom, "Aide");
        if (config.c_port_number == 0) {
                config.c_port_number = 504;
@@ -1147,6 +1158,8 @@ int main(int argc, char *argv[])
        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;
 
        /* Go through a series of dialogs prompting for config info */
        for (curr = 1; curr <= MAXSETUP; ++curr) {
@@ -1239,7 +1252,6 @@ NEW_INST:
        disable_other_mta("dovecot");
        disable_other_mta("exim");
        disable_other_mta("exim4");
-       disable_other_mta("hula");
        disable_other_mta("imapd");
        disable_other_mta("mta");
        disable_other_mta("pop3d");
@@ -1249,7 +1261,6 @@ NEW_INST:
        disable_other_mta("saslauthd");
        disable_other_mta("sendmail");
        disable_other_mta("vmailmgrd");
-       disable_other_mta("zimbra");
 #endif
 
        /* Check for the 'db' nss and offer to disable it */
@@ -1260,22 +1271,13 @@ NEW_INST:
        else
                gid = pw->pw_gid;
 
-       progress("Setting file permissions", 0, 4);
+       progress("Setting file permissions", 0, 3);
        chown(ctdl_run_dir, config.c_ctdluid, gid);
-       progress("Setting file permissions", 1, 4);
+       progress("Setting file permissions", 1, 3);
        chown(file_citadel_config, config.c_ctdluid, gid);
-       progress("Setting file permissions", 2, 4);
-
-       snprintf(aaa, sizeof aaa,
-                        "%schkpwd",
-                        ctdl_sbin_dir);
-       chown(aaa,0,0); /*  config.c_ctdluid, gid); chkpwd needs to be root owned*/
-       progress("Setting file permissions", 3, 4);
-       chmod(aaa, 04755); 
-
-       progress("Setting file permissions", 3, 4);
+       progress("Setting file permissions", 2, 3);
        chmod(file_citadel_config, S_IRUSR | S_IWUSR);
-       progress("Setting file permissions", 4, 4);
+       progress("Setting file permissions", 3, 3);
 
        /* 
         * If we're running on SysV, install init scripts.