X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=textclient%2Fsrc%2Ftuiconfig.c;fp=textclient%2Fsrc%2Ftuiconfig.c;h=0000000000000000000000000000000000000000;hp=0f6d64a5912dd11fe6e67142a04209f59d7016f8;hb=2dfd5bee542a9d635e380097e63c307bd6c27d65;hpb=710ef6ae1c0c11e09bd35ee7f95fdee938e29c1b diff --git a/textclient/src/tuiconfig.c b/textclient/src/tuiconfig.c deleted file mode 100644 index 0f6d64a59..000000000 --- a/textclient/src/tuiconfig.c +++ /dev/null @@ -1,972 +0,0 @@ -/* - * Configuration screens that are part of the text mode client. - * - * Copyright (c) 1987-2018 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. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#include -#include -#include -#include -#include -#include "sysdep.h" -#include "citadel_ipc.h" -#include "citadel_decls.h" -#include "tuiconfig.h" -#include "messages.h" -#include "routines.h" -#include "commands.h" -#include "screen.h" - -/* work around solaris include files */ -#ifdef reg -#undef reg -#endif - -extern char temp[]; -extern char tempdir[]; -extern char *axdefs[8]; -extern long highest_msg_read; -extern long maxmsgnum; -extern unsigned room_flags; -extern int screenwidth; -char editor_path[PATH_MAX]; - - -/* - * General system configuration command - */ -void do_system_configuration(CtdlIPC *ipc) -{ - - /* NUM_CONFIGS is now defined in citadel.h */ - - char buf[256]; - char sc[NUM_CONFIGS][256]; - char *resp = NULL; - struct ExpirePolicy *site_expirepolicy = NULL; - struct ExpirePolicy *mbx_expirepolicy = NULL; - int a; - int logpages = 0; - int r; /* IPC response code */ - int server_configs = 0; - - /* Clear out the config buffers */ - memset(&sc[0][0], 0, sizeof(sc)); - - /* Fetch the current config */ - r = CtdlIPCGetSystemConfig(ipc, &resp, buf); - if (r / 100 == 1) { - server_configs = num_tokens(resp, '\n'); - for (a=0; aServInfo.supports_ldap) { - a = strlen(&sc[32][0]); - 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("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); - } - else { - strcpy(&sc[32][0], ""); - } - } - - /* Expiry settings */ - strprompt("Default user purge time (days)", &sc[16][0], 5); - strprompt("Default room purge time (days)", &sc[17][0], 5); - - /* Angels and demons dancing in my head... */ - do { - snprintf(buf, sizeof buf, "%d", site_expirepolicy->expire_mode); - strprompt("System default message expire policy (? for list)", - buf, 1); - if (buf[0] == '?') { - scr_printf("\n" - "1. Never automatically expire messages\n" - "2. Expire by message count\n" - "3. Expire by message age\n"); - } - } while ((buf[0] < '1') || (buf[0] > '3')); - site_expirepolicy->expire_mode = buf[0] - '0'; - - /* ...lunatics and monsters underneath my bed */ - if (site_expirepolicy->expire_mode == 2) { - snprintf(buf, sizeof buf, "%d", site_expirepolicy->expire_value); - strprompt("Keep how many messages online?", buf, 10); - site_expirepolicy->expire_value = atol(buf); - } - if (site_expirepolicy->expire_mode == 3) { - snprintf(buf, sizeof buf, "%d", site_expirepolicy->expire_value); - strprompt("Keep messages for how many days?", buf, 10); - site_expirepolicy->expire_value = atol(buf); - } - - /* Media messiahs preying on my fears... */ - do { - snprintf(buf, sizeof buf, "%d", mbx_expirepolicy->expire_mode); - strprompt("Mailbox default message expire policy (? for list)", - buf, 1); - if (buf[0] == '?') { - scr_printf("\n" - "0. Go with the system default\n" - "1. Never automatically expire messages\n" - "2. Expire by message count\n" - "3. Expire by message age\n"); - } - } while ((buf[0] < '0') || (buf[0] > '3')); - mbx_expirepolicy->expire_mode = buf[0] - '0'; - - /* ...Pop culture prophets playing in my ears */ - if (mbx_expirepolicy->expire_mode == 2) { - snprintf(buf, sizeof buf, "%d", mbx_expirepolicy->expire_value); - strprompt("Keep how many messages online?", buf, 10); - mbx_expirepolicy->expire_value = atol(buf); - } - if (mbx_expirepolicy->expire_mode == 3) { - snprintf(buf, sizeof buf, "%d", mbx_expirepolicy->expire_value); - strprompt("Keep messages for how many days?", buf, 10); - mbx_expirepolicy->expire_value = atol(buf); - } - - strprompt("How often to run network jobs (in seconds)", &sc[28][0], 5); - strprompt("Default frequency to run POP3 collection (in seconds)", &sc[64][0], 5); - strprompt("Fastest frequency to run POP3 collection (in seconds)", &sc[65][0], 5); - strprompt("Hour to run purges (0-23)", &sc[31][0], 2); - snprintf(sc[42], sizeof sc[42], "%d", (boolprompt( - "Enable full text search index (warning: resource intensive)", - atoi(&sc[42][0])))); - - snprintf(sc[46], sizeof sc[46], "%d", (boolprompt( - "Perform journaling of email messages", - atoi(&sc[46][0])))); - snprintf(sc[47], sizeof sc[47], "%d", (boolprompt( - "Perform journaling of non-email messages", - atoi(&sc[47][0])))); - if ( (atoi(&sc[46][0])) || (atoi(&sc[47][0])) ) { - strprompt("Email destination of journalized messages", - &sc[48][0], 127); - } - - /* 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; - if (strlen(sc[60]) > 0) yes_pager = 1; - yes_pager = boolprompt("Configure an external pager tool", yes_pager); - if (yes_pager) { - strprompt("External pager tool", &sc[60][0], 255); - } - else { - sc[60][0] = 0; - } - - /* Master user account */ - int yes_muacct = 0; - if (strlen(sc[58]) > 0) yes_muacct = 1; - yes_muacct = boolprompt("Enable a 'master user' account", yes_muacct); - if (yes_muacct) { - strprompt("Master user name", &sc[58][0], 31); - strprompt("Master user password", &sc[59][0], -31); - } - else { - strcpy(&sc[58][0], ""); - strcpy(&sc[59][0], "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); - } - - /* Save it */ - scr_printf("Save this configuration? "); - if (yesno()) { - r = 1; - for (a = 0; a < NUM_CONFIGS; a++) { - r += 1 + strlen(sc[a]); - } - resp = (char *)calloc(1, r); - if (!resp) { - scr_printf("Can't save config - out of memory!\n"); - logoff(ipc, 1); - } - for (a = 0; a < NUM_CONFIGS; a++) { - strcat(resp, sc[a]); - strcat(resp, "\n"); - } - r = CtdlIPCSetSystemConfig(ipc, resp, buf); - if (r / 100 != 4) { - scr_printf("%s\n", buf); - } - free(resp); - - r = CtdlIPCSetMessageExpirationPolicy(ipc, 2, site_expirepolicy, buf); - if (r / 100 != 2) { - scr_printf("%s\n", buf); - } - - r = CtdlIPCSetMessageExpirationPolicy(ipc, 3, mbx_expirepolicy, buf); - if (r / 100 != 2) { - scr_printf("%s\n", buf); - } - - } - if (site_expirepolicy) free(site_expirepolicy); - if (mbx_expirepolicy) free(mbx_expirepolicy); -} - - -/* - * support function for do_internet_configuration() - */ -void get_inet_rec_type(CtdlIPC *ipc, char *buf) { - int sel; - - 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> 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"); - return; - case 2: strcpy(buf, "smarthost"); - return; - case 3: strcpy(buf, "fallbackhost"); - return; - case 4: strcpy(buf, "spamassassin"); - return; - case 5: strcpy(buf, "rbl"); - return; - case 6: strcpy(buf, "masqdomain"); - return; - case 7: strcpy(buf, "clamav"); - return; - } -} - - -/* - * Internet mail configuration - */ -void do_internet_configuration(CtdlIPC *ipc) -{ - char buf[256]; - char *resp = NULL; - int num_recs = 0; - char **recs = NULL; - char ch; - int i, j; - int quitting = 0; - int modified = 0; - int r; - - r = CtdlIPCGetSystemConfigByType(ipc, INTERNETCFG, &resp, buf); - if (r / 100 == 1) { - 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); - recs[num_recs-1] = malloc(strlen(buf) + 1); - strcpy(recs[num_recs-1], buf); - } - } - if (resp) free(resp); - - do { - scr_printf("\n"); - color(BRIGHT_WHITE); - scr_printf("### Host or domain Record type \n"); - color(DIM_WHITE); - scr_printf("--- -------------------------------------------------- --------------------\n"); - for (i=0; idd|elete|ave|uit"); - switch(ch) { - case 'a': - newprompt("Enter host name: ", buf, 50); - striplt(buf); - if (!IsEmptyStr(buf)) { - ++num_recs; - if (num_recs == 1) { - recs = malloc(sizeof(char *)); - } - else { - recs = realloc(recs, (sizeof(char *)) * num_recs); - } - strcat(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; - free(recs[i]); - --num_recs; - for (j=i; j 0) { - do { - e_ex_code = 0; - b = ka_wait(&e_ex_code); - } while ((b != editor_pid) && (b >= 0)); - editor_pid = (-1); - stty_ctdl(0); - } - - if (file_checksum(filename) == cksum) { - scr_printf("*** No changes to save.\n"); - e_ex_code = 1; - } - - if (e_ex_code == 0) { /* Save changes */ - changefp = fopen(changefile, "w"); - - /* Load all netconfig entries that are *not* of the type we are editing */ - r = CtdlIPCGetRoomNetworkConfig(ipc, &listing, buf); - if (r / 100 == 1) { - while(listing && !IsEmptyStr(listing)) { - extract_token(buf, listing, 0, '\n', sizeof buf); - remove_token(listing, 0, '\n'); - extract_token(instr, buf, 0, '|', sizeof instr); - if (strcasecmp(instr, entrytype)) { - fprintf(changefp, "%s\n", buf); - } - } - } - if (listing) { - free(listing); - listing = NULL; - } - - /* ...and merge that with the data we just edited */ - tempfp = fopen(filename, "r"); - while (fgets(buf, sizeof buf, tempfp) != NULL) { - for (i=0; idd|elete|ave|uit"); - switch(ch) { - case 'a': - ++num_recs; - if (num_recs == 1) { - recs = malloc(sizeof(char *)); - } - else { - recs = realloc(recs, (sizeof(char *)) * num_recs); - } - strcpy(buf, "pop3client|"); - newprompt("Enter host name: ", &buf[strlen(buf)], 28); - strcat(buf, "|"); - newprompt("Enter user name: ", &buf[strlen(buf)], 28); - strcat(buf, "|"); - newprompt("Enter password : ", &buf[strlen(buf)], 16); - strcat(buf, "|"); - scr_printf("Keep messages on server instead of deleting them? "); - sprintf(&buf[strlen(buf)], "%d", yesno()); - strcat(buf, "|"); - recs[num_recs-1] = strdup(buf); - modified = 1; - break; - case 'd': - i = intprompt("Delete which one", - 1, 1, num_recs) - 1; - free(recs[i]); - --num_recs; - for (j=i; jdd|elete|ave|uit"); - switch(ch) { - case 'a': - ++num_recs; - if (num_recs == 1) { - recs = malloc(sizeof(char *)); - } - else { - recs = realloc(recs, (sizeof(char *)) * num_recs); - } - strcpy(buf, "rssclient|"); - newprompt("Enter feed URL: ", &buf[strlen(buf)], 75); - strcat(buf, "|"); - recs[num_recs-1] = strdup(buf); - modified = 1; - break; - case 'd': - i = intprompt("Delete which one", 1, 1, num_recs) - 1; - free(recs[i]); - --num_recs; - for (j=i; j