]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_messageflood.cpp
WriteChannel* functions and ChanExceptSender* functions are now methods of chanrec...
[user/henk/code/inspircd.git] / src / modules / m_messageflood.cpp
index 8f310f4b2e9797ec3f117f16287501431f389ddb..6079eb47b733c27b9ebdf421836ae57ddbf77163 100644 (file)
@@ -88,6 +88,21 @@ class MsgFlood : public ModeHandler
  public:
        MsgFlood() : ModeHandler('f', 1, 0, false, MODETYPE_CHANNEL, false) { }
 
+        ModePair ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter)
+        {
+               floodsettings* x;
+               if (channel->GetExt("flood",x))
+                       return std::make_pair(true, (x->ban ? "*" : "")+ConvToStr(x->lines)+":"+ConvToStr(x->secs));
+                else
+                        return std::make_pair(false, parameter);
+        }
+
+       bool CheckTimeStamp(time_t theirs, time_t ours, const std::string &their_param, const std::string &our_param, chanrec* channel)
+       {
+               /* When TS is equal, the alphabetically later one wins */
+               return (their_param < our_param);
+       }
+
        ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string &parameter, bool adding)
        {
                floodsettings *f;
@@ -195,12 +210,12 @@ class ModuleMsgFlood : public Module
                                        f->clear(user);
                                        if (f->ban)
                                        {
-                                               char* parameters[3];
+                                               const char* parameters[3];
                                                parameters[0] = dest->name;
                                                parameters[1] = "+b";
                                                parameters[2] = user->MakeWildHost();
                                                Srv->SendMode(parameters,3,user);
-                                                std::deque<std::string> n;
+                                               std::deque<std::string> n;
                                                /* Propogate the ban to other servers.
                                                 * We dont know what protocol we may be using,
                                                 * so this event is picked up by our protocol
@@ -213,7 +228,7 @@ class ModuleMsgFlood : public Module
                                                Event rmode((char *)&n, NULL, "send_mode");
                                                rmode.Send();
                                        }
-                                       Srv->KickUser(NULL, user, dest, "Channel flood triggered (mode +f)");
+                                       dest->ServerKickUser(user, "Channel flood triggered (mode +f)", true);
                                }
                        }
                }