]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chancmds/bantimer.c
Merge.
[irc/quakenet/newserv.git] / chanserv / chancmds / bantimer.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: bantimer
5 * CMDLEVEL: QCMD_AUTHED
6 * CMDARGS: 2
7 * CMDDESC: Shows or changes the time after which bans are removed.
8 * CMDFUNC: csc_dobantimer
9 * CMDPROTO: int csc_dobantimer(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_dobantimer(void *source, int cargc, char **cargv) {
24 nick *sender=source;
25 chanindex *cip;
26 regchan *rcp;
27 int oldtimer;
28
29 if (cargc<1) {
30 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "bantimer");
31 return CMD_ERROR;
32 }
33
34 if (!(cip=cs_checkaccess(sender, cargv[0], CA_OPPRIV, NULL, "bantimer",
35 QPRIV_VIEWBANTIMER, 0)))
36 return CMD_ERROR;
37
38 rcp=cip->exts[chanservext];
39
40 if (cargc>1) {
41 if (!cs_checkaccess(sender, NULL, CA_MASTERPRIV, cip, "bantimer",
42 QPRIV_CHANGEBANTIMER, 0))
43 return CMD_ERROR;
44
45 oldtimer=rcp->banduration;
46 rcp->banduration=durationtolong(cargv[1]);
47
48 if (rcp->banduration<0)
49 rcp->banduration=0;
50
51 /* Arbitrary limit */
52 if (rcp->banduration > 31622400)
53 rcp->banduration = 31622400;
54
55 csdb_updatechannel(rcp);
56
57 cs_log(sender,"BANTIMER %s %s (%u -> %u)",cip->name->content,cargv[1],oldtimer,rcp->banduration);
58 chanservstdmessage(sender, QM_DONE);
59 cs_timerfunc(cip);
60 }
61
62 if (rcp->banduration)
63 chanservstdmessage(sender, QM_CHANBANAUTOREMOVE, cargv[0], longtoduration(rcp->banduration, 1));
64 else
65 chanservstdmessage(sender, QM_NOCHANBANAUTOREMOVE, cargv[0]);
66
67 return CMD_OK;
68}