summaryrefslogtreecommitdiff
path: root/src/modules/cs_tban.c
diff options
context:
space:
mode:
authoradam- <adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-06-26 20:01:26 +0000
committeradam- <adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-06-26 20:01:26 +0000
commit6b5786aa37f7197bde67a7faf7bf70001c50f26d (patch)
treec1544d2bfd793d20db6ab8edb16821ae378318cc /src/modules/cs_tban.c
parentdc8f7923f4c9cd685a338072bcc2bb351bf575d9 (diff)
Changed module callbacks to use new Timer API
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2338 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/modules/cs_tban.c')
-rw-r--r--src/modules/cs_tban.c45
1 files changed, 26 insertions, 19 deletions
diff --git a/src/modules/cs_tban.c b/src/modules/cs_tban.c
index 43c4395ee..160fd19ee 100644
--- a/src/modules/cs_tban.c
+++ b/src/modules/cs_tban.c
@@ -24,7 +24,6 @@
void mySendResponse(User *u, const char *channel, char *mask, const char *time);
void addBan(Channel *c, time_t timeout, char *banmask);
-int delBan(int argc, char **argv);
int canBanUser(Channel *c, User *u, User *u2);
void mAddLanguages();
@@ -167,6 +166,31 @@ void mySendResponse(User *u, const char *channel, char *mask, const char *time)
me->NoticeLang(s_ChanServ, u, TBAN_RESPONSE, mask, channel, time);
}
+class TempBan : public Timer
+{
+ private:
+ std::string chan;
+ std::string mask;
+
+ public:
+ TempBan(time_t seconds, const std::string &channel, const std::string &banmask) : Timer(seconds), chan(channel), mask(banmask) { }
+
+ void Tick(time_t ctime)
+ {
+ const char *av[3];
+ Channel *c;
+
+ av[0] = "-b";
+ av[1] = mask.c_str();
+
+ if ((c = findchan(chan.c_str())) && c->ci)
+ {
+ ircdproto->SendMode(whosends(c->ci), c->name, "-b %s", av[1]);
+ chan_set_modes(s_ChanServ, c, 2, av, 1);
+ }
+ }
+};
+
void addBan(Channel *c, time_t timeout, char *banmask)
{
const char *av[3];
@@ -181,24 +205,7 @@ void addBan(Channel *c, time_t timeout, char *banmask)
ircdproto->SendMode(whosends(c->ci), c->name, "+b %s", av[1]);
chan_set_modes(s_ChanServ, c, 2, av, 1);
- me->AddCallback("tban", time(NULL) + timeout, delBan, 2, cb);
-}
-
-int delBan(int argc, char **argv)
-{
- const char *av[3];
- Channel *c;
-
- av[0] = "-b";
- av[1] = argv[1];
-
- if ((c = findchan(argv[0])) && c->ci)
- {
- ircdproto->SendMode(whosends(c->ci), c->name, "-b %s", av[1]);
- chan_set_modes(s_ChanServ, c, 2, av, 1);
- }
-
- return MOD_CONT;
+ me->AddCallBack(new TempBan(timeout, c->name, banmask));
}
int canBanUser(Channel * c, User * u, User * u2)