mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-12 12:09: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
|
class ModuleNoKicks : public Module
|
||||||
{
|
{
|
||||||
Server *Srv;
|
|
||||||
bool NoisyNoKicks;
|
|
||||||
ConfigReader *Conf;
|
ConfigReader *Conf;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -34,6 +32,7 @@ class ModuleNoKicks : public Module
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// nobody else can (not even opers with override, and founders)
|
// 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;
|
return ACR_DENY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user