]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/permban.c
Merge
[irc/quakenet/newserv.git] / chanserv / chancmds / permban.c
1 /* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: permban
5 * CMDLEVEL: QCMD_AUTHED
6 * CMDARGS: 3
7 * CMDDESC: Permanently bans a hostmask on a channel.
8 * CMDFUNC: csc_dopermban
9 * CMDPROTO: int csc_dopermban(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
23 int csc_dopermban(void *source, int cargc, char **cargv) {
24 nick *sender=source;
25 chanindex *cip;
26 regban *rbp;
27 regchan *rcp;
28 reguser *rup=getreguserfromnick(sender);
29
30 if (cargc<2) {
31 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "permban");
32 return CMD_ERROR;
33 }
34
35 if (!(cip=cs_checkaccess(sender, cargv[0], CA_MASTERPRIV, NULL, "permban",0, 0)))
36 return CMD_ERROR;
37
38 rcp=cip->exts[chanservext];
39
40 rbp=getregban();
41 rbp->ID=++lastbanID;
42 rbp->cbp=makeban(cargv[1]);
43 rbp->setby=rup->ID;
44 rbp->expiry=0;
45 if (cargc>2)
46 rbp->reason=getsstring(cargv[2],200);
47 else
48 rbp->reason=NULL;
49 rbp->next=rcp->bans;
50 rcp->bans=rbp;
51
52 cs_setregban(cip, rbp);
53 csdb_createban(rcp, rbp);
54
55 chanservstdmessage(sender, QM_DONE);
56 return CMD_OK;
57 }