text client <.A>ide <S>ysconfig <I>nternet , when encountering a "directory" domain...
[citadel.git] / textclient / src / tuiconfig.c
index ed2b953c4a5ae2dca13d67e75d2ea650b1b80e3f..d89ab9ccf3c31baee83dd5ba24186d3550527032 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Configuration screens that are part of the text mode client.
  *
- * Copyright (c) 1987-2012 by the citadel.org team
+ * Copyright (c) 1987-2017 by the citadel.org team
  *
  * This program is open source software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 3.
 #include <stdarg.h>
 #include <libcitadel.h>
 #include "sysdep.h"
-///#include "citadel.h"
 #include "citadel_ipc.h"
 #include "citadel_decls.h"
 #include "tuiconfig.h"
 #include "messages.h"
 #include "routines.h"
 #include "commands.h"
-///#ifndef HAVE_SNPRINTF
-///#include "snprintf.h"
-///#endif
 #include "screen.h"
 
 /* work around solaris include files */
@@ -117,17 +113,11 @@ void do_system_configuration(CtdlIPC *ipc)
 
        /* Security parameters */
 
-       snprintf(sc[7], sizeof sc[7], "%d", (boolprompt(
-               "Require registration for new users",
-               atoi(&sc[7][0]))));
-       snprintf(sc[29], sizeof sc[29], "%d", (boolprompt(
-               "Disable self-service user account creation",
-               atoi(&sc[29][0]))));
+       snprintf(sc[7], sizeof sc[7], "%d", (boolprompt("Require registration for new users", atoi(&sc[7][0]))));
+       snprintf(sc[29], sizeof sc[29], "%d", (boolprompt("Disable self-service user account creation", atoi(&sc[29][0]))));
        strprompt("Initial access level for new users", &sc[6][0], 1);
        strprompt("Access level required to create rooms", &sc[19][0], 1);
-       snprintf(sc[67], sizeof sc[67], "%d", (boolprompt(
-               "Allow anonymous guest logins",
-               atoi(&sc[67][0]))));
+       snprintf(sc[67], sizeof sc[67], "%d", (boolprompt("Allow anonymous guest logins", atoi(&sc[67][0]))));
        snprintf(sc[4], sizeof sc[4], "%d", (boolprompt(
                "Automatically give room admin privs to a user who creates a private room",
                atoi(&sc[4][0]))));
@@ -185,6 +175,8 @@ void do_system_configuration(CtdlIPC *ipc)
        strprompt("SMTP MTA server port (-1 to disable)", &sc[24][0], 5);
        strprompt("SMTP MSA server port (-1 to disable)", &sc[38][0], 5);
        strprompt("SMTPS server port (-1 to disable)", &sc[41][0], 5);
+       strprompt("NNTP server port (-1 to disable)", &sc[70][0], 5);
+       strprompt("NNTPS server port (-1 to disable)", &sc[71][0], 5);
        strprompt("Postfix TCP Dictionary Port server port (-1 to disable)", &sc[50][0], 5);
        strprompt("ManageSieve server port (-1 to disable)", &sc[51][0], 5);
 
@@ -197,8 +189,7 @@ void do_system_configuration(CtdlIPC *ipc)
         */
        a = atoi(sc[25]);
        a = (a ? 0 : 1);
-       a = boolprompt("Correct forged From: lines during authenticated SMTP",
-               a);
+       a = boolprompt("Correct forged From: lines during authenticated SMTP", a);
        a = (a ? 0 : 1);
        snprintf(sc[25], sizeof sc[25], "%d", a);
 
@@ -221,9 +212,6 @@ void do_system_configuration(CtdlIPC *ipc)
        snprintf(sc[57], sizeof sc[57], "%d", (boolprompt(
                "Perform RBL checks at greeting instead of after RCPT",
                atoi(&sc[57][0]))));
-       snprintf(sc[44], sizeof sc[44], "%d", (boolprompt(
-               "Instantly expunge deleted IMAP messages",
-               atoi(&sc[44][0]))));
 
        /* LDAP settings */
        if (ipc->ServInfo.supports_ldap) {
@@ -231,10 +219,8 @@ void do_system_configuration(CtdlIPC *ipc)
                a = (a ? 1 : 0);        /* Set only to 1 or 0 */
                a = boolprompt("Do you want to configure LDAP authentication?", a);
                if (a) {
-                       strprompt("Host name of LDAP server",
-                               &sc[32][0], 127);
-                       strprompt("Port number of LDAP service",
-                               &sc[33][0], 5);
+                       strprompt("Host name of LDAP server", &sc[32][0], 127);
+                       strprompt("Port number of LDAP service", &sc[33][0], 5);
                        strprompt("Base DN", &sc[34][0], 255);
                        strprompt("Bind DN (or blank for anonymous bind)", &sc[35][0], 255);
                        strprompt("Password for bind DN (or blank for anonymous bind)", &sc[36][0], 255);
@@ -320,22 +306,11 @@ void do_system_configuration(CtdlIPC *ipc)
                        &sc[48][0], 127);
        }
 
-       /* Funambol push stuff */
-       int yes_funambol = 0;
-       if (strlen(sc[53]) > 0) yes_funambol = 1;
-       yes_funambol = boolprompt("Connect to an external Funambol sync server", yes_funambol);
-       if (yes_funambol) {
-               strprompt("Funambol server (blank to disable)", &sc[53][0], 63);
-               strprompt("Funambol server port", &sc[54][0], 5);
-               strprompt("Funambol sync source", &sc[55][0], 63);
-               strprompt("Funambol authentication details (user:pass in Base64)", &sc[56][0],63);
-       }
-       else {
-               sc[53][0] = 0;
-               sc[54][0] = 0;
-               sc[55][0] = 0;
-               sc[56][0] = 0;
-       }
+       /* No more Funambol */
+       sc[53][0] = 0;
+       sc[54][0] = 0;
+       sc[55][0] = 0;
+       sc[56][0] = 0;
 
        /* External pager stuff */
        int yes_pager = 0;
@@ -408,11 +383,10 @@ void get_inet_rec_type(CtdlIPC *ipc, char *buf) {
        keyopt(" <1> localhost      (Alias for this computer)\n");
        keyopt(" <2> smart host     (Forward all outbound mail to this host)\n");
        keyopt(" <3> fallback host  (Send mail to this host only if direct delivery fails)\n");
-       keyopt(" <4> directory      (Consult the Global Address Book)\n");
-       keyopt(" <5> SpamAssassin   (Address of SpamAssassin server)\n");
-       keyopt(" <6> RBL            (domain suffix of spam hunting RBL)\n");
-       keyopt(" <7> masq domains   (Domains as which users are allowed to masquerade)\n");
-       keyopt(" <8> ClamAV         (Address of ClamAV clamd server)\n");
+       keyopt(" <4> SpamAssassin   (Address of SpamAssassin server)\n");
+       keyopt(" <5> RBL            (domain suffix of spam hunting RBL)\n");
+       keyopt(" <6> masq domains   (Domains as which users are allowed to masquerade)\n");
+       keyopt(" <7> ClamAV         (Address of ClamAV clamd server)\n");
        sel = intprompt("Which one", 1, 1, 8);
        switch(sel) {
                case 1: strcpy(buf, "localhost");
@@ -421,15 +395,13 @@ void get_inet_rec_type(CtdlIPC *ipc, char *buf) {
                        return;
                case 3: strcpy(buf, "fallbackhost");
                        return;
-               case 4: strcpy(buf, "directory");
+               case 4: strcpy(buf, "spamassassin");
                        return;
-               case 5: strcpy(buf, "spamassassin");
+               case 5: strcpy(buf, "rbl");
                        return;
-               case 6: strcpy(buf, "rbl");
+               case 6: strcpy(buf, "masqdomain");
                        return;
-               case 7: strcpy(buf, "masqdomain");
-                       return;
-               case 8: strcpy(buf, "clamav");
+               case 7: strcpy(buf, "clamav");
                        return;
        }
 }
@@ -455,6 +427,13 @@ void do_internet_configuration(CtdlIPC *ipc)
                while (!IsEmptyStr(resp)) {
                        extract_token(buf, resp, 0, '\n', sizeof buf);
                        remove_token(resp, 0, '\n');
+
+                       // VILE SLEAZY HACK: replace obsolete "directory" domains with "localhost"
+                       char *d = strstr(buf, "|directory");
+                       if (d != NULL) {
+                               strcpy(d, "|localhost");
+                       }
+
                        ++num_recs;
                        if (num_recs == 1) recs = malloc(sizeof(char *));
                        else recs = realloc(recs, (sizeof(char *)) * num_recs);
@@ -485,29 +464,29 @@ void do_internet_configuration(CtdlIPC *ipc)
                ch = keymenu("", "<A>dd|<D>elete|<S>ave|<Q>uit");
                switch(ch) {
                        case 'a':
-                               newprompt("Enter host name: ",
-                                       buf, 50);
+                               newprompt("Enter host name: ", buf, 50);
                                striplt(buf);
                                if (!IsEmptyStr(buf)) {
                                        ++num_recs;
-                                       if (num_recs == 1)
+                                       if (num_recs == 1) {
                                                recs = malloc(sizeof(char *));
-                                       else recs = realloc(recs,
-                                               (sizeof(char *)) * num_recs);
+                                       }
+                                       else {
+                                               recs = realloc(recs, (sizeof(char *)) * num_recs);
+                                       }
                                        strcat(buf, "|");
-                                       get_inet_rec_type(ipc,
-                                                       &buf[strlen(buf)]);
+                                       get_inet_rec_type(ipc, &buf[strlen(buf)]);
                                        recs[num_recs-1] = strdup(buf);
                                }
                                modified = 1;
                                break;
                        case 'd':
-                               i = intprompt("Delete which one",
-                                       1, 1, num_recs) - 1;
+                               i = intprompt("Delete which one", 1, 1, num_recs) - 1;
                                free(recs[i]);
                                --num_recs;
-                               for (j=i; j<num_recs; ++j)
+                               for (j=i; j<num_recs; ++j) {
                                        recs[j] = recs[j+1];
+                               }
                                modified = 1;
                                break;
                        case 's':
@@ -569,8 +548,7 @@ void network_config_management(CtdlIPC *ipc, char *entrytype, char *comment)
        int r;
 
        if (IsEmptyStr(editor_path)) {
-               scr_printf("You must have an external editor configured in"
-                       " order to use this function.\n");
+               scr_printf("You must have an external editor configured in order to use this function.\n");
                return;
        }
 
@@ -989,14 +967,12 @@ void do_pop3client_configuration(CtdlIPC *ipc)
                        "      Remote POP3 host       "
                        "         User name           "
                        "Keep on server? "
-                       "Fetching inteval"
                        "\n");
                color(DIM_WHITE);
                scr_printf(     "--- "
                        "---------------------------- "
                        "---------------------------- "
                        "--------------- "
-                       "---------------- "
                        "\n");
                for (i=0; i<num_recs; ++i) {
                color(DIM_WHITE);
@@ -1011,9 +987,7 @@ void do_pop3client_configuration(CtdlIPC *ipc)
                scr_printf("%-28s ", buf);
 
                color(BRIGHT_CYAN);
-               scr_printf("%-15s ", (extract_int(recs[i], 4) ? "Yes" : "No") );
-               color(BRIGHT_MAGENTA);
-               scr_printf("%ld\n", extract_long(recs[i], 5) );
+               scr_printf("%-15s\n", (extract_int(recs[i], 4) ? "Yes" : "No") );
                color(DIM_WHITE);
                }
 
@@ -1037,8 +1011,6 @@ void do_pop3client_configuration(CtdlIPC *ipc)
                                scr_printf("Keep messages on server instead of deleting them? ");
                                sprintf(&buf[strlen(buf)], "%d", yesno());
                                strcat(buf, "|");
-                               newprompt("Enter interval : ", &buf[strlen(buf)], 5);
-                               strcat(buf, "|");
                                recs[num_recs-1] = strdup(buf);
                                modified = 1;
                                break;