mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-21 08:29:02 -04:00
Port to new API (last mode that has akward parameters done, yay!)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4224 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
8be30d2589
commit
9d8022a065
@ -83,30 +83,18 @@ class floodsettings
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ModuleMsgFlood : public Module
|
class MsgFlood : public ModeHandler
|
||||||
{
|
{
|
||||||
Server *Srv;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
MsgFlood() : ModeHandler('f', 1, 0, false, MODETYPE_CHANNEL, false) { }
|
||||||
|
|
||||||
ModuleMsgFlood(Server* Me)
|
ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
|
||||||
: Module::Module(Me)
|
|
||||||
{
|
{
|
||||||
Srv = Me;
|
if (adding)
|
||||||
Srv->AddExtendedMode('f',MT_CHANNEL,false,1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list ¶ms)
|
|
||||||
{
|
{
|
||||||
if ((modechar == 'f') && (type == MT_CHANNEL))
|
|
||||||
{
|
|
||||||
if (mode_on)
|
|
||||||
{
|
|
||||||
std::string FloodParams = params[0];
|
|
||||||
chanrec* c = (chanrec*)target;
|
|
||||||
char ndata[MAXBUF];
|
char ndata[MAXBUF];
|
||||||
char* data = ndata;
|
char* data = ndata;
|
||||||
strlcpy(ndata,FloodParams.c_str(),MAXBUF);
|
strlcpy(ndata,parameter.c_str(),MAXBUF);
|
||||||
char* lines = data;
|
char* lines = data;
|
||||||
char* secs = NULL;
|
char* secs = NULL;
|
||||||
bool ban = false;
|
bool ban = false;
|
||||||
@ -137,39 +125,55 @@ class ModuleMsgFlood : public Module
|
|||||||
int nsecs = atoi(secs);
|
int nsecs = atoi(secs);
|
||||||
if ((nlines<1) || (nsecs<1))
|
if ((nlines<1) || (nsecs<1))
|
||||||
{
|
{
|
||||||
WriteServ(user->fd,"608 %s %s :Invalid flood parameter",user->nick,c->name);
|
WriteServ(source->fd,"608 %s %s :Invalid flood parameter",source->nick,channel->name);
|
||||||
return 0;
|
parameter = "";
|
||||||
|
return MODEACTION_DENY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!c->GetExt("flood"))
|
if (!channel->GetExt("flood"))
|
||||||
{
|
{
|
||||||
floodsettings *f = new floodsettings(ban,nsecs,nlines);
|
floodsettings *f = new floodsettings(ban,nsecs,nlines);
|
||||||
c->Extend("flood",(char*)f);
|
channel->Extend("flood",(char*)f);
|
||||||
|
return MODEACTION_ALLOW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WriteServ(user->fd,"608 %s %s :Invalid flood parameter",user->nick,c->name);
|
WriteServ(source->fd,"608 %s %s :Invalid flood parameter",source->nick,channel->name);
|
||||||
return 0;
|
parameter = "";
|
||||||
|
return MODEACTION_DENY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (channel->GetExt("flood"))
|
||||||
|
{
|
||||||
|
floodsettings *f = (floodsettings*)channel->GetExt("flood");
|
||||||
|
DELETE(f);
|
||||||
|
channel->Shrink("flood");
|
||||||
|
return MODEACTION_ALLOW;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return MODEACTION_DENY;
|
||||||
}
|
}
|
||||||
else
|
};
|
||||||
|
|
||||||
|
class ModuleMsgFlood : public Module
|
||||||
{
|
{
|
||||||
chanrec* c = (chanrec*)target;
|
Server *Srv;
|
||||||
if (c->GetExt("flood"))
|
MsgFlood* mf;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
ModuleMsgFlood(Server* Me)
|
||||||
|
: Module::Module(Me)
|
||||||
{
|
{
|
||||||
floodsettings *f = (floodsettings*)c->GetExt("flood");
|
Srv = Me;
|
||||||
DELETE(f);
|
mf = new MsgFlood();
|
||||||
c->Shrink("flood");
|
Srv->AddMode(mf, 'f');
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessMessages(userrec* user,chanrec* dest, const std::string &text)
|
void ProcessMessages(userrec* user,chanrec* dest, const std::string &text)
|
||||||
@ -226,7 +230,7 @@ class ModuleMsgFlood : public Module
|
|||||||
|
|
||||||
void Implements(char* List)
|
void Implements(char* List)
|
||||||
{
|
{
|
||||||
List[I_On005Numeric] = List[I_OnExtendedMode] = List[I_OnChannelDelete] = List[I_OnUserNotice] = List[I_OnUserMessage] = 1;
|
List[I_On005Numeric] = List[I_OnChannelDelete] = List[I_OnUserNotice] = List[I_OnUserMessage] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void On005Numeric(std::string &output)
|
virtual void On005Numeric(std::string &output)
|
||||||
@ -236,6 +240,7 @@ class ModuleMsgFlood : public Module
|
|||||||
|
|
||||||
virtual ~ModuleMsgFlood()
|
virtual ~ModuleMsgFlood()
|
||||||
{
|
{
|
||||||
|
DELETE(mf);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Version GetVersion()
|
virtual Version GetVersion()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user