]>
jfr.im git - irc/quakenet/newserv.git/blob - gline/gline_commands.c
7 #include <sys/socket.h>
8 #include <netinet/in.h>
11 #include "../control/control.h"
12 #include "../nick/nick.h"
13 #include "../localuser/localuserchannel.h"
14 #include "../core/hooks.h"
15 #include "../server/server.h"
16 #include "../parser/parser.h"
17 #include "../core/schedule.h"
18 #include "../lib/array.h"
19 #include "../lib/base64.h"
20 #include "../lib/irc_string.h"
21 #include "../lib/splitline.h"
26 registercontrolhelpcmd("glstats",NO_OPER
,0,&gline_glstats
,"Usage: glstats.");
30 deregistercontrolcmd("glstats", gline_glstats
);
33 int gline_glstats(void* source
, int cargc
, char** cargv
) {
34 nick
* sender
= (nick
*)source
;
37 time_t curtime
= time(0);
38 int glinecount
= 0, hostglinecount
= 0, ipglinecount
= 0, badchancount
= 0, rnglinecount
= 0;
39 int deactivecount
=0, activecount
= 0;
41 for (g
= glinelist
; g
; g
= sg
) {
44 if (g
->lifetime
<= curtime
)
47 if (g
->flags
& GLINE_ACTIVE
) {
53 if(g
->flags
& GLINE_IPMASK
)
55 else if (g
->flags
& (GLINE_HOSTMASK
| GLINE_HOSTEXACT
))
57 else if (g
->flags
& GLINE_REALNAME
)
59 else if (g
->flags
& GLINE_BADCHAN
)
64 controlreply(sender
, "Total G-Lines set: %d", glinecount
);
65 controlreply(sender
, "Hostmask G-Lines: %d", hostglinecount
);
66 controlreply(sender
, "IPMask G-Lines: %d", ipglinecount
);
67 controlreply(sender
, "Channel G-Lines: %d", badchancount
);
68 controlreply(sender
, "Realname G-Lines: %d", rnglinecount
);
70 controlreply(sender
, "Active G-Lines: %d", activecount
);
71 controlreply(sender
, "De-Active G-Lines: %d", deactivecount
);
73 /* TODO show top 10 creators here */
74 /* TODO show unique creators count */
75 /* TODO show glines per create %8.1f", ccount?((float)gcount/(float)ccount):0 */