* Made the frames stuff less dependent on the HTML TARGET= directive
[citadel.git] / webcit / siteconfig.c
1 /*
2  * Administrative screen for site-wide configuration
3  *
4  */
5
6 #include <stdlib.h>
7 #include <unistd.h>
8 #include <stdio.h>
9 #include <signal.h>
10 #include <sys/types.h>
11 #include <ctype.h>
12 #include <string.h>
13 #include "webcit.h"
14 #include "child.h"
15
16
17 void display_siteconfig(void) {
18         char buf[256];
19         int i = 0;
20
21         serv_printf("CONF get");
22         serv_gets(buf);
23         if (buf[0]!='1') {
24                 display_error(&buf[4]);
25                 return;
26         }
27
28         printf("HTTP/1.0 200 OK\n");
29         output_headers(1, "bottom");
30
31         wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=007700><TR><TD>");
32         wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>Site configuration");
33         wprintf("</B></FONT></TD></TR></TABLE>\n");
34
35         wprintf("<FORM METHOD=\"POST\" ACTION=\"/siteconfig\">\n");
36         wprintf("<TABLE border=0>\n");
37
38         while (serv_gets(buf), strcmp(buf, "000")) {
39             ++i;
40             switch(i) {
41                 case 1: wprintf("<TR><TD>Node name</TD><TD>");
42                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_nodename\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
43                         wprintf("</TD></TR>\n");
44                         break;
45                 case 2: wprintf("<TR><TD>Fully qualified domain name</TD><TD>");
46                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_fqdn\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
47                         wprintf("</TD></TR>\n");
48                         break;
49                 case 3: wprintf("<TR><TD>Human-readable node name</TD><TD>");
50                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_humannode\" MAXLENGTH=\"20\" VALUE=\"%s\">", buf);
51                         wprintf("</TD></TR>\n");
52                         break;
53                 case 4: wprintf("<TR><TD>Landline telephone number</TD><TD>");
54                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_phonenum\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
55                         wprintf("</TD></TR>\n");
56                         break;
57                 case 5: wprintf("<TR><TD>Automatically grant room-aide status to users who create private rooms</TD><TD>");
58                         wprintf("<INPUT TYPE=\"checkbox\" NAME=\"c_creataide\" VALUE=\"yes\" %s>", ((atoi(buf)!=0) ? "CHECKED" : ""));
59                         wprintf("</TD></TR>\n");
60                         break;
61                 case 6: wprintf("<TR><TD>Server connection idle timeout (in seconds)</TD><TD>");
62                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_sleeping\" MAXLENGTH=\"15\" VALUE=\"%s\">", buf);
63                         wprintf("</TD></TR>\n");
64                         break;
65                 case 7: wprintf("<TR><TD>Initial access level for new users</TD><TD>");
66                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_initax\" MAXLENGTH=\"1\" VALUE=\"%s\">", buf);
67                         wprintf("</TD></TR>\n");
68                         break;
69                 case 8: wprintf("<TR><TD>Require registration for new users</TD><TD>");
70                         wprintf("<INPUT TYPE=\"checkbox\" NAME=\"c_regiscall\" VALUE=\"yes\" %s>", ((atoi(buf)!=0) ? "CHECKED" : ""));
71                         wprintf("</TD></TR>\n");
72                         break;
73                 case 9: wprintf("<TR><TD>Move problem user messages to twitroom</TD><TD>");
74                         wprintf("<INPUT TYPE=\"checkbox\" NAME=\"c_twitdetect\" VALUE=\"yes\" %s>", ((atoi(buf)!=0) ? "CHECKED" : ""));
75                         wprintf("</TD></TR>\n");
76                         break;
77                 case 10:wprintf("<TR><TD>Name of twitroom</TD><TD>");
78                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_twitroom\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
79                         wprintf("</TD></TR>\n");
80                         break;
81                 case 11:wprintf("<TR><TD>Paginator prompt</TD><TD>");
82                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_moreprompt\" MAXLENGTH=\"79\" VALUE=\"%s\">", buf);
83                         wprintf("</TD></TR>\n");
84                         break;
85                 case 12:wprintf("<TR><TD>Restrict access to Internet mail</TD><TD>");
86                         wprintf("<INPUT TYPE=\"checkbox\" NAME=\"c_restrict\" VALUE=\"yes\" %s>", ((atoi(buf)!=0) ? "CHECKED" : ""));
87                         wprintf("</TD></TR>\n");
88                         break;
89                 case 13:wprintf("<TR><TD>Geographic location of this system</TD><TD>");
90                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_bbs_city\" MAXLENGTH=\"31\" VALUE=\"%s\">", buf);
91                         wprintf("</TD></TR>\n");
92                         break;
93                 case 14:wprintf("<TR><TD>Name of system administrator</TD><TD>");
94                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_sysadm\" MAXLENGTH=\"25\" VALUE=\"%s\">", buf);
95                         wprintf("</TD></TR>\n");
96                         break;
97                 case 15:wprintf("<TR><TD>Maximum concurrent sessions</TD><TD>");
98                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_maxsessions\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
99                         wprintf("</TD></TR>\n");
100                         break;
101                 case 16:wprintf("<TR><TD>Server-to-server networking password</TD><TD>");
102                         wprintf("<INPUT TYPE=\"password\" NAME=\"c_net_password\" MAXLENGTH=\"19\" VALUE=\"%s\">", buf);
103                         wprintf("</TD></TR>\n");
104                         break;
105                 case 17:wprintf("<TR><TD>Default user purge time (days)</TD><TD>");
106                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_userpurge\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
107                         wprintf("</TD></TR>\n");
108                         break;
109                 case 18:wprintf("<TR><TD>Default room purge time (days)</TD><TD>");
110                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_roompurge\" MAXLENGTH=\"5\" VALUE=\"%s\">", buf);
111                         wprintf("</TD></TR>\n");
112                         break;
113                 case 19:wprintf("<TR><TD>Name of room to log pages</TD><TD>");
114                         wprintf("<INPUT TYPE=\"text\" NAME=\"c_logpages\" MAXLENGTH=\"63\" VALUE=\"%s\">", buf);
115                         wprintf("</TD></TR>\n");
116                         break;
117             }
118         }
119
120         wprintf("</TABLE><CENTER>");
121         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"OK\">");
122         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">\n");
123         wprintf("</CENTER></FORM></BODY></HTML>\n");
124         wDumpContent();
125 }
126
127
128 void siteconfig(void) {
129         char buf[256];
130
131         if (strcasecmp(bstr("sc"), "OK")) {
132                 display_main_menu();
133                 return;
134         }
135
136         serv_printf("CONF set");
137         serv_gets(buf);
138         if (buf[0]!='4') {
139                 display_error(&buf[4]);
140                 return;
141         }
142
143         serv_printf("%s", bstr("c_nodename"));
144         serv_printf("%s", bstr("c_fqdn"));
145         serv_printf("%s", bstr("c_humannode"));
146         serv_printf("%s", bstr("c_phonenum"));
147         serv_printf("%s", ( (!strcasecmp(bstr("c_creataide"), "yes") ? "1" : "0")));
148         serv_printf("%s", bstr("c_sleeping"));
149         serv_printf("%s", bstr("c_initax"));
150         serv_printf("%s", ( (!strcasecmp(bstr("c_regiscall"), "yes") ? "1" : "0")));
151         serv_printf("%s", ( (!strcasecmp(bstr("c_twitdetect"), "yes") ? "1" : "0")));
152         serv_printf("%s", bstr("c_twitroom"));
153         serv_printf("%s", bstr("c_moreprompt"));
154         serv_printf("%s", ( (!strcasecmp(bstr("c_restrict"), "yes") ? "1" : "0")));
155         serv_printf("%s", bstr("c_bbs_city"));
156         serv_printf("%s", bstr("c_sysadm"));
157         serv_printf("%s", bstr("c_maxsessions"));
158         serv_printf("%s", bstr("c_net_password"));
159         serv_printf("%s", bstr("c_userpurge"));
160         serv_printf("%s", bstr("c_roompurge"));
161         serv_printf("%s", bstr("c_logpages"));
162         serv_printf("000");
163         display_success("System configuration has been updated.");
164         }