siteconfig.c

00001 /*
00002  * $Id: siteconfig.c 5147 2007-05-08 15:36:22Z ajc $
00003  */
00009 
00010 #include "webcit.h"
00011 #include "webserver.h"
00012 
00016 void display_siteconfig(void)
00017 {
00018         char buf[SIZ];
00019         int i, j;
00020 
00021         char general[65536];
00022         char access[SIZ];
00023         char network[SIZ];
00024         char tuning[SIZ];
00025         char directory[SIZ];
00026         char purger[SIZ];
00027         char idxjnl[SIZ];
00028         char funambol[SIZ];
00030         int sitepolicy = 0;
00031         int sitevalue = 0;
00032         int mboxpolicy = 0;
00033         int mboxvalue = 0;
00034 
00035         output_headers(1, 1, 2, 0, 0, 0);
00036         wprintf("<div id=\"banner\">\n"
00037                 "<table class=\"siteconfig_banner\"><tr><td>"
00038                 "<span class=\"titlebar\">");
00039         wprintf(_("Site configuration"));
00040         wprintf("</span>"
00041                 "</td></tr></table>\n"
00042                 "</div>\n<div id=\"content\">\n"
00043         );
00044 
00045         serv_printf("CONF get");
00046         serv_getln(buf, sizeof buf);
00047         if (buf[0] != '1') {
00048                 wprintf("<table class=\"siteconfig_banner\"><tr><td>");
00049                 wprintf("<span class=\"titlebar\">");
00050                 wprintf(_("Error"));
00051                 wprintf("</span>\n");
00052                 wprintf("</td></tr></table><br />\n");
00053                 wprintf("%s<br />\n", &buf[4]);
00054                 wDumpContent(1);
00055                 return;
00056         }
00057 
00058         wprintf("<div class=\"fix_scrollbar_bug\">"
00059                 "<table class=\"siteconfig_background\"><tr><td>");
00060 
00061         char *tabnames[] = {
00062                 _("General"),
00063                 _("Access"),
00064                 _("Network"),
00065                 _("Tuning"),
00066                 _("Directory"),
00067                 _("Auto-purger"),
00068                 _("Indexing/Journaling"),
00069                 _("Push Email")
00070         };
00071 
00072         sprintf(general, "<center><h1>%s</h1><table border=\"0\">",
00073                         _("General site configuration items")
00074         );
00075 
00076         sprintf(access, "<center><h1>%s</h1><table border=\"0\">",
00077                         _("Access controls and site policy settings")
00078         );
00079 
00080         sprintf(network, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
00081                         _("Network services"),
00082                         _("Changes made on this screen will not take effect "
00083                         "until you restart the Citadel server.")
00084         );
00085 
00086         sprintf(tuning, "<center><h1>%s</h1><table border=\"0\">",
00087                         _("Advanced server fine-tuning controls")
00088         );
00089 
00090         sprintf(directory, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
00091                         _("Configure the LDAP connector for Citadel"),
00092                         (serv_info.serv_supports_ldap
00093                         ?       _("Changes made on this screen will not take effect "
00094                                 "until you restart the Citadel server.")
00095                         :       _("NOTE: This Citadel server has been built without "
00096                                 "LDAP support.  These options will have no effect.")
00097                         )
00098         );
00099 
00100         sprintf(purger, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
00101                         _("Configure automatic expiry of old messages"),
00102                         _("These settings may be overridden on a per-floor or per-room basis.")
00103         );
00104 
00105         sprintf(idxjnl, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
00106                         _("Indexing and Journaling"),
00107                         _("Warning: these facilities are resource intensive.")
00108         );
00109         sprintf(funambol, "<center><h1>%s</h1><table border=\"0\">",
00110                 _("Push Email")
00111                 );
00112 
00113         wprintf("<form method=\"post\" action=\"siteconfig\">\n");
00114 
00115         i = 0;
00116         while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00117                 switch (i++) {
00118                 case 0:
00119                         sprintf(&general[strlen(general)], "<tr><td>");
00120                         sprintf(&general[strlen(general)], _("Node name"));
00121                         sprintf(&general[strlen(general)], "</td><td>");
00122                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_nodename\" maxlength=\"15\" value=\"%s\">", buf);
00123                         sprintf(&general[strlen(general)], "</td></tr>\n");
00124                         break;
00125                 case 1:
00126                         sprintf(&general[strlen(general)], "<tr><td>");
00127                         sprintf(&general[strlen(general)], _("Fully qualified domain name"));
00128                         sprintf(&general[strlen(general)], "</td><td>");
00129                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_fqdn\" maxlength=\"63\" value=\"%s\">", buf);
00130                         sprintf(&general[strlen(general)], "</td></tr>\n");
00131                         break;
00132                 case 2:
00133                         sprintf(&general[strlen(general)], "<tr><td>");
00134                         sprintf(&general[strlen(general)], _("Human-readable node name"));
00135                         sprintf(&general[strlen(general)], "</td><td>");
00136                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_humannode\" maxlength=\"20\" value=\"%s\">", buf);
00137                         sprintf(&general[strlen(general)], "</td></tr>\n");
00138                         break;
00139                 case 3:
00140                         sprintf(&general[strlen(general)], "<tr><td>");
00141                         sprintf(&general[strlen(general)], _("Telephone number"));
00142                         sprintf(&general[strlen(general)], "</td><td>");
00143                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_phonenum\" maxlength=\"15\" value=\"%s\">", buf);
00144                         sprintf(&general[strlen(general)], "</td></tr>\n");
00145                         break;
00146                 case 4:
00147                         sprintf(&access[strlen(access)], "<tr><td>");
00148                         sprintf(&access[strlen(access)], _("Automatically grant room-aide status to users who create private rooms"));
00149                         sprintf(&access[strlen(access)], "</td><td>");
00150                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_creataide\" value=\"yes\" %s>",
00151                                 ((atoi(buf) != 0) ? "checked" : ""));
00152                         sprintf(&access[strlen(access)], "</td></tr>\n");
00153                         break;
00154                 case 5:
00155                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00156                         sprintf(&tuning[strlen(tuning)], _("Server connection idle timeout (in seconds)"));
00157                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00158                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_sleeping\" maxlength=\"15\" value=\"%s\">", buf);
00159                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00160                         break;
00161                 case 6:
00162                         sprintf(&access[strlen(access)], "<tr><td>");
00163                         sprintf(&access[strlen(access)], _("Initial access level for new users"));
00164                         sprintf(&access[strlen(access)], "</td><td>");
00165                         sprintf(&access[strlen(access)], "<select name=\"c_initax\" size=\"1\">\n");
00166                         for (j=0; j<=6; ++j) {
00167                                 sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
00168                                         ((atoi(buf) == j) ? "selected" : ""),
00169                                         j, j, axdefs[j]
00170                                 );
00171                         }
00172                         sprintf(&access[strlen(access)], "</select>");
00173                         sprintf(&access[strlen(access)], "</td></tr>\n");
00174                         break;
00175                 case 7:
00176                         sprintf(&access[strlen(access)], "<tr><td>");
00177                         sprintf(&access[strlen(access)], _("Require registration for new users"));
00178                         sprintf(&access[strlen(access)], "</td><td>");
00179                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_regiscall\" value=\"yes\" %s>",
00180                                 ((atoi(buf) != 0) ? "checked" : ""));
00181                         sprintf(&access[strlen(access)], "</td></tr>\n");
00182                         break;
00183                 case 8:
00184                         sprintf(&access[strlen(access)], "<tr><td>");
00185                         sprintf(&access[strlen(access)], _("Quarantine messages from problem users"));
00186                         sprintf(&access[strlen(access)], "</td><td>");
00187                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_twitdetect\" value=\"yes\" %s>",
00188                                 ((atoi(buf) != 0) ? "checked" : ""));
00189                         sprintf(&access[strlen(access)], "</td></tr>\n");
00190                         break;
00191                 case 9:
00192                         sprintf(&access[strlen(access)], "<tr><td>");
00193                         sprintf(&access[strlen(access)], _("Name of quarantine room"));
00194                         sprintf(&access[strlen(access)], "</td><td>");
00195                         sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_twitroom\" maxlength=\"63\" value=\"%s\">", buf);
00196                         sprintf(&access[strlen(access)], "</td></tr>\n");
00197                         break;
00198                 case 10:
00199                         sprintf(&general[strlen(general)], "<tr><td>");
00200                         sprintf(&general[strlen(general)], _("Paginator prompt (for text mode clients)"));
00201                         sprintf(&general[strlen(general)], "</td><td>");
00202                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_moreprompt\" maxlength=\"79\" value=\"%s\">", buf);
00203                         sprintf(&general[strlen(general)], "</td></tr>\n");
00204                         break;
00205                 case 11:
00206                         sprintf(&access[strlen(access)], "<tr><td>");
00207                         sprintf(&access[strlen(access)], _("Restrict access to Internet mail"));
00208                         sprintf(&access[strlen(access)], "</td><td>");
00209                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_restrict\" value=\"yes\" %s>",
00210                                 ((atoi(buf) != 0) ? "checked" : ""));
00211                         sprintf(&access[strlen(access)], "</td></tr>\n");
00212                         break;
00213                 case 12:
00214                         sprintf(&general[strlen(general)], "<tr><td>");
00215                         sprintf(&general[strlen(general)], _("Geographic location of this system"));
00216                         sprintf(&general[strlen(general)], "</td><td>");
00217                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_bbs_city\" maxlength=\"31\" value=\"%s\">", buf);
00218                         sprintf(&general[strlen(general)], "</td></tr>\n");
00219                         break;
00220                 case 13:
00221                         sprintf(&general[strlen(general)], "<tr><td>");
00222                         sprintf(&general[strlen(general)], _("Name of system administrator"));
00223                         sprintf(&general[strlen(general)], "</td><td>");
00224                         sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
00225                         sprintf(&general[strlen(general)], "</td></tr>\n");
00226                         break;
00227                 case 14:
00228                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00229                         sprintf(&tuning[strlen(tuning)], _("Maximum concurrent sessions (0 = no limit)"));
00230                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00231                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxsessions\" maxlength=\"5\" value=\"%s\">", buf);
00232                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00233                         break;
00234                 case 16:
00235                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00236                         sprintf(&tuning[strlen(tuning)], _("Default user purge time (days)"));
00237                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00238                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_userpurge\" maxlength=\"5\" value=\"%s\">", buf);
00239                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00240                         break;
00241                 case 17:
00242                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00243                         sprintf(&tuning[strlen(tuning)], _("Default room purge time (days)"));
00244                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00245                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_roompurge\" maxlength=\"5\" value=\"%s\">", buf);
00246                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00247                         break;
00248                 case 18:
00249                         sprintf(&access[strlen(access)], "<tr><td>");
00250                         sprintf(&access[strlen(access)], _("Name of room to log pages"));
00251                         sprintf(&access[strlen(access)], "</td><td>");
00252                         sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_logpages\" maxlength=\"63\" value=\"%s\">", buf);
00253                         sprintf(&access[strlen(access)], "</td></tr>\n");
00254                         break;
00255                 case 19:
00256                         sprintf(&access[strlen(access)], "<tr><td>");
00257                         sprintf(&access[strlen(access)], _("Access level required to create rooms"));
00258                         sprintf(&access[strlen(access)], "</td><td>");
00259                         sprintf(&access[strlen(access)], "<select name=\"c_createax\" size=\"1\">\n");
00260                         for (j=0; j<=6; ++j) {
00261                                 sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
00262                                         ((atoi(buf) == j) ? "selected" : ""),
00263                                         j, j, axdefs[j]
00264                                 );
00265                         }
00266                         sprintf(&access[strlen(access)], "</select>");
00267                         sprintf(&access[strlen(access)], "</td></tr>\n");
00268                         break;
00269                 case 20:
00270                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00271                         sprintf(&tuning[strlen(tuning)], _("Maximum message length"));
00272                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00273                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxmsglen\" maxlength=\"20\" value=\"%s\">", buf);
00274                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00275                         break;
00276                 case 21:
00277                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00278                         sprintf(&tuning[strlen(tuning)], _("Minimum number of worker threads"));
00279                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00280                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_min_workers\" maxlength=\"5\" value=\"%s\">", buf);
00281                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00282                         break;
00283                 case 22:
00284                         sprintf(&tuning[strlen(tuning)], "<tr><td>");
00285                         sprintf(&tuning[strlen(tuning)], _("Maximum number of worker threads"));
00286                         sprintf(&tuning[strlen(tuning)], "</td><td>");
00287                         sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_max_workers\" maxlength=\"5\" value=\"%s\">", buf);
00288                         sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
00289                         break;
00290                 case 23:
00291                         sprintf(&network[strlen(network)], "<tr><td>");
00292                         sprintf(&network[strlen(network)], _("POP3 listener port (-1 to disable)"));
00293                         sprintf(&network[strlen(network)], "</td><td>");
00294                         sprintf(&network[strlen(network)], "<input type=\"text\" name=\"c_pop3_port\" maxlength=\"5\" value=\"%s\">", buf);
00295                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00296                         break;
00297                 case 24:
00298                         sprintf(&network[strlen(network)], "<TR><TD>");
00299                         sprintf(&network[strlen(network)], _("SMTP MTA port (-1 to disable)"));
00300                         sprintf(&network[strlen(network)], "</TD><TD>");
00301                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtp_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00302                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00303                         break;
00304                 case 25:        /* note: reverse bool */
00305                         sprintf(&network[strlen(network)], "<TR><TD>");
00306                         sprintf(&network[strlen(network)], _("Correct forged From: lines during authenticated SMTP"));
00307                         sprintf(&network[strlen(network)], "</TD><TD>");
00308                         sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_rfc822_strict_from\" VALUE=\"yes\" %s>",
00309                                 ((atoi(buf) == 0) ? "CHECKED" : ""));
00310                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00311                         break;
00312                 case 26:
00313                         sprintf(&access[strlen(access)], "<TR><TD>");
00314                         sprintf(&access[strlen(access)], _("Allow aides to zap (forget) rooms"));
00315                         sprintf(&access[strlen(access)], "</TD><TD>");
00316                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_aide_zap\" VALUE=\"yes\" %s>",
00317                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00318                         sprintf(&access[strlen(access)], "</TD></TR>\n");
00319                         break;
00320                 case 27:
00321                         sprintf(&network[strlen(network)], "<TR><TD>");
00322                         sprintf(&network[strlen(network)], _("IMAP listener port (-1 to disable)"));
00323                         sprintf(&network[strlen(network)], "</TD><TD>");
00324                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imap_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00325                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00326                         break;
00327                 case 28:
00328                         sprintf(&network[strlen(network)], "<TR><TD>");
00329                         sprintf(&network[strlen(network)], _("Network run frequency (in seconds)"));
00330                         sprintf(&network[strlen(network)], "</TD><TD>");
00331                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_net_freq\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00332                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00333                         break;
00334                 case 29:
00335                         sprintf(&access[strlen(access)], "<TR><TD>");
00336                         sprintf(&access[strlen(access)], _("Disable self-service user account creation"));
00337                         sprintf(&access[strlen(access)], "</TD><TD>");
00338                         sprintf(&access[strlen(access)], "<input type=\"checkbox\" NAME=\"c_disable_newu\" VALUE=\"yes\" %s>",
00339                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00340                         sprintf(&access[strlen(access)], "</TD></TR>\n");
00341                         break;
00342                 case 31:
00343                         sprintf(&purger[strlen(purger)], "<TR><TD>");
00344                         sprintf(&purger[strlen(purger)], _("Hour to run database auto-purge"));
00345                         sprintf(&purger[strlen(purger)], "</TD><TD>");
00346                         sprintf(&purger[strlen(purger)], "<SELECT NAME=\"c_purge_hour\" SIZE=\"1\">\n");
00347                         for (j=0; j<=23; ++j) {
00348                                 sprintf(&purger[strlen(purger)], "<OPTION %s VALUE=\"%d\">%d:00%s</OPTION>\n",
00349                                         ((atoi(buf) == j) ? "SELECTED" : ""),
00350                                         j,
00351                                         ((j == 0) ? 12 : ((j>12) ? j-12 : j)),
00352                                         ((j >= 12) ? "pm" : "am")
00353                                 );
00354                         }
00355                         sprintf(&purger[strlen(purger)], "</SELECT>");
00356                         sprintf(&purger[strlen(purger)], "</TD></TR>\n");
00357                         break;
00358                 case 32:
00359                         sprintf(&directory[strlen(directory)], "<TR><TD>");
00360                         sprintf(&directory[strlen(directory)], _("Host name of LDAP server (blank to disable)"));
00361                         sprintf(&directory[strlen(directory)], "</TD><TD>");
00362                         sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_host\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
00363                         sprintf(&directory[strlen(directory)], "</TD></TR>\n");
00364                         break;
00365                 case 33:
00366                         sprintf(&directory[strlen(directory)], "<TR><TD>");
00367                         sprintf(&directory[strlen(directory)], _("Port number of LDAP server (blank to disable)"));
00368                         sprintf(&directory[strlen(directory)], "</TD><TD>");
00369                         sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_port\" MAXLENGTH=\"127\" VALUE=\"%d\">", atoi(buf));
00370                         sprintf(&directory[strlen(directory)], "</TD></TR>\n");
00371                         break;
00372                 case 34:
00373                         sprintf(&directory[strlen(directory)], "<TR><TD>");
00374                         sprintf(&directory[strlen(directory)], _("Base DN"));
00375                         sprintf(&directory[strlen(directory)], "</TD><TD>");
00376                         sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_base_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
00377                         sprintf(&directory[strlen(directory)], "</TD></TR>\n");
00378                         break;
00379                 case 35:
00380                         sprintf(&directory[strlen(directory)], "<TR><TD>");
00381                         sprintf(&directory[strlen(directory)], _("Bind DN"));
00382                         sprintf(&directory[strlen(directory)], "</TD><TD>");
00383                         sprintf(&directory[strlen(directory)], "<input type=\"text\" NAME=\"c_ldap_bind_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
00384                         sprintf(&directory[strlen(directory)], "</TD></TR>\n");
00385                         break;
00386                 case 36:
00387                         sprintf(&directory[strlen(directory)], "<TR><TD>");
00388                         sprintf(&directory[strlen(directory)], _("Password for bind DN"));
00389                         sprintf(&directory[strlen(directory)], "</TD><TD>");
00390                         sprintf(&directory[strlen(directory)], "<input type=\"password\" NAME=\"c_ldap_bind_pw\" MAXLENGTH=\"255\" VALUE=\"%s\">",
00391                                 buf);
00392                         sprintf(&directory[strlen(directory)], "</TD></TR>\n");
00393                         break;
00394                 case 37:
00395                         sprintf(&network[strlen(network)], "<TR><TD>");
00396                         sprintf(&network[strlen(network)], _("Server IP address (0.0.0.0 for 'any')"));
00397                         sprintf(&network[strlen(network)], "</TD><TD>");
00398                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_ip_addr\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
00399                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00400                         break;
00401                 case 38:
00402                         sprintf(&network[strlen(network)], "<TR><TD>");
00403                         sprintf(&network[strlen(network)], _("SMTP MSA port (-1 to disable)"));
00404                         sprintf(&network[strlen(network)], "</TD><TD>");
00405                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_msa_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00406                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00407                         break;
00408                 case 39:
00409                         sprintf(&network[strlen(network)], "<TR><TD>");
00410                         sprintf(&network[strlen(network)], _("IMAP over SSL port (-1 to disable)"));
00411                         sprintf(&network[strlen(network)], "</TD><TD>");
00412                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_imaps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00413                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00414                         break;
00415                 case 40:
00416                         sprintf(&network[strlen(network)], "<TR><TD>");
00417                         sprintf(&network[strlen(network)], _("POP3 over SSL port (-1 to disable)"));
00418                         sprintf(&network[strlen(network)], "</TD><TD>");
00419                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_pop3s_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00420                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00421                         break;
00422                 case 41:
00423                         sprintf(&network[strlen(network)], "<TR><TD>");
00424                         sprintf(&network[strlen(network)], _("SMTP over SSL port (-1 to disable)"));
00425                         sprintf(&network[strlen(network)], "</TD><TD>");
00426                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_smtps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00427                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00428                         break;
00429                 case 42:
00430                                 sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
00431                                 sprintf(&idxjnl[strlen(idxjnl)], _("Enable full text index"));
00432                                 sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
00433                                 sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_enable_fulltext\" VALUE=\"yes\" %s>",
00434                                         ((atoi(buf) != 0) ? "CHECKED" : ""));
00435                                 sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
00436                         break;
00437                 case 43:
00438                         sprintf(&tuning[strlen(tuning)], "<TR><TD>");
00439                         sprintf(&tuning[strlen(tuning)], _("Automatically delete committed database logs"));
00440                         sprintf(&tuning[strlen(tuning)], "</TD><TD>");
00441                         sprintf(&tuning[strlen(tuning)], "<input type=\"checkbox\" NAME=\"c_auto_cull\" VALUE=\"yes\" %s>",
00442                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00443                         sprintf(&tuning[strlen(tuning)], "</TD></TR>\n");
00444                         break;
00445                 case 44:
00446                         sprintf(&network[strlen(network)], "<TR><TD>");
00447                         sprintf(&network[strlen(network)], _("Instantly expunge deleted messages in IMAP"));
00448                         sprintf(&network[strlen(network)], "</TD><TD>");
00449                         sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_instant_expunge\" VALUE=\"yes\" %s>",
00450                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00451                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00452                         break;
00453                 case 45:
00454                         sprintf(&network[strlen(network)], "<TR><TD>");
00455                         sprintf(&network[strlen(network)], _("Allow unauthenticated SMTP clients to spoof this site's domains"));
00456                         sprintf(&network[strlen(network)], "</TD><TD>");
00457                         sprintf(&network[strlen(network)], "<input type=\"checkbox\" NAME=\"c_allow_spoofing\" VALUE=\"yes\" %s>",
00458                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00459                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00460                         break;
00461                 case 46:
00462                         sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
00463                         sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of email messages"));
00464                         sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
00465                         sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_email\" VALUE=\"yes\" %s>",
00466                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00467                         sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
00468                         break;
00469                 case 47:
00470                         sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
00471                         sprintf(&idxjnl[strlen(idxjnl)], _("Perform journaling of non-email messages"));
00472                         sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
00473                         sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"checkbox\" NAME=\"c_journal_pubmsgs\" VALUE=\"yes\" %s>",
00474                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00475                         sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
00476                         break;
00477                 case 48:
00478                         sprintf(&idxjnl[strlen(idxjnl)], "<TR><TD>");
00479                         sprintf(&idxjnl[strlen(idxjnl)], _("Email destination of journalized messages"));
00480                         sprintf(&idxjnl[strlen(idxjnl)], "</TD><TD>");
00481                         sprintf(&idxjnl[strlen(idxjnl)], "<input type=\"text\" NAME=\"c_journal_dest\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
00482                         sprintf(&idxjnl[strlen(idxjnl)], "</TD></TR>\n");
00483                         break;
00484                 case 49:
00485                         if (strlen(buf) == 0) {
00486                                 strcpy(buf, "UTC");
00487                         }
00488 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
00489                         sprintf(&general[strlen(general)], "<TR><TD>");
00490                         sprintf(&general[strlen(general)], _("Default timezone for unzoned calendar items"));
00491                         sprintf(&general[strlen(general)], "</TD><TD>");
00492                         sprintf(&general[strlen(general)], "<select name=\"c_default_cal_zone\" size=\"1\">\n");
00493 
00494                         sprintf(&general[strlen(general)], "<option %s value=\"UTC\">UTC</option>\n",
00495                                 (!strcasecmp(buf, "UTC") ? "selected" : "")
00496                         );
00497 
00498                         icalarray *zones;
00499                         int z;
00500                         char this_zone[128];
00501                         zones = icaltimezone_get_builtin_timezones();
00502                         for (z = 0; z < zones->num_elements; ++z) {
00503                                 strcpy(this_zone, icaltimezone_get_location(icalarray_element_at(zones, z)));
00504                                 sprintf(&general[strlen(general)], "<option %s value=\"%s\">%s</option>\n",
00505                                         (!strcasecmp(this_zone, buf) ? "selected" : ""),
00506                                         this_zone, this_zone
00507                                 );
00508                         }
00509 
00510                         sprintf(&general[strlen(general)], "</select>");
00511                         sprintf(&general[strlen(general)], "</TD></TR>\n");
00512 #else /* WEBCIT_WITH_CALENDAR_SERVICE */
00513                         wprintf("<input type=\"hidden\" name=\"c_default_cal_zone\" value=\"%s\">\n", buf);
00514 #endif /* WEBCIT_WITH_CALENDAR_SERVICE */
00515                         break;
00516                 case 50:
00517                         sprintf(&network[strlen(network)], "<TR><TD>");
00518                         sprintf(&network[strlen(network)], _("<a href=\"http://www.postfix.org/tcp_table.5.html\">Postfix TCP Dictionary Port </a> (-1 to disable)"));
00519                         sprintf(&network[strlen(network)], "</TD><TD>");
00520                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_pftcpdict_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00521                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00522                         break;
00523                 case 51:
00524                         sprintf(&network[strlen(network)], "<TR><TD>");
00525                         sprintf(&network[strlen(network)], _("ManageSieve Port (-1 to disable)"));
00526                         sprintf(&network[strlen(network)], "</TD><TD>");
00527                         sprintf(&network[strlen(network)], "<input type=\"text\" NAME=\"c_mgesve_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00528                         sprintf(&network[strlen(network)], "</TD></TR>\n");
00529                         break;
00530                 case 52:
00531                         sprintf(&access[strlen(access)], "<TR><TD>");
00532                         sprintf(&access[strlen(access)], _("Enable host based authentication mode"));
00533                         sprintf(&access[strlen(access)], "</TD><TD><input type=\"checkbox\" NAME=\"c_auth_mode\" VALUE=\"yes\" DISABLED %s>",
00534                                 ((atoi(buf) != 0) ? "CHECKED" : ""));
00535                         sprintf(&access[strlen(access)], "</TD></TR>\n");
00536                         break;
00537                 case 53:
00538                         sprintf(&funambol[strlen(funambol)], "<TR><TD>");
00539                         sprintf(&funambol[strlen(funambol)], _("Funambol server host (blank to disable)"));
00540                         sprintf(&funambol[strlen(funambol)], "</TD><TD>");
00541                         sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_host\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
00542                         sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
00543                         break;
00544                 case 54:
00545                         sprintf(&funambol[strlen(funambol)], "<TR><TD>");
00546                         sprintf(&funambol[strlen(funambol)], _("Funambol server port "));
00547                         sprintf(&funambol[strlen(funambol)], "</TD><TD>");
00548                         sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
00549                         sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
00550                         break;
00551                 case 55:
00552                         sprintf(&funambol[strlen(funambol)], "<TR><TD>");
00553                         sprintf(&funambol[strlen(funambol)], _("Funambol sync source"));
00554                         sprintf(&funambol[strlen(funambol)], "</TD><TD>");
00555                         sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_source\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
00556                         sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
00557                         break;
00558                 case 56:
00559                         sprintf(&funambol[strlen(funambol)], "<TR><TD>");
00560                         sprintf(&funambol[strlen(funambol)], _("Funambol auth details (user:pass in Base64)"));
00561                         sprintf(&funambol[strlen(funambol)], "</TD><TD>");
00562                         sprintf(&funambol[strlen(funambol)], "<input type=\"text\" NAME=\"c_funambol_auth\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
00563                         sprintf(&funambol[strlen(funambol)], "</TD></TR>\n");
00564                         break;
00565                 }
00566         
00567         }
00568 
00569         serv_puts("GPEX site");
00570         serv_getln(buf, sizeof buf);
00571         if (buf[0] == '2') {
00572                 sitepolicy = extract_int(&buf[4], 0);
00573                 sitevalue = extract_int(&buf[4], 1);
00574         }
00575 
00576         serv_puts("GPEX mailboxes");
00577         serv_getln(buf, sizeof buf);
00578         if (buf[0] == '2') {
00579                 mboxpolicy = extract_int(&buf[4], 0);
00580                 mboxvalue = extract_int(&buf[4], 1);
00581         }
00582 
00583 
00584         sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
00585 
00586         sprintf(&purger[strlen(purger)], "<TR><TD>");
00587         sprintf(&purger[strlen(purger)], _("Default message expire policy for public rooms"));
00588         sprintf(&purger[strlen(purger)], "</TD><TD>");
00589         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"1\" %s>",
00590                 ((sitepolicy == 1) ? "CHECKED" : "") );
00591         sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
00592         sprintf(&purger[strlen(purger)], "<br />\n");
00593         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"2\" %s>",
00594                 ((sitepolicy == 2) ? "CHECKED" : "") );
00595         sprintf(&purger[strlen(purger)], _("Expire by message count"));
00596         sprintf(&purger[strlen(purger)], "<br />\n");
00597         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"3\" %s>",
00598                 ((sitepolicy == 3) ? "CHECKED" : "") );
00599         sprintf(&purger[strlen(purger)], _("Expire by message age"));
00600         sprintf(&purger[strlen(purger)], "<br />");
00601         sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
00602         sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"sitevalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", sitevalue);
00603         sprintf(&purger[strlen(purger)], "</TD></TR>\n");
00604 
00605         sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
00606 
00607         sprintf(&purger[strlen(purger)], "<TR><TD>");
00608         sprintf(&purger[strlen(purger)], _("Default message expire policy for private mailboxes"));
00609         sprintf(&purger[strlen(purger)], "</TD><TD>");
00610         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"0\" %s>",
00611                 ((mboxpolicy == 0) ? "CHECKED" : "") );
00612         sprintf(&purger[strlen(purger)], _("Same policy as public rooms"));
00613         sprintf(&purger[strlen(purger)], "<br />\n");
00614         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"1\" %s>",
00615                         ((mboxpolicy == 1) ? "CHECKED" : "") );
00616         sprintf(&purger[strlen(purger)], _("Never automatically expire messages"));
00617         sprintf(&purger[strlen(purger)], "<br />\n");
00618         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"2\" %s>",
00619                 ((mboxpolicy == 2) ? "CHECKED" : "") );
00620         sprintf(&purger[strlen(purger)], _("Expire by message count"));
00621         sprintf(&purger[strlen(purger)], "<br />\n");
00622         sprintf(&purger[strlen(purger)], "<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"3\" %s>",
00623                 ((mboxpolicy == 3) ? "CHECKED" : "") );
00624         sprintf(&purger[strlen(purger)], _("Expire by message age"));
00625         sprintf(&purger[strlen(purger)], "<br />");
00626         sprintf(&purger[strlen(purger)], _("Number of messages or days: "));
00627         sprintf(&purger[strlen(purger)], "<input type=\"text\" NAME=\"mboxvalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", mboxvalue);
00628         sprintf(&purger[strlen(purger)], "</TD></TR>\n");
00629 
00630         sprintf(&purger[strlen(purger)], "<TR><TD COLSPAN=2><hr /></TD></TR>\n");
00631 
00632 
00633         sprintf(&general[strlen(general)], "</table>");
00634         sprintf(&access[strlen(access)], "</table>");
00635         sprintf(&network[strlen(network)], "</table>");
00636         sprintf(&tuning[strlen(tuning)], "</table>");
00637         sprintf(&directory[strlen(directory)], "</table>");
00638         sprintf(&purger[strlen(purger)], "</table>");
00639         sprintf(&idxjnl[strlen(idxjnl)], "</table>");
00640         sprintf(&funambol[strlen(funambol)], "</table>");
00641 
00642         tabbed_dialog(8, tabnames);
00643 
00644         begin_tab(0, 8);        client_write(general, strlen(general));          end_tab(0, 8);
00645         begin_tab(1, 8);        client_write(access, strlen(access));            end_tab(1, 8);
00646         begin_tab(2, 8);        client_write(network, strlen(network));          end_tab(2, 8);
00647         begin_tab(3, 8);        client_write(tuning, strlen(tuning));            end_tab(3, 8);
00648         begin_tab(4, 8);        client_write(directory, strlen(directory));      end_tab(4, 8);
00649         begin_tab(5, 8);        client_write(purger, strlen(purger));            end_tab(5, 8);
00650         begin_tab(6, 8);        client_write(idxjnl, strlen(idxjnl));            end_tab(6, 8);
00651         begin_tab(7, 8);        client_write(funambol, strlen(funambol));        end_tab(7, 8);
00652         wprintf("<div align=\"center\"><br>");
00653         wprintf("<input type=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Save changes"));
00654         wprintf("&nbsp;");
00655         wprintf("<input type=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">\n", _("Cancel"));
00656         wprintf("</div></FORM>\n");
00657         wprintf("</td></tr></table></div>\n");
00658         wDumpContent(1);
00659 }
00660 
00664 void siteconfig(void)
00665 {
00666         char buf[256];
00667 
00668         if (strlen(bstr("ok_button")) == 0) {
00669                 display_aide_menu();
00670                 return;
00671         }
00672         serv_printf("CONF set");
00673         serv_getln(buf, sizeof buf);
00674         if (buf[0] != '4') {
00675                 safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage);
00676                 display_aide_menu();
00677                 return;
00678         }
00679         serv_printf("%s", bstr("c_nodename"));
00680         serv_printf("%s", bstr("c_fqdn"));
00681         serv_printf("%s", bstr("c_humannode"));
00682         serv_printf("%s", bstr("c_phonenum"));
00683         serv_printf("%s", ((!strcasecmp(bstr("c_creataide"), "yes") ? "1" : "0")));
00684         serv_printf("%s", bstr("c_sleeping"));
00685         serv_printf("%s", bstr("c_initax"));
00686         serv_printf("%s", ((!strcasecmp(bstr("c_regiscall"), "yes") ? "1" : "0")));
00687         serv_printf("%s", ((!strcasecmp(bstr("c_twitdetect"), "yes") ? "1" : "0")));
00688         serv_printf("%s", bstr("c_twitroom"));
00689         serv_printf("%s", bstr("c_moreprompt"));
00690         serv_printf("%s", ((!strcasecmp(bstr("c_restrict"), "yes") ? "1" : "0")));
00691         serv_printf("%s", bstr("c_bbs_city"));
00692         serv_printf("%s", bstr("c_sysadm"));
00693         serv_printf("%s", bstr("c_maxsessions"));
00694         serv_printf("");  /* placeholder - this field is not in use */
00695         serv_printf("%s", bstr("c_userpurge"));
00696         serv_printf("%s", bstr("c_roompurge"));
00697         serv_printf("%s", bstr("c_logpages"));
00698         serv_printf("%s", bstr("c_createax"));
00699         serv_printf("%s", bstr("c_maxmsglen"));
00700         serv_printf("%s", bstr("c_min_workers"));
00701         serv_printf("%s", bstr("c_max_workers"));
00702         serv_printf("%s", bstr("c_pop3_port"));
00703         serv_printf("%s", bstr("c_smtp_port"));
00704         serv_printf("%s", ((!strcasecmp(bstr("c_rfc822_strict_from"), "yes") ? "0" : "1"))); /* note: reverse bool */
00705         serv_printf("%s", ((!strcasecmp(bstr("c_aide_zap"), "yes") ? "1" : "0")));
00706         serv_printf("%s", bstr("c_imap_port"));
00707         serv_printf("%s", bstr("c_net_freq"));
00708         serv_printf("%s", ((!strcasecmp(bstr("c_disable_newu"), "yes") ? "1" : "0")));
00709         serv_printf("1"); /* placeholder - this field is not in use */
00710         serv_printf("%s", bstr("c_purge_hour"));
00711         serv_printf("%s", bstr("c_ldap_host"));
00712         serv_printf("%s", bstr("c_ldap_port"));
00713         serv_printf("%s", bstr("c_ldap_base_dn"));
00714         serv_printf("%s", bstr("c_ldap_bind_dn"));
00715         serv_printf("%s", bstr("c_ldap_bind_pw"));
00716         serv_printf("%s", bstr("c_ip_addr"));
00717         serv_printf("%s", bstr("c_msa_port"));
00718         serv_printf("%s", bstr("c_imaps_port"));
00719         serv_printf("%s", bstr("c_pop3s_port"));
00720         serv_printf("%s", bstr("c_smtps_port"));
00721         serv_printf("%s", ((!strcasecmp(bstr("c_enable_fulltext"), "yes") ? "1" : "0")));
00722         serv_printf("%s", ((!strcasecmp(bstr("c_auto_cull"), "yes") ? "1" : "0")));
00723         serv_printf("%s", ((!strcasecmp(bstr("c_instant_expunge"), "yes") ? "1" : "0")));
00724         serv_printf("%s", ((!strcasecmp(bstr("c_allow_spoofing"), "yes") ? "1" : "0")));
00725         serv_printf("%s", ((!strcasecmp(bstr("c_journal_email"), "yes") ? "1" : "0")));
00726         serv_printf("%s", ((!strcasecmp(bstr("c_journal_pubmsgs"), "yes") ? "1" : "0")));
00727         serv_printf("%s", bstr("c_journal_dest"));
00728         serv_printf("%s", bstr("c_default_cal_zone"));
00729         serv_printf("%s", bstr("c_pftcpdict_port"));
00730         serv_printf("%s", bstr("c_mgesve_port"));
00731         serv_printf("%s", ((!strcasecmp(bstr("c_auth_mode"), "yes") ? "1" : "0")));
00732         serv_printf("%s", bstr("c_funambol_host"));
00733         serv_printf("%s", bstr("c_funambol_port"));
00734         serv_printf("%s", bstr("c_funambol_source"));
00735         serv_printf("%s", bstr("c_funambol_auth"));
00736         serv_printf("000");
00737 
00738         serv_printf("SPEX site|%d|%d", atoi(bstr("sitepolicy")), atoi(bstr("sitevalue")));
00739         serv_getln(buf, sizeof buf);
00740         serv_printf("SPEX mailboxes|%d|%d", atoi(bstr("mboxpolicy")), atoi(bstr("mboxvalue")));
00741         serv_getln(buf, sizeof buf);
00742 
00743         strcpy(serv_info.serv_default_cal_zone, bstr("c_default_cal_zone"));
00744 
00745         safestrncpy(WC->ImportantMessage, _("Your system configuration has been updated."),
00746                 sizeof WC->ImportantMessage);
00747         display_aide_menu();
00748 }
00749 
00750 

Generated on Wed Jun 20 23:13:10 2007 for webcit by  doxygen 1.5.2