mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-12 03:59:03 -04:00
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:
parent
d9a197a6f5
commit
765cdd25cb
90
src/modules/m_noctcp.cpp
Normal file
90
src/modules/m_noctcp.cpp
Normal 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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user