+ sprintf(purger, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
+ _("Configure automatic expiry of old messages"),
+ _("These settings may be overridden on a per-floor or per-room basis.")
+ );
+
+ sprintf(idxjnl, "<center><h1>%s</h1><h2>%s</h2><table border=\"0\">",
+ _("Indexing and Journaling"),
+ _("Warning: these facilities are resource intensive.")
+ );
+
+
+ wprintf("<form method=\"post\" action=\"siteconfig\">\n");
+
+ i = 0;
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ switch (i++) {
+ case 0:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Node name"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_nodename\" maxlength=\"15\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 1:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Fully qualified domain name"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_fqdn\" maxlength=\"63\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 2:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Human-readable node name"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_humannode\" maxlength=\"20\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 3:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Telephone number"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_phonenum\" maxlength=\"15\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 4:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Automatically grant room-aide status to users who create private rooms"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_creataide\" value=\"yes\" %s>",
+ ((atoi(buf) != 0) ? "checked" : ""));
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 5:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Server connection idle timeout (in seconds)"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_sleeping\" maxlength=\"15\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 6:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Initial access level for new users"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<select name=\"c_initax\" size=\"1\">\n");
+ for (j=0; j<=6; ++j) {
+ sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
+ ((atoi(buf) == j) ? "selected" : ""),
+ j, j, axdefs[j]
+ );
+ }
+ sprintf(&access[strlen(access)], "</select>");
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 7:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Require registration for new users"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_regiscall\" value=\"yes\" %s>",
+ ((atoi(buf) != 0) ? "checked" : ""));
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 8:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Quarantine messages from problem users"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_twitdetect\" value=\"yes\" %s>",
+ ((atoi(buf) != 0) ? "checked" : ""));
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 9:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Name of quarantine room"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_twitroom\" maxlength=\"63\" value=\"%s\">", buf);
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 10:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Paginator prompt (for text mode clients)"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_moreprompt\" maxlength=\"79\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 11:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Restrict access to Internet mail"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"checkbox\" name=\"c_restrict\" value=\"yes\" %s>",
+ ((atoi(buf) != 0) ? "checked" : ""));
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 12:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Geographic location of this system"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_bbs_city\" maxlength=\"31\" value=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 13:
+ sprintf(&general[strlen(general)], "<tr><td>");
+ sprintf(&general[strlen(general)], _("Name of system administrator"));
+ sprintf(&general[strlen(general)], "</td><td>");
+ sprintf(&general[strlen(general)], "<input type=\"text\" name=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
+ sprintf(&general[strlen(general)], "</td></tr>\n");
+ break;
+ case 14:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Maximum concurrent sessions (0 = no limit)"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxsessions\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 16:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Default user purge time (days)"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_userpurge\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 17:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Default room purge time (days)"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_roompurge\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 18:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Name of room to log pages"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<input type=\"text\" name=\"c_logpages\" maxlength=\"63\" value=\"%s\">", buf);
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 19:
+ sprintf(&access[strlen(access)], "<tr><td>");
+ sprintf(&access[strlen(access)], _("Access level required to create rooms"));
+ sprintf(&access[strlen(access)], "</td><td>");
+ sprintf(&access[strlen(access)], "<select name=\"c_createax\" size=\"1\">\n");
+ for (j=0; j<=6; ++j) {
+ sprintf(&access[strlen(access)], "<option %s value=\"%d\">%d - %s</option>\n",
+ ((atoi(buf) == j) ? "selected" : ""),
+ j, j, axdefs[j]
+ );
+ }
+ sprintf(&access[strlen(access)], "</select>");
+ sprintf(&access[strlen(access)], "</td></tr>\n");
+ break;
+ case 20:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Maximum message length"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_maxmsglen\" maxlength=\"20\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 21:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Minimum number of worker threads"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_min_workers\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 22:
+ sprintf(&tuning[strlen(tuning)], "<tr><td>");
+ sprintf(&tuning[strlen(tuning)], _("Maximum number of worker threads"));
+ sprintf(&tuning[strlen(tuning)], "</td><td>");
+ sprintf(&tuning[strlen(tuning)], "<input type=\"text\" name=\"c_max_workers\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&tuning[strlen(tuning)], "</td></tr>\n");
+ break;
+ case 23:
+ sprintf(&network[strlen(network)], "<tr><td>");
+ sprintf(&network[strlen(network)], _("POP3 listener port (-1 to disable)"));
+ sprintf(&network[strlen(network)], "</td><td>");
+ sprintf(&network[strlen(network)], "<input type=\"text\" name=\"c_pop3_port\" maxlength=\"5\" value=\"%s\">", buf);
+ sprintf(&network[strlen(network)], "</TD></TR>\n");