-/*
- * $Id$
- *
- * Display a list of all accounts on a Citadel system.
- *
- */
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <limits.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <string.h>
-#include <pwd.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <pthread.h>
-#include <signal.h>
#include "webcit.h"
+/*
+ * structure to keep namelists in
+ */
struct namelist {
- struct namelist *next;
- char name[32];
+ struct namelist *next; /**< next item of the linked list */
+ char name[32]; /**< name of the userentry */
};
/*
*/
void userlist(void)
{
- char buf[SIZ];
- char fl[SIZ];
- struct tm *tmbuf;
- long lc;
+ char buf[256];
+ char fl[256];
+ char title[256];
+ struct tm tmbuf;
+ time_t lc;
struct namelist *bio = NULL;
struct namelist *bptr;
int has_bio;
int bg = 0;
serv_puts("LBIO");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1')
- while (serv_gets(buf), strcmp(buf, "000")) {
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
bptr = (struct namelist *) malloc(sizeof(struct namelist));
bptr->next = bio;
strcpy(bptr->name, buf);
bio = bptr;
}
- output_headers(1, 1, 2, 0, 0, 0, 0);
- wprintf("<div id=\"banner\">\n"
- "<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>"
- "<SPAN CLASS=\"titlebar\">User list for ");
- escputs(serv_info.serv_humannode);
- wprintf("</SPAN>"
- "</TD></TR></TABLE>\n"
- "</div>\n<div id=\"content\">\n"
- );
+ output_headers(1, 1, 2, 0, 0, 0);
+ wc_printf("<div id=\"banner\">\n");
+ wc_printf("<h1>");
+ snprintf(title, sizeof title, _("User list for %s"), ChrPtr(WC->serv_info->serv_humannode));
+ escputs(title);
+ wc_printf("</h1>");
+ wc_printf("</div>");
+
+ wc_printf("<div id=\"content\" class=\"service\">\n");
serv_puts("LIST");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] != '1') {
- wprintf("<EM>%s</EM><br />\n", &buf[4]);
+ wc_printf("<em>%s</em><br>\n", &buf[4]);
goto DONE;
}
- wprintf("<div style=\"margin-right:1px\">"
- "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
- wprintf("<TR><TH>User Name</TH><TH>Number</TH><TH>Access Level</TH>");
- wprintf("<TH>Last Login</TH><TH>Total Logins</TH><TH>Total Posts</TH></TR>\n");
-
- while (serv_gets(buf), strcmp(buf, "000")) {
- extract(fl, buf, 0);
+ wc_printf("<table class=\"userlist_background\"><tr><td>\n");
+ wc_printf("<tr><th>%s</th><th>%s</th><th>%s</th>"
+ "<th>%s</th><th>%s</th><th>%s</th></tr>",
+ _("User Name"),
+ _("Number"),
+ _("Access Level"),
+ _("Last Login"),
+ _("Total Logins"),
+ _("Total Posts"));
+
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ extract_token(fl, buf, 0, '|', sizeof fl);
has_bio = 0;
for (bptr = bio; bptr != NULL; bptr = bptr->next) {
if (!strcasecmp(fl, bptr->name))
has_bio = 1;
}
bg = 1 - bg;
- wprintf("<TR BGCOLOR=\"#%s\"><TD>",
+ wc_printf("<tr bgcolor=\"#%s\"><td>",
(bg ? "DDDDDD" : "FFFFFF")
);
if (has_bio) {
- wprintf("<A HREF=\"/showuser&who=");
+ wc_printf("<a href=\"showuser?who=");
urlescputs(fl);
- wprintf("\">");
+ wc_printf("\">");
escputs(fl);
- wprintf("</A>");
+ wc_printf("</A>");
} else {
escputs(fl);
}
- wprintf("</TD><TD>%ld</TD><TD>%d</TD><TD>",
+ wc_printf("</td><td>%ld</td><td>%d</td><td>",
extract_long(buf, 2),
extract_int(buf, 1));
lc = extract_long(buf, 3);
- tmbuf = (struct tm *) localtime(&lc);
- wprintf("%02d/%02d/%04d ",
- (tmbuf->tm_mon + 1),
- tmbuf->tm_mday,
- (tmbuf->tm_year + 1900));
+ localtime_r(&lc, &tmbuf);
+ wc_printf("%02d/%02d/%04d ",
+ (tmbuf.tm_mon + 1),
+ tmbuf.tm_mday,
+ (tmbuf.tm_year + 1900));
- wprintf("</TD><TD>%ld</TD><TD>%5ld</TD></TR>\n",
+ wc_printf("</td><td>%ld</td><td>%5ld</td></tr>\n",
extract_long(buf, 4), extract_long(buf, 5));
}
- wprintf("</table></div>\n");
+ wc_printf("</table>\n");
DONE: wDumpContent(1);
}
*/
void showuser(void)
{
- char who[SIZ];
- char buf[SIZ];
+ char who[256];
+ char buf[256];
int have_pic;
strcpy(who, bstr("who"));
- output_headers(1, 1, 2, 0, 0, 0, 0);
- wprintf("<div id=\"banner\">\n"
- "<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>"
- "<SPAN CLASS=\"titlebar\">User profile</SPAN>"
- "</TD></TR></TABLE>\n"
- "</div>\n<div id=\"content\">\n"
- );
+ output_headers(1, 1, 2, 0, 0, 0);
+ wc_printf("<div id=\"banner\">\n");
+ wc_printf("<img src=\"static/icons/essen/32x32/account.png\">");
+ wc_printf("<h1>");
+ wc_printf(_("User profile"));
+ wc_printf("</h1>");
+ wc_printf("</div>");
+
+ wc_printf("<div id=\"content\" class=\"service\">\n");
- wprintf("<div style=\"margin-right:1px\">"
- "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
+ wc_printf("<table class=\"userlist_background\"><tr><td>\n");
serv_printf("OIMG _userpic_|%s", who);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
have_pic = 1;
serv_puts("CLOS");
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
} else {
have_pic = 0;
}
- wprintf("<CENTER><TABLE><TR><TD>");
+ wc_printf("<center><table><tr><td>");
if (have_pic == 1) {
- wprintf("<IMG SRC=\"/image&name=_userpic_&parm=");
+ wc_printf("<img src=\"image?name=_userpic_&parm=");
urlescputs(who);
- wprintf("\">");
+ wc_printf("\">");
}
- wprintf("</TD><TD><H1>%s</H1></TD></TR></TABLE></CENTER>\n", who);
+ wc_printf("</td><td><h1>");
+ escputs(who);
+ wc_printf("</h1></td></tr></table></center>\n");
serv_printf("RBIO %s", who);
- serv_gets(buf);
+ serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
- fmout(NULL, "JUSTIFY");
+ fmout("JUSTIFY");
}
- wprintf("<br /><A HREF=\"/display_page&recp=");
+ wc_printf("<br><a href=\"display_page?recp=");
urlescputs(who);
- wprintf("\">"
- "<IMG SRC=\"/static/page.gif\" ALIGN=MIDDLE BORDER=0>"
- " "
- "Click here to send an instant message to ");
- escputs(who);
- wprintf("</A>\n");
-
- wprintf("</td></tr></table></div>\n");
+ wc_printf("\">"
+ "<img src=\"static/icons/essen/16x16/chat.png\" "
+ "align=middle border=0> ");
+ snprintf(buf, sizeof buf, _("Click here to send an instant message to %s"), who);
+ escputs(buf);
+ wc_printf("</a>\n");
+
+ wc_printf("</td></tr></table>\n");
wDumpContent(1);
}
+
+void
+InitModule_USERLIST
+(void)
+{
+ WebcitAddUrlHandler(HKEY("userlist"), "", 0, userlist, 0);
+ WebcitAddUrlHandler(HKEY("showuser"), "", 0, showuser, 0);
+}