Added m_ctcp, adds support for unreal-style chanmode +C

Updated m_nokicks to put out numeric when kick on a +Q channel


git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@802 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
brain 2004-05-09 20:30:30 +00:00
parent d9a197a6f5
commit 765cdd25cb
2 changed files with 91 additions and 2 deletions

90
src/modules/m_noctcp.cpp Normal file
View File

@ -0,0 +1,90 @@
#include <stdio.h>
#include "users.h"
#include "channels.h"
#include "modules.h"
/* $ModDesc: Provides support for unreal-style channel mode +Q */
class ModuleNoCTCP : public Module
{
Server *Srv;
public:
ModuleNoCTCP()
{
Srv = new Server;
Srv->AddExtendedMode('C',MT_CHANNEL,false,0,0);
}
virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string text)
{
if (target_type == TARGET_CHANNEL)
{
chanrec* c = (chanrec*)dest;
if (c->IsCustomModeSet('C'))
{
if ((text.length()) && (text[0] == '\1'))
{
WriteServ(user->fd,"492 %s %s :Can't send CTCP to channel (+C set)",user->nick, c->name);
return 1;
}
}
}
return 0;
}
virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string text)
{
if (target_type == TARGET_CHANNEL)
{
chanrec* c = (chanrec*)dest;
if (c->IsCustomModeSet('C'))
{
if ((text.length()) && (text[0] == '\1'))
{
WriteServ(user->fd,"492 %s %s :Can't send CTCP to channel (+C set)",user->nick, c->name);
return 1;
}
}
}
return 0;
}
virtual ~ModuleNoCTCP()
{
delete Srv;
}
virtual Version GetVersion()
{
return Version(1,0,0,0);
}
};
class ModuleNoCTCPFactory : public ModuleFactory
{
public:
ModuleNoCTCPFactory()
{
}
~ModuleNoCTCPFactory()
{
}
virtual Module * CreateModule()
{
return new ModuleNoCTCP;
}
};
extern "C" void * init_module( void )
{
return new ModuleNoCTCPFactory;
}

View File

@ -8,8 +8,6 @@
class ModuleNoKicks : public Module
{
Server *Srv;
bool NoisyNoKicks;
ConfigReader *Conf;
public:
@ -34,6 +32,7 @@ class ModuleNoKicks : public Module
else
{
// nobody else can (not even opers with override, and founders)
WriteServ(source->fd,"484 %s %s :Can't kick user %s from channel (+Q set)",source->nick, c->name,dest->nick);
return ACR_DENY;
}
}