00001
00002
00003
00009 #include "webcit.h"
00010
00011
00012
00016 void who_inner_div(void) {
00017 char buf[SIZ], user[SIZ], room[SIZ], host[SIZ],
00018 realroom[SIZ], realhost[SIZ];
00019 int sess;
00020 time_t last_activity;
00021 time_t now;
00022 int bg = 0;
00023
00024 wprintf("<table class=\"who_background\">"
00025 "<tr>\n");
00026 wprintf("<th colspan=\"3\"> </th>\n");
00027 wprintf("<th>%s</th>\n", _("User name"));
00028 wprintf("<th>%s</th>", _("Room"));
00029 wprintf("<th>%s</th>\n</tr>\n", _("From host"));
00030
00031 serv_puts("TIME");
00032 serv_getln(buf, sizeof buf);
00033 if (buf[0] == '2') {
00034 now = extract_long(&buf[4], 0);
00035 }
00036 else {
00037 now = time(NULL);
00038 }
00039
00040 serv_puts("RWHO");
00041 serv_getln(buf, sizeof buf);
00042 if (buf[0] == '1') {
00043 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00044 sess = extract_int(buf, 0);
00045 extract_token(user, buf, 1, '|', sizeof user);
00046 extract_token(room, buf, 2, '|', sizeof room);
00047 extract_token(host, buf, 3, '|', sizeof host);
00048 extract_token(realroom, buf, 9, '|', sizeof realroom);
00049 extract_token(realhost, buf, 10, '|', sizeof realhost);
00050 last_activity = extract_long(buf, 5);
00051
00052 bg = 1 - bg;
00053 wprintf("<tr bgcolor=\"#%s\">",
00054 (bg ? "DDDDDD" : "FFFFFF")
00055 );
00056
00057
00058 wprintf("<td>");
00059 if ((WC->is_aide) &&
00060 (sess != WC->ctdl_pid)) {
00061 wprintf(" <a href=\"terminate_session?which_session=%d", sess);
00062 wprintf("\" onClick=\"return ConfirmKill();\">%s</a>", _("(kill)"));
00063 }
00064 if (sess == WC->ctdl_pid) {
00065 wprintf(" <a href=\"edit_me\">%s</a>", _("(edit)"));
00066 }
00067 wprintf("</td>");
00068
00070 wprintf("<td><a href=\"display_page?recp=");
00071 urlescputs(user);
00072 wprintf("\">"
00073 "<img align=\"middle\" "
00074 "src=\"static/citadelchat_24x.gif\" "
00075 "alt=\"(p)\""
00076 " border=\"0\" /></a> ");
00077 wprintf("</td>");
00078
00080 wprintf("<td>");
00081 if ((now - last_activity) > 900L) {
00082 wprintf(" "
00083 "<img align=\"middle\" "
00084 "src=\"static/inactiveuser_24x.gif\" "
00085 "alt=\"(idle)\" border=\"0\" />");
00086 }
00087 else {
00088 wprintf(" "
00089 "<img align=\"middle\" "
00090 "src=\"static/activeuser_24x.gif\" "
00091 "alt=\"(active)\" border=\"0\" />");
00092 }
00093 wprintf("</td>\n<td>");
00094
00095
00096
00098 wprintf("<a href=\"showuser?who=");
00099 urlescputs(user);
00100 wprintf("\">");
00101 escputs(user);
00102 wprintf("</a>");
00103
00105 wprintf("</td>\n\t<td>");
00106 escputs(room);
00107 if (strlen(realroom) > 0) {
00108 wprintf("<br /><i>");
00109 escputs(realroom);
00110 wprintf("</i>");
00111 }
00112 wprintf("</td>\n\t<td>");
00113
00115 escputs(host);
00116 if (strlen(realhost) > 0) {
00117 wprintf("<br /><i>");
00118 escputs(realhost);
00119 wprintf("</i>");
00120 }
00121 wprintf("</td>\n</tr>");
00122 }
00123 }
00124 wprintf("</table>");
00125 }
00126
00127
00131 void who(void)
00132 {
00133 char title[256];
00134
00135 output_headers(1, 1, 2, 0, 0, 0);
00136
00137 wprintf("<script type=\"text/javascript\">\n"
00138 "function ConfirmKill() { \n"
00139 "return confirm('%s');\n"
00140 "}\n"
00141 "</script>\n", _("Do you really want to kill this session?")
00142 );
00143
00144 wprintf("<div id=\"banner\">\n");
00145 wprintf("<table class=\"who_banner\"><tr><td>");
00146 wprintf("<img src=\"static/usermanag_48x.gif\" alt=\" \" "
00147 "align=middle "
00148 ">");
00149 wprintf("<span class=\"titlebar\"> ");
00150
00151 snprintf(title, sizeof title, _("Users currently on %s"), serv_info.serv_humannode);
00152 escputs(title);
00153
00154 wprintf("</span></td><td align=right>");
00155 offer_start_page();
00156 wprintf("</td></tr></table>\n");
00157 wprintf("</div>\n");
00158
00159 wprintf("<div id=\"content\">\n");
00160
00161 wprintf("<div style=\"display:inline\" id=\"fix_scrollbar_bug\">");
00162 who_inner_div();
00163 wprintf("</div>\n");
00164
00165 wprintf("<div id=\"instructions\" align=center>");
00166 wprintf(_("Click on a name to read user info. Click on %s "
00167 "to send an instant message to that user."),
00168 "<img align=\"middle\" src=\"static/citadelchat_16x.gif\" alt=\"(p)\" border=\"0\">"
00169 );
00170 wprintf("</div>\n");
00171
00179 wprintf(
00180 "<script type=\"text/javascript\"> "
00181 " new Ajax.PeriodicalUpdater('fix_scrollbar_bug', 'who_inner_html', "
00182 " { method: 'get', frequency: 30 } ); "
00183 "</script> \n"
00184 );
00185 wDumpContent(1);
00186 }
00187
00191 void terminate_session(void)
00192 {
00193 char buf[SIZ];
00194
00195 serv_printf("TERM %s", bstr("which_session"));
00196 serv_getln(buf, sizeof buf);
00197 who();
00198 }
00199
00200
00204 void edit_me(void)
00205 {
00206 char buf[SIZ];
00207
00208 if (strlen(bstr("change_room_name_button")) > 0) {
00209 serv_printf("RCHG %s", bstr("fake_roomname"));
00210 serv_getln(buf, sizeof buf);
00211 http_redirect("who");
00212 } else if (strlen(bstr("change_host_name_button")) > 0) {
00213 serv_printf("HCHG %s", bstr("fake_hostname"));
00214 serv_getln(buf, sizeof buf);
00215 http_redirect("who");
00216 } else if (strlen(bstr("change_user_name_button")) > 0) {
00217 serv_printf("UCHG %s", bstr("fake_username"));
00218 serv_getln(buf, sizeof buf);
00219 http_redirect("who");
00220 } else if (strlen(bstr("cancel_button")) > 0) {
00221 http_redirect("who");
00222 } else {
00223 output_headers(1, 1, 0, 0, 0, 0);
00224
00225 wprintf("<div id=\"banner\">\n");
00226 wprintf("<table class=\"who_banner\"><tr><td>");
00227 wprintf("<span class=\"titlebar\">");
00228 wprintf(_("Edit your session display"));
00229 wprintf("</span></td></tr></table>\n");
00230 wprintf("</div>\n<div id=\"content\">\n");
00231
00232 wprintf(_("This screen allows you to change the way your "
00233 "session appears in the 'Who is online' listing. "
00234 "To turn off any 'fake' name you've previously "
00235 "set, simply click the appropriate 'change' button "
00236 "without typing anything in the corresponding box. "));
00237 wprintf("<br />\n");
00238
00239 wprintf("<form method=\"POST\" action=\"edit_me\">\n");
00240
00241 wprintf("<table border=0 width=100%%>\n");
00242
00243 wprintf("<tr><td><b>");
00244 wprintf(_("Room name:"));
00245 wprintf("</b></td>\n<td>");
00246 wprintf("<input type=\"text\" name=\"fake_roomname\" maxlength=\"64\">\n");
00247 wprintf("</td>\n<td align=center>");
00248 wprintf("<input type=\"submit\" name=\"change_room_name_button\" value=\"%s\">",
00249 _("Change room name"));
00250 wprintf("</td>\n</tr>\n");
00251
00252 wprintf("<tr><td><b>");
00253 wprintf(_("Host name:"));
00254 wprintf("</b></td><td>");
00255 wprintf("<input type=\"text\" name=\"fake_hostname\" maxlength=\"64\">\n");
00256 wprintf("</td>\n<td align=center>");
00257 wprintf("<input type=\"submit\" name=\"change_host_name_button\" value=\"%s\">",
00258 _("Change host name"));
00259 wprintf("</td>\n</tr>\n");
00260
00261 if (WC->is_aide) {
00262 wprintf("<tr><td><b>");
00263 wprintf(_("User name:"));
00264 wprintf("</b></td><td>");
00265 wprintf("<input type=\"text\" name=\"fake_username\" maxlength=\"64\">\n");
00266 wprintf("</td>\n<td align=center>");
00267 wprintf("<input type=\"submit\" name \"change_user_name_button\" value=\"%s\">",
00268 _("Change user name"));
00269 wprintf("</td>\n</tr>\n");
00270 }
00271 wprintf("<tr><td> </td><td> </td><td align=center>");
00272 wprintf("<input type=\"submit\" name=\"cancel_button\" value=\"%s\">",
00273 _("Cancel"));
00274 wprintf("</td></tr></table>\n");
00275 wprintf("</form></center>\n");
00276 wDumpContent(1);
00277 }
00278 }
00279
00280