]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chancmds/deopall.c
Fixed up nick module so it clears the list of nicks authed to each userid when it...
[irc/quakenet/newserv.git] / chanserv / chancmds / deopall.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: deopall
5 * CMDLEVEL: QCMD_AUTHED
6 * CMDARGS: 1
7 * CMDDESC: Deops all users on channel.
8 * CMDFUNC: csc_dodeopall
9 * CMDPROTO: int csc_dodeopall(void *source, int cargc, char **cargv);
10 */
11
12#include "../chanserv.h"
13#include "../../nick/nick.h"
14#include "../../lib/flags.h"
15#include "../../lib/irc_string.h"
16#include "../../channel/channel.h"
17#include "../../parser/parser.h"
18#include "../../irc/irc.h"
19#include "../../localuser/localuserchannel.h"
20#include <string.h>
21#include <stdio.h>
22
23int csc_dodeopall(void *source, int cargc, char **cargv) {
24 nick *sender=source,*np;
25 reguser *rup;
26 regchanuser *rcup;
27 regchan *rcp;
28 chanindex *cip;
29 unsigned long *lp;
30 int i;
31 modechanges changes;
32
33 if (cargc<1) {
34 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "deopall");
35 return CMD_ERROR;
36 }
37
38 if (!(cip=cs_checkaccess(sender, cargv[0], CA_MASTERPRIV, NULL, "deopall",0, 0)))
39 return CMD_ERROR;
40
41 rcp=cip->exts[chanservext];
42
43 if (cip->channel) {
44 localsetmodeinit(&changes, cip->channel, chanservnick);
45
46 for (i=0,lp=cip->channel->users->content;
47 i<cip->channel->users->hashsize;i++,lp++) {
48 if (*lp!=nouser && (*lp & CUMODE_OP)) {
49 if (!(np=getnickbynumeric(*lp)) ||
50 (!IsService(np) && (!(rup=getreguserfromnick(np)) ||
51 !(rcup=findreguseronchannel(rcp, rup)) || !(CUHasOpPriv(rcup)) ||
52 !(CUIsProtect(rcup) || CIsProtect(rcp))))) {
53 localdosetmode_nick(&changes, np, MC_DEOP);
54 }
55 }
56 }
57
58 localsetmodeflush(&changes, 1);
59 }
60
61 cs_log(sender,"DEOPALL %s",cip->name->content);
62 chanservstdmessage(sender, QM_DONE);
63 return CMD_OK;
64}