]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chancmds/unbanmask.c
docs: Change section title.
[irc/quakenet/newserv.git] / chanserv / chancmds / unbanmask.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: unbanmask
5 * CMDLEVEL: QCMD_AUTHED
6 * CMDARGS: 2
7 * CMDDESC: Removes bans matching a particular mask from a channel.
8 * CMDFUNC: csc_dounbanmask
9 * CMDPROTO: int csc_dounbanmask(void *source, int cargc, char **cargv);
1e32d528 10 * CMDHELP: Usage: UNBANMASK <channel> <mask>
11 * CMDHELP: Removes any bans on the channel which are overlapped by the named mask. Can
12 * CMDHELP: remove both channel bans and registered bans. Where:
13 * CMDHELP: channel - channel to use
14 * CMDHELP: mask - mask to remove. Any ban subsumed by this mask will be removed. For
15 * CMDHELP: example, UNBANMASK *!*@*.isp.net would remove *!*@host1.isp.net and
16 * CMDHELP: *!*@host2.isp.net and *!user@*.isp.net.
17 * CMDHELP: UNBANMASK requires operator (+o) access on the named channel.
18 * CMDHELP: Removing registered bans requires master (+m) access on the named channel.
1dd6d55d 19 */
20
21#include "../chanserv.h"
22#include "../../nick/nick.h"
23#include "../../lib/flags.h"
24#include "../../lib/irc_string.h"
25#include "../../channel/channel.h"
26#include "../../parser/parser.h"
27#include "../../irc/irc.h"
28#include "../../localuser/localuserchannel.h"
29#include <string.h>
30#include <stdio.h>
31
b08b920b
CP
32static int banoverlap_wrapper(void *arg, struct chanban *ban) {
33 return banoverlap(arg, ban);
34}
35
1dd6d55d 36int csc_dounbanmask(void *source, int cargc, char **cargv) {
37 nick *sender=source;
38 chanindex *cip;
336765cd 39 struct chanban *theban;
1dd6d55d 40
41 if (cargc<2) {
42 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "unbanmask");
43 return CMD_ERROR;
44 }
45
46 if (!(cip=cs_checkaccess(sender, cargv[0], CA_OPPRIV, NULL, "unbanmask", 0, 0)))
47 return CMD_ERROR;
48
1dd6d55d 49 theban=makeban(cargv[1]);
336765cd 50 /* nice cast here */
b08b920b 51 cs_unbanfn(sender, cip, banoverlap_wrapper, theban, 1, 0);
336765cd 52 cs_log(sender,"UNBANMASK %s",bantostring(theban));
bf8c8dd4 53 freechanban(theban);
1dd6d55d 54
1dd6d55d 55 chanservstdmessage(sender, QM_DONE);
56 return CMD_OK;
57}