2 * Administrative screen to add/change/delete user accounts
13 #include <sys/types.h>
15 #include <sys/socket.h>
18 #include <netinet/in.h>
32 void select_user_to_edit(char *message)
37 output_headers(3); /* No room banner on this screen */
39 if (message != NULL) wprintf(message);
41 wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=007700><TR><TD>");
42 wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>"
43 "Add/change/delete user accounts"
44 "</B></FONT></TD></TR></TABLE>\n");
46 wprintf("<TABLE border=0 CELLSPACING=10><TR VALIGN=TOP>"
47 "<TD>To edit an existing user account, select the user "
48 "name from the list and click 'Edit'.<BR><BR>");
50 wprintf("<CENTER><FORM METHOD=\"POST\" ACTION=\"/display_edituser\">\n");
51 wprintf("<SELECT NAME=\"username\" SIZE=10>\n");
55 while (serv_gets(buf), strcmp(buf, "000")) {
56 extract(username, buf, 0);
62 wprintf("</SELECT><BR>\n");
64 wprintf("<input type=submit name=sc value=\"Edit\">");
65 wprintf("</FORM></CENTER>\n");
68 "To create a new user account, enter the desired "
69 "user name in the box below and click 'Create'.<BR><BR>");
71 wprintf("<CENTER><FORM METHOD=\"POST\" ACTION=\"/create_user\">\n");
72 wprintf("New user: ");
73 wprintf("<input type=text name=username><BR>\n"
74 "<input type=submit value=\"Create\">"
75 "</FORM></CENTER>\n");
77 wprintf("</TD></TR></TABLE>\n");
85 * Edit a user. If supplied_username is null, look in the "username"
86 * web variable for the name of the user to edit.
88 void display_edituser(char *supplied_username) {
90 char error_message[SIZ];
104 if (supplied_username != NULL) {
105 strcpy(username, supplied_username);
108 strcpy(username, bstr("username") );
111 serv_printf("AGUP %s", username);
114 sprintf(error_message,
115 "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
116 "%s<BR><BR>\n", &buf[4]);
117 select_user_to_edit(error_message);
121 extract(username, &buf[4], 0);
122 extract(password, &buf[4], 1);
123 flags = extract_int(&buf[4], 2);
124 timescalled = extract_int(&buf[4], 3);
125 msgsposted = extract_int(&buf[4], 4);
126 axlevel = extract_int(&buf[4], 5);
127 usernum = extract_long(&buf[4], 6);
128 lastcall = extract_long(&buf[4], 7);
129 purgedays = extract_long(&buf[4], 8);
131 output_headers(3); /* No room banner on this screen */
132 wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=007700><TR><TD>");
133 wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"<B>"
134 "Edit user account: ");
136 wprintf("</B></FONT></TD></TR></TABLE>\n");
138 wprintf("<FORM METHOD=\"POST\" ACTION=\"/edituser\">\n"
139 "<INPUT TYPE=\"hidden\" NAME=\"username\" VALUE=\"");
143 wprintf("<INPUT TYPE=\"hidden\" NAME=\"flags\" VALUE=\"%d\">\n", flags);
145 wprintf("<CENTER><TABLE>");
147 wprintf("<TR><TD>Password</TD><TD>"
148 "<INPUT TYPE=\"password\" NAME=\"password\" VALUE=\"");
150 wprintf("\" MAXLENGTH=\"20\"></TD></TR>\n");
152 wprintf("<TR><TD>Times logged in</TD><TD>"
153 "<INPUT TYPE=\"text\" NAME=\"timescalled\" VALUE=\"");
154 wprintf("%d", timescalled);
155 wprintf("\" MAXLENGTH=\"6\"></TD></TR>\n");
157 wprintf("<TR><TD>Messages posted</TD><TD>"
158 "<INPUT TYPE=\"text\" NAME=\"msgsposted\" VALUE=\"");
159 wprintf("%d", msgsposted);
160 wprintf("\" MAXLENGTH=\"6\"></TD></TR>\n");
162 wprintf("<TR><TD>Access level</TD><TD>"
163 "<SELECT NAME=\"axlevel\">\n");
164 for (i=0; i<7; ++i) {
167 wprintf("SELECTED ");
169 wprintf("VALUE=\"%d\">%d - %s</OPTION>\n",
172 wprintf("</SELECT></TD></TR>\n");
174 wprintf("<TR><TD>User ID number</TD><TD>"
175 "<INPUT TYPE=\"text\" NAME=\"usernum\" VALUE=\"");
176 wprintf("%ld", usernum);
177 wprintf("\" MAXLENGTH=\"7\"></TD></TR>\n");
180 wprintf("<TR><TD>Date/time of last login</TD><TD>"
181 "<SELECT NAME=\"lastcall\">\n");
183 wprintf("<OPTION SELECTED VALUE=\"%ld\">", lastcall);
184 escputs(asctime(localtime(&lastcall)));
185 wprintf("</OPTION>\n");
187 wprintf("<OPTION VALUE=\"%ld\">", now);
188 escputs(asctime(localtime(&now)));
189 wprintf("</OPTION>\n");
191 wprintf("</SELECT></TD></TR>");
193 wprintf("<TR><TD>Auto-purge after days</TD><TD>"
194 "<INPUT TYPE=\"text\" NAME=\"purgedays\" VALUE=\"");
195 wprintf("%d", purgedays);
196 wprintf("\" MAXLENGTH=\"5\"></TD></TR>\n");
198 wprintf("</TABLE>\n");
200 wprintf("<INPUT type=\"submit\" NAME=\"action\" VALUE=\"OK\">\n"
201 "<INPUT type=\"submit\" NAME=\"action\" VALUE=\"Cancel\">\n"
202 "<BR><BR></FORM>\n");
204 wprintf("<A HREF=\"/dotgoto&room=%010ld.My%%20Citadel%%20Config\">",
206 wprintf("Click here to access the configuration room for ");
209 "(Contact information, Internet e-mail addresses, etc.)<BR>"
218 void edituser(void) {
222 if (strcasecmp(bstr("action"), "OK")) {
223 strcpy(message, "Edit user cancelled.");
228 serv_printf("ASUP %s|%s|%s|%s|%s|%s|%s|%s|%s|",
242 "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
243 "%s<BR><BR>\n", &buf[4]);
250 select_user_to_edit(message);
256 void create_user(void) {
258 char error_message[SIZ];
261 strcpy(username, bstr("username"));
263 serv_printf("CREU %s", username);
267 display_edituser(username);
270 sprintf(error_message,
271 "<IMG SRC=\"static/error.gif\" VALIGN=CENTER>"
272 "%s<BR><BR>\n", &buf[4]);
273 select_user_to_edit(error_message);