4 * Administrative screen for site-wide configuration
12 void display_siteconfig(void)
18 /* expire policy settings */
24 output_headers(1, 1, 2, 0, 0, 0);
25 wprintf("<div id=\"banner\">\n"
26 "<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>"
27 "<SPAN CLASS=\"titlebar\">");
28 wprintf(_("Site configuration"));
30 "</TD></TR></TABLE>\n"
31 "</div>\n<div id=\"content\">\n"
34 wprintf("<div id=\"fix_scrollbar_bug\">"
35 "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>");
37 whichmenu = bstr("whichmenu");
39 if (!strcmp(whichmenu, "")) {
40 wprintf("<TABLE border=0 cellspacing=0 cellpadding=3 width=100%%>\n");
42 wprintf("<TR BGCOLOR=\"#CCCCCC\"><TD>"
43 "<A HREF=\"/display_siteconfig?whichmenu=general\">"
44 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
45 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
47 "<A HREF=\"/display_siteconfig?whichmenu=general\">"
52 _("General site configuration items")
56 "<A HREF=\"/display_siteconfig?whichmenu=access\">"
57 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
58 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
60 "<A HREF=\"/display_siteconfig?whichmenu=access\">"
65 _("Access controls and site policy settings")
68 wprintf("<TR BGCOLOR=\"#CCCCCC\"><TD>"
69 "<A HREF=\"/display_siteconfig?whichmenu=network\">"
70 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
71 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
73 "<A HREF=\"/display_siteconfig?whichmenu=network\">"
82 "<A HREF=\"/display_siteconfig?whichmenu=tuning\">"
83 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
84 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
86 "<A HREF=\"/display_siteconfig?whichmenu=tuning\">"
91 _("Advanced server fine-tuning controls")
94 wprintf("<TR BGCOLOR=\"#CCCCCC\"><TD>"
95 "<A HREF=\"/display_siteconfig?whichmenu=ldap\">"
96 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
97 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
99 "<A HREF=\"/display_siteconfig?whichmenu=ldap\">"
104 _("Configure the LDAP connector for Citadel")
108 "<A HREF=\"/display_siteconfig?whichmenu=purger\">"
109 "<IMG BORDER=\"0\" WIDTH=\"48\" HEIGHT=\"48\" "
110 "SRC=\"/static/advanpage2_48x.gif\" ALT=\" \">"
112 "<A HREF=\"/display_siteconfig?whichmenu=purger\">"
117 _("Configure automatic expiry of old messages")
121 wprintf("</td></tr></table></center>\n");
126 if (!strcasecmp(whichmenu, "general")) {
127 wprintf("<div align=\"center\"><h2>");
128 wprintf(_("General site configuration items"));
129 wprintf("</h2></div>\n");
132 if (!strcasecmp(whichmenu, "access")) {
133 wprintf("<div align=\"center\"><h2>");
134 wprintf(_("Access controls and site policy settings"));
135 wprintf("</h2></div>\n");
138 if (!strcasecmp(whichmenu, "network")) {
139 wprintf("<div align=\"center\"><h2>");
140 wprintf(_("Network services"));
142 wprintf(_("Changes made on this screen will not take effect "
143 "until you restart the Citadel server."));
147 if (!strcasecmp(whichmenu, "tuning")) {
148 wprintf("<div align=\"center\"><h2>");
149 wprintf(_("Advanced server fine-tuning controls"));
150 wprintf("</h2></div>\n");
153 if (!strcasecmp(whichmenu, "ldap")) {
154 wprintf("<div align=\"center\"><h2>");
155 wprintf(_("Citadel LDAP connector configuration"));
157 wprintf(_("Changes made on this screen will not take effect "
158 "until you restart the Citadel server."));
162 if (!strcasecmp(whichmenu, "purger")) {
163 wprintf("<div align=\"center\"><h2>");
164 wprintf(_("Message auto-purger settings"));
166 wprintf(_("These settings may be overridden on a per-floor or per-room basis."));
170 serv_printf("CONF get");
171 serv_getln(buf, sizeof buf);
173 wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
174 wprintf("<SPAN CLASS=\"titlebar\">");
176 wprintf("</SPAN>\n");
177 wprintf("</TD></TR></TABLE><br />\n");
178 wprintf("%s<br />\n", &buf[4]);
179 do_template("endbox");
184 wprintf("<FORM METHOD=\"POST\" ACTION=\"/siteconfig\">\n");
185 wprintf("<TABLE border=0>\n");
188 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
191 if (!strcasecmp(whichmenu, "general")) {
193 wprintf(_("Node name"));
194 wprintf("</TD><TD>");
195 wprintf("<input type=\"text\" NAME=\"c_nodename\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
196 wprintf("</TD></TR>\n");
199 wprintf("<input type=\"hidden\" NAME=\"c_nodename\" VALUE=\"%s\">", buf);
203 if (!strcasecmp(whichmenu, "general")) {
205 wprintf(_("Fully qualified domain name"));
206 wprintf("</TD><TD>");
207 wprintf("<input type=\"text\" NAME=\"c_fqdn\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
208 wprintf("</TD></TR>\n");
211 wprintf("<input type=\"hidden\" NAME=\"c_fqdn\" VALUE=\"%s\">", buf);
215 if (!strcasecmp(whichmenu, "general")) {
217 wprintf(_("Human-readable node name"));
218 wprintf("</TD><TD>");
219 wprintf("<input type=\"text\" NAME=\"c_humannode\" MAXLENGTH=\"20\" VALUE=\"%s\">", buf);
220 wprintf("</TD></TR>\n");
223 wprintf("<input type=\"hidden\" NAME=\"c_humannode\" VALUE=\"%s\">", buf);
227 if (!strcasecmp(whichmenu, "general")) {
229 wprintf(_("Telephone number"));
230 wprintf("</TD><TD>");
231 wprintf("<input type=\"text\" NAME=\"c_phonenum\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
232 wprintf("</TD></TR>\n");
235 wprintf("<input type=\"hidden\" NAME=\"c_phonenum\" VALUE=\"%s\">", buf);
239 if (!strcasecmp(whichmenu, "access")) {
241 wprintf(_("Automatically grant room-aide status to users who create private rooms"));
242 wprintf("</TD><TD>");
243 wprintf("<input type=\"checkbox\" NAME=\"c_creataide\" VALUE=\"yes\" %s>",
244 ((atoi(buf) != 0) ? "CHECKED" : ""));
245 wprintf("</TD></TR>\n");
248 wprintf("<input type=\"hidden\" NAME=\"c_creataide\" VALUE=\"%s\">", buf);
252 if (!strcasecmp(whichmenu, "tuning")) {
254 wprintf(_("Server connection idle timeout (in seconds)"));
255 wprintf("</TD><TD>");
256 wprintf("<input type=\"text\" NAME=\"c_sleeping\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
257 wprintf("</TD></TR>\n");
260 wprintf("<input type=\"hidden\" NAME=\"c_sleeping\" VALUE=\"%s\">", buf);
264 if (!strcasecmp(whichmenu, "access")) {
266 wprintf(_("Initial access level for new users"));
267 wprintf("</TD><TD>");
268 wprintf("<SELECT NAME=\"c_initax\" SIZE=\"1\">\n");
269 for (j=0; j<=6; ++j) {
270 wprintf("<OPTION %s VALUE=\"%d\">%d - %s</OPTION>\n",
271 ((atoi(buf) == j) ? "SELECTED" : ""),
275 wprintf("</SELECT>");
276 wprintf("</TD></TR>\n");
279 wprintf("<input type=\"hidden\" NAME=\"c_initax\" VALUE=\"%s\">", buf);
283 if (!strcasecmp(whichmenu, "access")) {
285 wprintf(_("Require registration for new users"));
286 wprintf("</TD><TD>");
287 wprintf("<input type=\"checkbox\" NAME=\"c_regiscall\" VALUE=\"yes\" %s>",
288 ((atoi(buf) != 0) ? "CHECKED" : ""));
289 wprintf("</TD></TR>\n");
292 wprintf("<input type=\"hidden\" NAME=\"c_regiscall\" VALUE=\"%s\">", buf);
296 if (!strcasecmp(whichmenu, "access")) {
298 wprintf(_("Quarantine messages from problem users"));
299 wprintf("</TD><TD>");
300 wprintf("<input type=\"checkbox\" NAME=\"c_twitdetect\" VALUE=\"yes\" %s>",
301 ((atoi(buf) != 0) ? "CHECKED" : ""));
302 wprintf("</TD></TR>\n");
305 wprintf("<input type=\"hidden\" NAME=\"c_twitdetect\" VALUE=\"%s\">", buf);
309 if (!strcasecmp(whichmenu, "access")) {
311 wprintf(_("Name of quarantine room"));
312 wprintf("</TD><TD>");
313 wprintf("<input type=\"text\" NAME=\"c_twitroom\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
314 wprintf("</TD></TR>\n");
317 wprintf("<input type=\"hidden\" NAME=\"c_twitroom\" VALUE=\"%s\">", buf);
321 if (!strcasecmp(whichmenu, "general")) {
323 wprintf(_("Paginator prompt (for text mode clients)"));
324 wprintf("</TD><TD>");
325 wprintf("<input type=\"text\" NAME=\"c_moreprompt\" MAXLENGTH=\"79\" VALUE=\"%s\">", buf);
326 wprintf("</TD></TR>\n");
329 wprintf("<input type=\"hidden\" NAME=\"c_moreprompt\" VALUE=\"%s\">", buf);
333 if (!strcasecmp(whichmenu, "access")) {
335 wprintf(_("Restrict access to Internet mail"));
336 wprintf("</TD><TD>");
337 wprintf("<input type=\"checkbox\" NAME=\"c_restrict\" VALUE=\"yes\" %s>",
338 ((atoi(buf) != 0) ? "CHECKED" : ""));
339 wprintf("</TD></TR>\n");
342 wprintf("<input type=\"hidden\" NAME=\"c_restrict\" VALUE=\"%s\">", buf);
346 if (!strcasecmp(whichmenu, "general")) {
348 wprintf(_("Geographic location of this system"));
349 wprintf("</TD><TD>");
350 wprintf("<input type=\"text\" NAME=\"c_bbs_city\" MAXLENGTH=\"31\" VALUE=\"%s\">", buf);
351 wprintf("</TD></TR>\n");
354 wprintf("<input type=\"hidden\" NAME=\"c_bbs_city\" VALUE=\"%s\">", buf);
358 if (!strcasecmp(whichmenu, "general")) {
360 wprintf(_("Name of system administrator"));
361 wprintf("</TD><TD>");
362 wprintf("<input type=\"text\" NAME=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
363 wprintf("</TD></TR>\n");
366 wprintf("<input type=\"hidden\" NAME=\"c_sysadm\" VALUE=\"%s\">", buf);
370 if (!strcasecmp(whichmenu, "tuning")) {
372 wprintf(_("Maximum concurrent sessions (0 = no limit)"));
373 wprintf("</TD><TD>");
374 wprintf("<input type=\"text\" NAME=\"c_maxsessions\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
375 wprintf("</TD></TR>\n");
378 wprintf("<input type=\"hidden\" NAME=\"c_maxsessions\" VALUE=\"%s\">", buf);
382 if (!strcasecmp(whichmenu, "tuning")) {
384 wprintf(_("Default user purge time (days)"));
385 wprintf("</TD><TD>");
386 wprintf("<input type=\"text\" NAME=\"c_userpurge\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
387 wprintf("</TD></TR>\n");
390 wprintf("<input type=\"hidden\" NAME=\"c_userpurge\" VALUE=\"%s\">", buf);
394 if (!strcasecmp(whichmenu, "tuning")) {
396 wprintf(_("Default room purge time (days)"));
397 wprintf("</TD><TD>");
398 wprintf("<input type=\"text\" NAME=\"c_roompurge\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
399 wprintf("</TD></TR>\n");
402 wprintf("<input type=\"hidden\" NAME=\"c_roompurge\" VALUE=\"%s\">", buf);
406 if (!strcasecmp(whichmenu, "access")) {
408 wprintf(_("Name of room to log pages"));
409 wprintf("</TD><TD>");
410 wprintf("<input type=\"text\" NAME=\"c_logpages\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
411 wprintf("</TD></TR>\n");
414 wprintf("<input type=\"hidden\" NAME=\"c_logpages\" VALUE=\"%s\">", buf);
418 if (!strcasecmp(whichmenu, "access")) {
420 wprintf(_("Access level required to create rooms"));
421 wprintf("</TD><TD>");
422 wprintf("<SELECT NAME=\"c_createax\" SIZE=\"1\">\n");
423 for (j=0; j<=6; ++j) {
424 wprintf("<OPTION %s VALUE=\"%d\">%d - %s</OPTION>\n",
425 ((atoi(buf) == j) ? "SELECTED" : ""),
429 wprintf("</SELECT>");
430 wprintf("</TD></TR>\n");
433 wprintf("<input type=\"hidden\" NAME=\"c_createax\" VALUE=\"%s\">", buf);
437 if (!strcasecmp(whichmenu, "tuning")) {
439 wprintf(_("Maximum message length"));
440 wprintf("</TD><TD>");
441 wprintf("<input type=\"text\" NAME=\"c_maxmsglen\" MAXLENGTH=\"20\" VALUE=\"%s\">", buf);
442 wprintf("</TD></TR>\n");
445 wprintf("<input type=\"hidden\" NAME=\"c_maxmsglen\" VALUE=\"%s\">", buf);
449 if (!strcasecmp(whichmenu, "tuning")) {
451 wprintf(_("Minimum number of worker threads"));
452 wprintf("</TD><TD>");
453 wprintf("<input type=\"text\" NAME=\"c_min_workers\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
454 wprintf("</TD></TR>\n");
457 wprintf("<input type=\"hidden\" NAME=\"c_min_workers\" VALUE=\"%s\">", buf);
461 if (!strcasecmp(whichmenu, "tuning")) {
463 wprintf(_("Maximum number of worker threads"));
464 wprintf("</TD><TD>");
465 wprintf("<input type=\"text\" NAME=\"c_max_workers\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
466 wprintf("</TD></TR>\n");
469 wprintf("<input type=\"hidden\" NAME=\"c_max_workers\" VALUE=\"%s\">", buf);
473 if (!strcasecmp(whichmenu, "network")) {
475 wprintf(_("POP3 listener port (-1 to disable)"));
476 wprintf("</TD><TD>");
477 wprintf("<input type=\"text\" NAME=\"c_pop3_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
478 wprintf("</TD></TR>\n");
481 wprintf("<input type=\"hidden\" NAME=\"c_pop3_port\" VALUE=\"%s\">", buf);
485 if (!strcasecmp(whichmenu, "network")) {
487 wprintf(_("SMTP MTA port (-1 to disable)"));
488 wprintf("</TD><TD>");
489 wprintf("<input type=\"text\" NAME=\"c_smtp_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
490 wprintf("</TD></TR>\n");
493 wprintf("<input type=\"hidden\" NAME=\"c_smtp_port\" VALUE=\"%s\">", buf);
497 if (!strcasecmp(whichmenu, "access")) {
499 wprintf(_("Allow aides to zap (forget) rooms"));
500 wprintf("</TD><TD>");
501 wprintf("<input type=\"checkbox\" NAME=\"c_aide_zap\" VALUE=\"yes\" %s>",
502 ((atoi(buf) != 0) ? "CHECKED" : ""));
503 wprintf("</TD></TR>\n");
506 wprintf("<input type=\"hidden\" NAME=\"c_aide_zap\" VALUE=\"%s\">", buf);
510 if (!strcasecmp(whichmenu, "network")) {
512 wprintf(_("IMAP listener port (-1 to disable)"));
513 wprintf("</TD><TD>");
514 wprintf("<input type=\"text\" NAME=\"c_imap_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
515 wprintf("</TD></TR>\n");
518 wprintf("<input type=\"hidden\" NAME=\"c_imap_port\" VALUE=\"%s\">", buf);
522 if (!strcasecmp(whichmenu, "network")) {
524 wprintf(_("Network run frequency (in seconds)"));
525 wprintf("</TD><TD>");
526 wprintf("<input type=\"text\" NAME=\"c_net_freq\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
527 wprintf("</TD></TR>\n");
530 wprintf("<input type=\"hidden\" NAME=\"c_net_freq\" VALUE=\"%s\">", buf);
534 if (!strcasecmp(whichmenu, "access")) {
536 wprintf(_("Disable self-service user account creation"));
537 wprintf("</TD><TD>");
538 wprintf("<input type=\"checkbox\" NAME=\"c_disable_newu\" VALUE=\"yes\" %s>",
539 ((atoi(buf) != 0) ? "CHECKED" : ""));
540 wprintf("</TD></TR>\n");
543 wprintf("<input type=\"hidden\" NAME=\"c_disable_newu\" VALUE=\"%s\">", buf);
547 /* position 31 is no longer in use */
550 if (!strcasecmp(whichmenu, "purger")) {
552 wprintf(_("Hour to run database auto-purge"));
553 wprintf("</TD><TD>");
554 wprintf("<SELECT NAME=\"c_purge_hour\" SIZE=\"1\">\n");
555 for (j=0; j<=23; ++j) {
556 wprintf("<OPTION %s VALUE=\"%d\">%d:00%s</OPTION>\n",
557 ((atoi(buf) == j) ? "SELECTED" : ""),
559 ((j == 0) ? 12 : ((j>12) ? j-12 : j)),
560 ((j >= 12) ? "pm" : "am")
563 wprintf("</SELECT>");
564 wprintf("</TD></TR>\n");
567 wprintf("<input type=\"hidden\" NAME=\"c_purge_hour\" VALUE=\"%s\">", buf);
571 if ( (serv_info.serv_supports_ldap) && (!strcasecmp(whichmenu, "ldap")) ) {
573 wprintf(_("Host name of LDAP server (blank to disable)"));
574 wprintf("</TD><TD>");
575 wprintf("<input type=\"text\" NAME=\"c_ldap_host\" MAXLENGTH=\"127\" VALUE=\"%s\">", buf);
576 wprintf("</TD></TR>\n");
579 wprintf("<input type=\"hidden\" NAME=\"c_ldap_host\" VALUE=\"%s\">", buf);
583 if ( (serv_info.serv_supports_ldap) && (!strcasecmp(whichmenu, "ldap")) ) {
585 wprintf(_("Port number of LDAP server (blank to disable)"));
586 wprintf("</TD><TD>");
587 wprintf("<input type=\"text\" NAME=\"c_ldap_port\" MAXLENGTH=\"127\" VALUE=\"%d\">", atoi(buf));
588 wprintf("</TD></TR>\n");
591 wprintf("<input type=\"hidden\" NAME=\"c_ldap_port\" VALUE=\"%d\">", atoi(buf));
595 if ( (serv_info.serv_supports_ldap) && (!strcasecmp(whichmenu, "ldap")) ) {
597 wprintf(_("Base DN"));
598 wprintf("</TD><TD>");
599 wprintf("<input type=\"text\" NAME=\"c_ldap_base_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
600 wprintf("</TD></TR>\n");
603 wprintf("<input type=\"hidden\" NAME=\"c_ldap_base_dn\" VALUE=\"%s\">", buf);
607 if ( (serv_info.serv_supports_ldap) && (!strcasecmp(whichmenu, "ldap")) ) {
609 wprintf(_("Bind DN"));
610 wprintf("</TD><TD>");
611 wprintf("<input type=\"text\" NAME=\"c_ldap_bind_dn\" MAXLENGTH=\"255\" VALUE=\"%s\">", buf);
612 wprintf("</TD></TR>\n");
615 wprintf("<input type=\"hidden\" NAME=\"c_ldap_bind_dn\" VALUE=\"%s\">", buf);
619 if ( (serv_info.serv_supports_ldap) && (!strcasecmp(whichmenu, "ldap")) ) {
621 wprintf(_("Password for bind DN"));
622 wprintf("</TD><TD>");
623 wprintf("<input type=\"password\" NAME=\"c_ldap_bind_pw\" MAXLENGTH=\"255\" VALUE=\"%s\">",
625 wprintf("</TD></TR>\n");
628 wprintf("<input type=\"hidden\" NAME=\"c_ldap_bind_pw\" VALUE=\"%s\">", buf);
632 if (!strcasecmp(whichmenu, "network")) {
634 wprintf(_("Server IP address (0.0.0.0 for 'any')"));
635 wprintf("</TD><TD>");
636 wprintf("<input type=\"text\" NAME=\"c_ip_addr\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
637 wprintf("</TD></TR>\n");
640 wprintf("<input type=\"hidden\" NAME=\"c_ip_addr\" VALUE=\"%s\">", buf);
644 if (!strcasecmp(whichmenu, "network")) {
646 wprintf(_("SMTP MSA port (-1 to disable)"));
647 wprintf("</TD><TD>");
648 wprintf("<input type=\"text\" NAME=\"c_msa_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
649 wprintf("</TD></TR>\n");
652 wprintf("<input type=\"hidden\" NAME=\"c_msa_port\" VALUE=\"%s\">", buf);
656 if (!strcasecmp(whichmenu, "network")) {
658 wprintf(_("IMAP over SSL port (-1 to disable)"));
659 wprintf("</TD><TD>");
660 wprintf("<input type=\"text\" NAME=\"c_imaps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
661 wprintf("</TD></TR>\n");
664 wprintf("<input type=\"hidden\" NAME=\"c_imaps_port\" VALUE=\"%s\">", buf);
668 if (!strcasecmp(whichmenu, "network")) {
670 wprintf(_("POP3 over SSL port (-1 to disable)"));
671 wprintf("</TD><TD>");
672 wprintf("<input type=\"text\" NAME=\"c_pop3s_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
673 wprintf("</TD></TR>\n");
676 wprintf("<input type=\"hidden\" NAME=\"c_pop3s_port\" VALUE=\"%s\">", buf);
680 if (!strcasecmp(whichmenu, "network")) {
682 wprintf(_("SMTP over SSL port (-1 to disable)"));
683 wprintf("</TD><TD>");
684 wprintf("<input type=\"text\" NAME=\"c_smtps_port\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
685 wprintf("</TD></TR>\n");
688 wprintf("<input type=\"hidden\" NAME=\"c_smtps_port\" VALUE=\"%s\">", buf);
692 if (!strcasecmp(whichmenu, "general")) {
694 wprintf(_("Enable full text index (warning: resource intensive)"));
695 wprintf("</TD><TD>");
696 wprintf("<input type=\"checkbox\" NAME=\"c_enable_fulltext\" VALUE=\"yes\" %s>",
697 ((atoi(buf) != 0) ? "CHECKED" : ""));
698 wprintf("</TD></TR>\n");
701 wprintf("<input type=\"hidden\" NAME=\"c_enable_fulltext\" VALUE=\"%s\">", buf);
705 if (!strcasecmp(whichmenu, "tuning")) {
707 wprintf(_("Automatically delete committed database logs"));
708 wprintf("</TD><TD>");
709 wprintf("<input type=\"checkbox\" NAME=\"c_auto_cull\" VALUE=\"yes\" %s>",
710 ((atoi(buf) != 0) ? "CHECKED" : ""));
711 wprintf("</TD></TR>\n");
714 wprintf("<input type=\"hidden\" NAME=\"c_auto_cull\" VALUE=\"%s\">", buf);
718 if (!strcasecmp(whichmenu, "network")) {
720 wprintf(_("Instantly expunge deleted messages in IMAP"));
721 wprintf("</TD><TD>");
722 wprintf("<input type=\"checkbox\" NAME=\"c_instant_expunge\" VALUE=\"yes\" %s>",
723 ((atoi(buf) != 0) ? "CHECKED" : ""));
724 wprintf("</TD></TR>\n");
727 wprintf("<input type=\"hidden\" NAME=\"c_instant_expunge\" VALUE=\"%s\">", buf);
731 if (!strcasecmp(whichmenu, "network")) {
733 wprintf(_("Allow unauthenticated SMTP clients to spoof this site's domains"));
734 wprintf("</TD><TD>");
735 wprintf("<input type=\"checkbox\" NAME=\"c_allow_spoofing\" VALUE=\"yes\" %s>",
736 ((atoi(buf) != 0) ? "CHECKED" : ""));
737 wprintf("</TD></TR>\n");
740 wprintf("<input type=\"hidden\" NAME=\"c_allow_spoofing\" VALUE=\"%s\">", buf);
746 serv_puts("GPEX site");
747 serv_getln(buf, sizeof buf);
749 sitepolicy = extract_int(&buf[4], 0);
750 sitevalue = extract_int(&buf[4], 1);
753 serv_puts("GPEX mailboxes");
754 serv_getln(buf, sizeof buf);
756 mboxpolicy = extract_int(&buf[4], 0);
757 mboxvalue = extract_int(&buf[4], 1);
760 if (!strcasecmp(whichmenu, "purger")) {
762 wprintf("<TR><TD COLSPAN=2><hr /></TD></TR>\n");
765 wprintf(_("Default message expire policy for public rooms"));
766 wprintf("</TD><TD>");
767 wprintf("<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"1\" %s>",
768 ((sitepolicy == 1) ? "CHECKED" : "") );
769 wprintf(_("Never automatically expire messages"));
771 wprintf("<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"2\" %s>",
772 ((sitepolicy == 2) ? "CHECKED" : "") );
773 wprintf(_("Expire by message count"));
775 wprintf("<input type=\"radio\" NAME=\"sitepolicy\" VALUE=\"3\" %s>",
776 ((sitepolicy == 3) ? "CHECKED" : "") );
777 wprintf(_("Expire by message age"));
779 wprintf(_("Number of messages or days: "));
780 wprintf("<input type=\"text\" NAME=\"sitevalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", sitevalue);
781 wprintf("</TD></TR>\n");
783 wprintf("<TR><TD COLSPAN=2><hr /></TD></TR>\n");
786 wprintf(_("Default message expire policy for private mailboxes"));
787 wprintf("</TD><TD>");
788 wprintf("<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"0\" %s>",
789 ((mboxpolicy == 0) ? "CHECKED" : "") );
790 wprintf(_("Same policy as public rooms"));
792 wprintf("<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"1\" %s>",
793 ((mboxpolicy == 1) ? "CHECKED" : "") );
794 wprintf(_("Never automatically expire messages"));
796 wprintf("<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"2\" %s>",
797 ((mboxpolicy == 2) ? "CHECKED" : "") );
798 wprintf(_("Expire by message count"));
800 wprintf("<input type=\"radio\" NAME=\"mboxpolicy\" VALUE=\"3\" %s>",
801 ((mboxpolicy == 3) ? "CHECKED" : "") );
802 wprintf(_("Expire by message age"));
804 wprintf(_("Number of messages or days: "));
805 wprintf("<input type=\"text\" NAME=\"mboxvalue\" MAXLENGTH=\"5\" VALUE=\"%d\">", mboxvalue);
806 wprintf("</TD></TR>\n");
808 wprintf("<TR><TD COLSPAN=2><hr /></TD></TR>\n");
812 wprintf("<input type=\"hidden\" NAME=\"sitepolicy\" VALUE=\"%d\">\n", sitepolicy);
813 wprintf("<input type=\"hidden\" NAME=\"sitevalue\" VALUE=\"%d\">\n", sitevalue);
814 wprintf("<input type=\"hidden\" NAME=\"mboxpolicy\" VALUE=\"%d\">\n", mboxpolicy);
815 wprintf("<input type=\"hidden\" NAME=\"mboxvalue\" VALUE=\"%d\">\n", mboxvalue);
818 wprintf("</TABLE><div align=\"center\">");
819 wprintf("<input type=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Save changes"));
821 wprintf("<input type=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">\n", _("Cancel"));
822 wprintf("</div></FORM>\n");
823 wprintf("</td></tr></table></div>\n");
828 void siteconfig(void)
832 if (strlen(bstr("ok_button")) == 0) {
833 display_siteconfig();
836 serv_printf("CONF set");
837 serv_getln(buf, sizeof buf);
839 safestrncpy(WC->ImportantMessage, &buf[4], sizeof WC->ImportantMessage);
840 display_siteconfig();
843 serv_printf("%s", bstr("c_nodename"));
844 serv_printf("%s", bstr("c_fqdn"));
845 serv_printf("%s", bstr("c_humannode"));
846 serv_printf("%s", bstr("c_phonenum"));
847 serv_printf("%s", ((!strcasecmp(bstr("c_creataide"), "yes") ? "1" : "0")));
848 serv_printf("%s", bstr("c_sleeping"));
849 serv_printf("%s", bstr("c_initax"));
850 serv_printf("%s", ((!strcasecmp(bstr("c_regiscall"), "yes") ? "1" : "0")));
851 serv_printf("%s", ((!strcasecmp(bstr("c_twitdetect"), "yes") ? "1" : "0")));
852 serv_printf("%s", bstr("c_twitroom"));
853 serv_printf("%s", bstr("c_moreprompt"));
854 serv_printf("%s", ((!strcasecmp(bstr("c_restrict"), "yes") ? "1" : "0")));
855 serv_printf("%s", bstr("c_bbs_city"));
856 serv_printf("%s", bstr("c_sysadm"));
857 serv_printf("%s", bstr("c_maxsessions"));
858 serv_printf(""); /* networking password -- deprecated */
859 serv_printf("%s", bstr("c_userpurge"));
860 serv_printf("%s", bstr("c_roompurge"));
861 serv_printf("%s", bstr("c_logpages"));
862 serv_printf("%s", bstr("c_createax"));
863 serv_printf("%s", bstr("c_maxmsglen"));
864 serv_printf("%s", bstr("c_min_workers"));
865 serv_printf("%s", bstr("c_max_workers"));
866 serv_printf("%s", bstr("c_pop3_port"));
867 serv_printf("%s", bstr("c_smtp_port"));
868 serv_printf(""); /* moderation filter level -- not yet implemented */
869 serv_printf("%s", ((!strcasecmp(bstr("c_aide_zap"), "yes") ? "1" : "0")));
870 serv_printf("%s", bstr("c_imap_port"));
871 serv_printf("%s", bstr("c_net_freq"));
872 serv_printf("%s", ((!strcasecmp(bstr("c_disable_newu"), "yes") ? "1" : "0")));
874 serv_printf("%s", bstr("c_purge_hour"));
875 serv_printf("%s", bstr("c_ldap_host"));
876 serv_printf("%s", bstr("c_ldap_port"));
877 serv_printf("%s", bstr("c_ldap_base_dn"));
878 serv_printf("%s", bstr("c_ldap_bind_dn"));
879 serv_printf("%s", bstr("c_ldap_bind_pw"));
880 serv_printf("%s", bstr("c_ip_addr"));
881 serv_printf("%s", bstr("c_msa_port"));
882 serv_printf("%s", bstr("c_imaps_port"));
883 serv_printf("%s", bstr("c_pop3s_port"));
884 serv_printf("%s", bstr("c_smtps_port"));
885 serv_printf("%s", ((!strcasecmp(bstr("c_enable_fulltext"), "yes") ? "1" : "0")));
886 serv_printf("%s", ((!strcasecmp(bstr("c_auto_cull"), "yes") ? "1" : "0")));
887 serv_printf("%s", ((!strcasecmp(bstr("c_instant_expunge"), "yes") ? "1" : "0")));
888 serv_printf("%s", ((!strcasecmp(bstr("c_allow_spoofing"), "yes") ? "1" : "0")));
891 serv_printf("SPEX site|%d|%d", atoi(bstr("sitepolicy")), atoi(bstr("sitevalue")));
892 serv_getln(buf, sizeof buf);
893 serv_printf("SPEX mailboxes|%d|%d", atoi(bstr("mboxpolicy")), atoi(bstr("mboxvalue")));
894 serv_getln(buf, sizeof buf);
896 safestrncpy(WC->ImportantMessage, _("Your system configuration has been updated."),
897 sizeof WC->ImportantMessage);
898 display_siteconfig();