]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/usercmds/lastreg.c
Merge pull request #132 from retropc/lua_country
[irc/quakenet/newserv.git] / chanserv / usercmds / lastreg.c
1 /* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: lastreg
5 * CMDLEVEL: QCMD_OPER
6 * CMDARGS: 1
7 * CMDDESC: List last N registered accounts
8 * CMDFUNC: csa_dolastreg
9 * CMDPROTO: int csa_dolastreg(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: lastreg [N]
11 * CMDHELP: Shows list of most recently registered accounts
12 */
13
14 #include "../chanserv.h"
15 #include "../../lib/irc_string.h"
16
17 #include <stdio.h>
18 #include <string.h>
19
20 int csa_dolastreg(void *source, int cargc, char **cargv) {
21 reguser *rup;
22 reguser *r;
23 nick *sender=source;
24 char *endptr;
25 char tbuf[TIMELEN];
26 char tbuf2[TIMELEN];
27 char *suspended;
28 unsigned int limit=10;
29 unsigned int userID=lastuserID;
30 int count=0;
31
32 if (!(rup=getreguserfromnick(sender)))
33 return CMD_ERROR;
34 if (cargc > 0) {
35 limit=strtol(cargv[0], &endptr, 10);
36 if ((cargv[0] == endptr) || (*endptr != '\0')) {
37 limit=10;
38 chanservsendmessage(sender, "Value '%s' is not valid. Using default: %u", cargv[0], limit);
39 }
40 else if (limit > MAX_LASTREG) {
41 limit=MAX_LASTREG;
42 chanservsendmessage(sender, "Value '%s' is too high. Using maximum: %u.", cargv[0], MAX_LASTREG);
43 }
44 }
45
46 chanservsendmessage(sender, "%-9s %-19s %-18s %-10s %-19s %s", "ID:", "Created TS:", "Username:", "Suspended:", "Last auth TS:", "last user@host");
47 while (count < limit) {
48 r=findreguserbyID(userID);
49 if (!r) {
50 if (userID == 0)
51 break;
52 userID--;
53 continue;
54 }
55 q9strftime(tbuf, sizeof(tbuf), r->created);
56 if (r->lastauth > 0)
57 q9strftime(tbuf2, sizeof(tbuf2), r->lastauth);
58 else
59 strcpy(tbuf2, "-");
60 suspended = (r->suspendtime > 0) ? "Suspended" : "";
61 chanservsendmessage(sender, "%-9u %-19s %-18s %-10s %-19s %s", userID, tbuf, r->username, suspended, tbuf2, r->lastuserhost ? r->lastuserhost->content : "");
62 count++;
63 if (userID == 0)
64 break;
65 userID--;
66 }
67 chanservstdmessage(sender, QM_ENDOFLIST);
68 return CMD_OK;
69 }