]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/banlist.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Displays all persistent bans on a channel.
8 * CMDFUNC: csc_dobanlist
9 * CMDPROTO: int csc_dobanlist(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: BANLIST <channel>
11 * CMDHELP: Displays a list of persistent and channel bans on the named channel. Each ban
12 * CMDHELP: is identified by a number which can be passed to a subsequent BANDEL command.
13 * CMDHELP: Note that the numbers can change if bans are added to or removed from the
14 * CMDHELP: channel. Where:
15 * CMDHELP: channel - the channel to use
16 * CMDHELP: BANLIST requires operator (+o) access on the named channel.
19 #include "../chanserv.h"
20 #include "../../nick/nick.h"
21 #include "../../lib/flags.h"
22 #include "../../lib/irc_string.h"
23 #include "../../channel/channel.h"
24 #include "../../parser/parser.h"
25 #include "../../irc/irc.h"
26 #include "../../localuser/localuserchannel.h"
30 int csc_dobanlist(void *source
, int cargc
, char **cargv
) {
41 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "banlist");
45 if(!(cip
=cs_checkaccess(sender
, cargv
[0], CA_OPPRIV
, NULL
, "banlist", 0, 0)))
48 rcp
=cip
->exts
[chanservext
];
50 if (rcp
->bans
|| (cip
->channel
&& cip
->channel
->bans
)) {
51 chanservstdmessage(sender
, QM_REGBANHEADER
, cip
->name
->content
);
52 for(rbp
=rcp
->bans
;rbp
;rbp
=rbp
->next
) {
53 rup
=findreguserbyID(rbp
->setby
);
54 chanservsendmessage(sender
," #%-2d %-29s %-18s %-15s %s",++i
,bantostring(rbp
->cbp
),
55 rbp
->expiry
?longtoduration(rbp
->expiry
-time(NULL
),0):"Permanent",
56 rup
?rup
->username
:"<unknown>",
57 rbp
->reason
?rbp
->reason
->content
:"");
60 for (cbp
=cip
->channel
->bans
;cbp
;cbp
=cbp
->next
) {
61 for (rbp
=rcp
->bans
;rbp
;rbp
=rbp
->next
) {
62 if (banequal(rbp
->cbp
, cbp
))
66 if (rcp
->banduration
) {
67 exp
=(cbp
->timeset
+ rcp
->banduration
) - time(NULL
);
71 chanservsendmessage(sender
, " #%-2d %-29s %-18s %-15s",++i
,bantostring(cbp
),
72 exp
? longtoduration(exp
,0) : "Permanent",
77 chanservstdmessage(sender
, QM_ENDOFLIST
);
79 chanservstdmessage(sender
, QM_NOBANS
, cip
->name
->content
);