]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/deopall.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Deops all users on channel.
8 * CMDFUNC: csc_dodeopall
9 * CMDPROTO: int csc_dodeopall(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: DEOPALL <channel>
11 * CMDHELP: Deops every user in the channel. Registered channel operators (+o on CHANLEV)
12 * CMDHELP: who are protected (via the +p flag in CHANLEV or CHANFLAGS) will not be deopped.
14 * CMDHELP: channel - channel to use
15 * CMDHELP: DEOPALL requires master (+m) access on the named channel.
18 #include "../chanserv.h"
19 #include "../../nick/nick.h"
20 #include "../../lib/flags.h"
21 #include "../../lib/irc_string.h"
22 #include "../../channel/channel.h"
23 #include "../../parser/parser.h"
24 #include "../../irc/irc.h"
25 #include "../../localuser/localuserchannel.h"
29 int csc_dodeopall(void *source
, int cargc
, char **cargv
) {
30 nick
*sender
=source
,*np
;
40 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "deopall");
44 if (!(cip
=cs_checkaccess(sender
, cargv
[0], CA_MASTERPRIV
, NULL
, "deopall",0, 0)))
47 rcp
=cip
->exts
[chanservext
];
50 localsetmodeinit(&changes
, cip
->channel
, chanservnick
);
52 for (i
=0,lp
=cip
->channel
->users
->content
;
53 i
<cip
->channel
->users
->hashsize
;i
++,lp
++) {
54 if (*lp
!=nouser
&& (*lp
& CUMODE_OP
)) {
55 if (!(np
=getnickbynumeric(*lp
)) ||
56 (!IsService(np
) && (!(rup
=getreguserfromnick(np
)) ||
57 !(rcup
=findreguseronchannel(rcp
, rup
)) || !(CUHasOpPriv(rcup
)) ||
58 !(CUIsProtect(rcup
) || CIsProtect(rcp
))))) {
59 localdosetmode_nick(&changes
, np
, MC_DEOP
);
64 localsetmodeflush(&changes
, 1);
67 cs_log(sender
,"DEOPALL %s",cip
->name
->content
);
68 chanservstdmessage(sender
, QM_DONE
);