who.c

00001 /*
00002  * $Id: who.c 5147 2007-05-08 15:36:22Z ajc $
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 

Generated on Wed Jun 20 23:13:11 2007 for webcit by  doxygen 1.5.2