X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_timedbans.cpp;h=2f4f040c06f67b910cc15155b088756aa815d4eb;hb=2c6c072c1f5f19d1471feb43fa94bba0030e5fb6;hp=fbaadbe1726e536fef7b99ed2bbab69db958edf5;hpb=17a3c190eb209877884eb0006461adfb873643b0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index fbaadbe17..2f4f040c0 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -26,9 +26,9 @@ using namespace std; #include "helperfuncs.h" #include "hashcomp.h" -Server *Srv; +static Server *Srv; -class TimedBan +class TimedBan : public classbase { public: std::string channel; @@ -44,10 +44,10 @@ class cmd_tban : public command_t public: cmd_tban () : command_t("TBAN", 0, 3) { - this->source = "m_timedbans.cpp"; + this->source = "m_timedbans.so"; } - void Handle (char **parameters, int pcnt, userrec *user) + void Handle (const char** parameters, int pcnt, userrec *user) { chanrec* channel = Srv->FindChannel(parameters[0]); if (channel) @@ -62,8 +62,8 @@ class cmd_tban : public command_t } for (timedbans::iterator i = TimedBanList.begin(); i < TimedBanList.end(); i++) { - irc::string listitem = i->mask.c_str(); - irc::string target = parameters[2]; + irc::string listitem = i->mask.c_str(); + irc::string target = parameters[2]; irc::string listchan = i->channel.c_str(); irc::string targetchan = parameters[0]; if ((listitem == target) && (listchan == targetchan)) @@ -83,7 +83,7 @@ class cmd_tban : public command_t char duration[MAXBUF]; snprintf(duration,MAXBUF,"%lu",Srv->CalcDuration(parameters[1])); std::string mask = parameters[2]; - char *setban[3]; + const char *setban[32]; setban[0] = parameters[0]; setban[1] = "+b"; setban[2] = parameters[2]; @@ -122,18 +122,23 @@ class ModuleTimedBans : public Module TimedBanList.clear(); } - virtual int OnDelBan(userrec* source, chanrec* chan, std::string banmask) + void Implements(char* List) { - for (timedbans::iterator i = TimedBanList.begin(); i < TimedBanList.end(); i++) - { - irc::string listitem = banmask.c_str(); - irc::string target = i->mask.c_str(); - if (listitem == target) - { - TimedBanList.erase(i); - break; - } - } + List[I_OnDelBan] = List[I_OnBackgroundTimer] = 1; + } + + virtual int OnDelBan(userrec* source, chanrec* chan, const std::string &banmask) + { + for (timedbans::iterator i = TimedBanList.begin(); i < TimedBanList.end(); i++) + { + irc::string listitem = banmask.c_str(); + irc::string target = i->mask.c_str(); + if (listitem == target) + { + TimedBanList.erase(i); + break; + } + } return 0; } @@ -152,10 +157,10 @@ class ModuleTimedBans : public Module if (cr) { Srv->SendChannelServerNotice(Srv->GetServerName(),cr,"NOTICE "+std::string(cr->name)+" :Timed ban on "+i->mask+" expired."); - char *setban[3]; - setban[0] = (char*)i->channel.c_str(); + const char *setban[3]; + setban[0] = i->channel.c_str(); setban[1] = "-b"; - setban[2] = (char*)i->mask.c_str(); + setban[2] = i->mask.c_str(); // kludge alert! // ::SendMode expects a userrec* to send the numeric replies // back to, so we create it a fake user that isnt in the user @@ -165,7 +170,7 @@ class ModuleTimedBans : public Module temp->fd = FD_MAGIC_NUMBER; temp->server = ""; Srv->SendMode(setban,3,temp); - delete temp; + DELETE(temp); } // we used to delete the item here, but we dont need to as the servermode above does it for us, break;