]> code.citadel.org Git - citadel.git/commitdiff
* Updated setup dialog for host auth mode.
authorArt Cancro <ajc@citadel.org>
Wed, 20 Dec 2006 17:25:00 +0000 (17:25 +0000)
committerArt Cancro <ajc@citadel.org>
Wed, 20 Dec 2006 17:25:00 +0000 (17:25 +0000)
* Dropped UI_NEWT mode in setup because we did not have
  enough control over button defaults, and because newt
  is not widespread enough to justify maintenance.

citadel/configure.ac
citadel/setup.c

index 9f2ef07f2bfc1782bfda88ad3caab370cff60c76..61a3cea1032841dd8bc9073471e172a8ae845971 100644 (file)
@@ -113,7 +113,6 @@ AC_ARG_WITH(with_zlib, [  --with-zlib             use zlib compression if presen
 AC_ARG_WITH(with_ldap, [  --with-ldap             use OpenLDAP client library])
 AC_ARG_WITH(with_libical, [  --with-libical          use libical calendaring library])
 AC_ARG_WITH(with_libsieve, [  --with-libsieve         use libsieve mail sorting library])
 AC_ARG_WITH(with_ldap, [  --with-ldap             use OpenLDAP client library])
 AC_ARG_WITH(with_libical, [  --with-libical          use libical calendaring library])
 AC_ARG_WITH(with_libsieve, [  --with-libsieve         use libsieve mail sorting library])
-AC_ARG_WITH(with_newt, [  --with-newt             use newt window library])
 
 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
        db_dir="$with_db"
 
 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
        db_dir="$with_db"
@@ -487,22 +486,6 @@ fi
 
 
 
 
 
 
-dnl Checks for the newt window library.
-if test "x$with_newt" != xno ; then
-       AC_CHECK_HEADERS(newt.h,
-               [AC_CHECK_LIB(newt, newtInit,
-                       [ok_newt=yes],,
-       )])
-fi
-
-if test "x$ok_newt" = xyes ; then
-       SETUP_LIBS="-lnewt $SETUP_LIBS"
-       AC_DEFINE(HAVE_NEWT)
-fi
-
-
-
-
 
 dnl Checks for the libsieve mailbox sorting library.
 if test "x$with_libsieve" != xno ; then
 
 dnl Checks for the libsieve mailbox sorting library.
 if test "x$with_libsieve" != xno ; then
index 6e3640f69aa96a369dbddc6d7be8fc518a8ad9f8..b1c6487db1bec58e7a1260110d2490b81a5d7c8e 100644 (file)
 #include "tools.h"
 #include "citadel_dirs.h"
 
 #include "tools.h"
 #include "citadel_dirs.h"
 
-#ifdef HAVE_NEWT
-#include <newt.h>
-#endif
-
-
 #define MAXSETUP 5     /* How many setup questions to ask */
 
 #define UI_TEXT                0       /* Default setup type -- text only */
 #define UI_DIALOG      2       /* Use the 'dialog' program */
 #define UI_SILENT      3       /* Silent running, for use in scripts */
 #define MAXSETUP 5     /* How many setup questions to ask */
 
 #define UI_TEXT                0       /* Default setup type -- text only */
 #define UI_DIALOG      2       /* Use the 'dialog' program */
 #define UI_SILENT      3       /* Silent running, for use in scripts */
-#define UI_NEWT                4       /* Use the "newt" window library */
 
 #define SERVICE_NAME   "citadel"
 #define PROTO_NAME     "tcp"
 
 #define SERVICE_NAME   "citadel"
 #define PROTO_NAME     "tcp"
@@ -104,14 +98,15 @@ char *setup_text[] = {
 "of Citadel on the same computer and there is something else\n"
 "already using port 504.\n",
 
 "of Citadel on the same computer and there is something else\n"
 "already using port 504.\n",
 
-"Normally, a Citadel system uses a 'black box' authentication mode.\n"
+"Normally, a Citadel system uses a \"black box\" authentication mode.\n"
 "This means that users do not have accounts or home directories on\n"
 "the underlying host system -- Citadel manages its own user database.\n"
 "However, if you wish to override this behavior, you can enable the\n"
 "host based authentication mode which is traditional for Unix systems.\n"
 "This means that users do not have accounts or home directories on\n"
 "the underlying host system -- Citadel manages its own user database.\n"
 "However, if you wish to override this behavior, you can enable the\n"
 "host based authentication mode which is traditional for Unix systems.\n"
-"Do you want to do this?  Enter 0 for black box authentication mode,\n"
-"or 1 for host authentication mode.   FIXME this is badly worded,\n"
-"rewrite it and offer a better dialog mode.\n"
+"WARNING: do *not* change this setting once your system is installed.\n"
+"\n"
+"(Answer \"no\" unless you completely understand this option)\n"
+"Do you want to enable host based authentication mode?\n"
 
 };
 
 
 };
 
@@ -121,11 +116,6 @@ int direction;
 
 void cleanup(int exitcode)
 {
 
 void cleanup(int exitcode)
 {
-#ifdef HAVE_NEWT
-       newtCls();
-       newtRefresh();
-       newtFinished();
-#endif
        exit(exitcode);
 }
 
        exit(exitcode);
 }
 
@@ -140,14 +130,8 @@ void title(char *text)
 
 
 
 
 
 
-int yesno(char *question)
+int yesno(char *question, int default_value)
 {
 {
-#ifdef HAVE_NEWT
-       newtComponent form = NULL;
-       newtComponent yesbutton = NULL;
-       newtComponent nobutton = NULL;
-       int prompt_window_height = 0;
-#endif
        int i = 0;
        int answer = 0;
        char buf[SIZ];
        int i = 0;
        int answer = 0;
        char buf[SIZ];
@@ -156,10 +140,15 @@ int yesno(char *question)
 
        case UI_TEXT:
                do {
 
        case UI_TEXT:
                do {
-                       printf("%s\nYes/No --> ", question);
+                       printf("%s\nYes/No [%s] --> ",
+                               question,
+                               ( default_value ? "Yes" : "No" )
+                       );
                        fgets(buf, sizeof buf, stdin);
                        answer = tolower(buf[0]);
                        fgets(buf, sizeof buf, stdin);
                        answer = tolower(buf[0]);
-                       if (answer == 'y')
+                       if ((buf[0]==0) || (buf[0]==13) || (buf[0]==10))
+                               answer = default_value;
+                       else if (answer == 'y')
                                answer = 1;
                        else if (answer == 'n')
                                answer = 0;
                                answer = 1;
                        else if (answer == 'n')
                                answer = 0;
@@ -167,8 +156,9 @@ int yesno(char *question)
                break;
 
        case UI_DIALOG:
                break;
 
        case UI_DIALOG:
-               sprintf(buf, "exec %s --yesno '%s' 10 72",
+               sprintf(buf, "exec %s %s --yesno '%s' 15 75",
                        getenv("CTDL_DIALOG"),
                        getenv("CTDL_DIALOG"),
+                       ( default_value ? "" : "--defaultno" ),
                        question);
                i = system(buf);
                if (i == 0) {
                        question);
                i = system(buf);
                if (i == 0) {
@@ -179,31 +169,6 @@ int yesno(char *question)
                }
                break;
 
                }
                break;
 
-#ifdef HAVE_NEWT
-       case UI_NEWT:
-               prompt_window_height = num_tokens(question, '\n') + 5;
-               newtCenteredWindow(76, prompt_window_height, "Question");
-               form = newtForm(NULL, NULL, 0);
-               for (i=0; i<num_tokens(question, '\n'); ++i) {
-                       extract_token(buf, question, i, '\n', sizeof buf);
-                       newtFormAddComponent(form, newtLabel(1, 1+i, buf));
-               }
-               yesbutton = newtButton(10, (prompt_window_height - 4), "Yes");
-               nobutton = newtButton(60, (prompt_window_height - 4), "No");
-               newtFormAddComponent(form, yesbutton);
-               newtFormAddComponent(form, nobutton);
-               if (newtRunForm(form) == yesbutton) {
-                       answer = 1;
-               }
-               else {
-                       answer = 0;
-               }
-               newtPopWindow();
-               newtFormDestroy(form);  
-
-               break;
-#endif
-
        }
        return (answer);
 }
        }
        return (answer);
 }
@@ -211,10 +176,6 @@ int yesno(char *question)
 
 void important_message(char *title, char *msgtext)
 {
 
 void important_message(char *title, char *msgtext)
 {
-#ifdef HAVE_NEWT
-       newtComponent form = NULL;
-       int i = 0;
-#endif
        char buf[SIZ];
 
        switch (setup_type) {
        char buf[SIZ];
 
        switch (setup_type) {
@@ -232,22 +193,6 @@ void important_message(char *title, char *msgtext)
                        msgtext);
                system(buf);
                break;
                        msgtext);
                system(buf);
                break;
-
-#ifdef HAVE_NEWT
-       case UI_NEWT:
-               newtCenteredWindow(76, 10, title);
-               form = newtForm(NULL, NULL, 0);
-               for (i=0; i<num_tokens(msgtext, '\n'); ++i) {
-                       extract_token(buf, msgtext, i, '\n', sizeof buf);
-                       newtFormAddComponent(form, newtLabel(1, 1+i, buf));
-               }
-               newtFormAddComponent(form, newtButton(35, 5, "OK"));
-               newtRunForm(form);
-               newtPopWindow();
-               newtFormDestroy(form);  
-               break;
-#endif
-
        }
 }
 
        }
 }
 
@@ -263,16 +208,6 @@ void display_error(char *error_message)
 
 void progress(char *text, long int curr, long int cmax)
 {
 
 void progress(char *text, long int curr, long int cmax)
 {
-#ifdef HAVE_NEWT
-
-       /* These variables are static because progress() gets called
-        * multiple times during the course of whatever operation is
-        * being performed.  This makes setup non-threadsafe, but who
-        * cares?
-        */
-       static newtComponent form = NULL;
-       static newtComponent scale = NULL;
-#endif
        static long dots_printed = 0L;
        long a = 0;
        static FILE *fp = NULL;
        static long dots_printed = 0L;
        long a = 0;
        static FILE *fp = NULL;
@@ -329,28 +264,6 @@ void progress(char *text, long int curr, long int cmax)
                }
                break;
 
                }
                break;
 
-#ifdef HAVE_NEWT
-       case UI_NEWT:
-               if (curr == 0) {
-                       newtCenteredWindow(76, 8, text);
-                       form = newtForm(NULL, NULL, 0);
-                       scale = newtScale(1, 3, 74, cmax);
-                       newtFormAddComponent(form, scale);
-                       newtDrawForm(form);
-                       newtRefresh();
-               }
-               if ((curr > 0) && (curr <= cmax)) {
-                       newtScaleSet(scale, curr);
-                       newtRefresh();
-               }
-               if (curr == cmax) {
-                       newtFormDestroy(form);  
-                       newtPopWindow();
-                       newtRefresh();
-               }
-               break;
-#endif
-
        }
 }
 
        }
 }
 
@@ -468,7 +381,7 @@ void install_init_scripts(void)
 {
        FILE *fp;
 
 {
        FILE *fp;
 
-       if (yesno("Would you like to automatically start Citadel at boot?\n") == 0) {
+       if (yesno("Would you like to automatically start Citadel at boot?\n", 1) == 0) {
                return;
        }
 
                return;
        }
 
@@ -560,7 +473,7 @@ void check_xinetd_entry(void) {
                        "connect incoming telnet sessions to Citadel, bypassing the\n"
                        "host system login: prompt.  Would you like to do this?\n"
                );
                        "connect incoming telnet sessions to Citadel, bypassing the\n"
                        "host system login: prompt.  Would you like to do this?\n"
                );
-               if (yesno(buf) == 0) {
+               if (yesno(buf, 1) == 0) {
                        return;
                }
        }
                        return;
                }
        }
@@ -632,7 +545,7 @@ void disable_other_mta(char *mta) {
                        "25, 110, and 143?\n",
                        mta, mta, mta, mta
                );
                        "25, 110, and 143?\n",
                        mta, mta, mta, mta
                );
-               if (yesno(buf) == 0) {
+               if (yesno(buf, 1) == 0) {
                        return;
                }
        }
                        return;
                }
        }
@@ -691,12 +604,6 @@ int test_server(void) {
 
 void strprompt(char *prompt_title, char *prompt_text, char *str)
 {
 
 void strprompt(char *prompt_title, char *prompt_text, char *str)
 {
-#ifdef HAVE_NEWT
-       newtComponent form;
-       char *result;
-       int i;
-       int prompt_window_height = 0;
-#endif
        char buf[SIZ];
        char setupmsg[SIZ];
        char dialog_result[PATH_MAX];
        char buf[SIZ];
        char setupmsg[SIZ];
        char dialog_result[PATH_MAX];
@@ -735,42 +642,18 @@ void strprompt(char *prompt_title, char *prompt_text, char *str)
                }
                break;
 
                }
                break;
 
-#ifdef HAVE_NEWT
-       case UI_NEWT:
-
-               prompt_window_height = num_tokens(prompt_text, '\n') + 5 ;
-               newtCenteredWindow(76,
-                               prompt_window_height,
-                               prompt_title);
-               form = newtForm(NULL, NULL, 0);
-               for (i=0; i<num_tokens(prompt_text, '\n'); ++i) {
-                       extract_token(buf, prompt_text, i, '\n', sizeof buf);
-                       newtFormAddComponent(form, newtLabel(1, 1+i, buf));
-               }
-               newtFormAddComponent(form,
-                       newtEntry(1,
-                               (prompt_window_height - 2),
-                               str,
-                               74,
-                               (const char **) &result,
-                               NEWT_FLAG_RETURNEXIT)
-               );
-               newtRunForm(form);
-               strcpy(str, result);
-
-               newtPopWindow();
-               newtFormDestroy(form);  
-
-#endif
        }
 }
 
        }
 }
 
+void set_bool_val(int msgpos, int *ip) {
+       title(setup_titles[msgpos]);
+       *ip = yesno(setup_text[msgpos], *ip);
+}
+
 void set_str_val(int msgpos, char *str) {
        strprompt(setup_titles[msgpos], setup_text[msgpos], str);
 }
 
 void set_str_val(int msgpos, char *str) {
        strprompt(setup_titles[msgpos], setup_text[msgpos], str);
 }
 
-
-
 void set_int_val(int msgpos, int *ip)
 {
        char buf[16];
 void set_int_val(int msgpos, int *ip)
 {
        char buf[16];
@@ -802,7 +685,7 @@ void edit_value(int curr)
 {
        int i;
        struct passwd *pw;
 {
        int i;
        struct passwd *pw;
-       char ctdluidname[SIZ];
+       char ctdluidname[256];
 
        switch (curr) {
 
 
        switch (curr) {
 
@@ -847,9 +730,8 @@ void edit_value(int curr)
                set_int_val(curr, &config.c_port_number);
                break;
 
                set_int_val(curr, &config.c_port_number);
                break;
 
-               /* FIXME we need a set_bool_val() function */
        case 5:
        case 5:
-               set_int_val(curr, &config.c_auth_mode);
+               set_bool_val(curr, &config.c_auth_mode);
                break;
 
        }
                break;
 
        }
@@ -890,13 +772,6 @@ int discover_ui(void)
                return UI_DIALOG;
        }
                
                return UI_DIALOG;
        }
                
-
-#ifdef HAVE_NEWT
-       newtInit();
-       newtCls();
-       newtDrawRootText(0, 0, "Citadel Setup");
-       return UI_NEWT;
-#endif
        return UI_TEXT;
 }
 
        return UI_TEXT;
 }
 
@@ -980,7 +855,7 @@ void fixnss(void) {
                "\n"
        );
 
                "\n"
        );
 
-       if (yesno(question)) {
+       if (yesno(question, 1)) {
                sprintf(buf, "/bin/mv -f %s %s", new_filename, NSSCONF);
                system(buf);
        }
                sprintf(buf, "/bin/mv -f %s %s", new_filename, NSSCONF);
                system(buf);
        }