diff options
Diffstat (limited to 'src/modules/m_restrictchans.cpp')
-rw-r--r-- | src/modules/m_restrictchans.cpp | 86 |
1 files changed, 1 insertions, 85 deletions
diff --git a/src/modules/m_restrictchans.cpp b/src/modules/m_restrictchans.cpp index 1f2416d44..1fc44f22b 100644 --- a/src/modules/m_restrictchans.cpp +++ b/src/modules/m_restrictchans.cpp @@ -1,85 +1 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ - * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits - * - * This program is free but copyrighted software; see - * the file COPYING for details. - * - * --------------------------------------------------- - */ - -#include "inspircd.h" -#include "users.h" -#include "channels.h" -#include "modules.h" - -/* $ModDesc: Only opers may create new channels if this module is loaded */ - -class ModuleRestrictChans : public Module -{ - - - std::map<irc::string,int> allowchans; - - void ReadConfig() - { - ConfigReader* MyConf = new ConfigReader(ServerInstance); - allowchans.clear(); - for (int i = 0; i < MyConf->Enumerate("allowchannel"); i++) - { - std::string txt; - txt = MyConf->ReadValue("allowchannel", "name", i); - irc::string channel = txt.c_str(); - allowchans[channel] = 1; - } - DELETE(MyConf); - } - - public: - ModuleRestrictChans(InspIRCd* Me) - : Module(Me) - { - - ReadConfig(); - } - - virtual void OnRehash(userrec* user, const std::string ¶meter) - { - ReadConfig(); - } - - void Implements(char* List) - { - List[I_OnUserPreJoin] = List[I_OnRehash] = 1; - } - - virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs) - { - irc::string x = cname; - // user is not an oper and its not in the allow list - if ((!IS_OPER(user)) && (allowchans.find(x) == allowchans.end())) - { - // channel does not yet exist (record is null, about to be created IF we were to allow it) - if (!chan) - { - user->WriteServ("530 %s %s :Only IRC operators may create new channels",user->nick,cname,cname); - return 1; - } - } - return 0; - } - - virtual ~ModuleRestrictChans() - { - } - - virtual Version GetVersion() - { - return Version(1,1,0,1,VF_VENDOR,API_VERSION); - } -}; - -MODULE_INIT(ModuleRestrictChans) +/* +------------------------------------+
* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
* InspIRCd: (C) 2002-2007 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
*
* ---------------------------------------------------
*/
#include "inspircd.h"
#include "users.h"
#include "channels.h"
#include "modules.h"
/* $ModDesc: Only opers may create new channels if this module is loaded */
class ModuleRestrictChans : public Module
{
std::map<irc::string,int> allowchans;
void ReadConfig()
{
ConfigReader* MyConf = new ConfigReader(ServerInstance);
allowchans.clear();
for (int i = 0; i < MyConf->Enumerate("allowchannel"); i++)
{
std::string txt;
txt = MyConf->ReadValue("allowchannel", "name", i);
irc::string channel = txt.c_str();
allowchans[channel] = 1;
}
DELETE(MyConf);
}
public:
ModuleRestrictChans(InspIRCd* Me)
: Module(Me)
{
ReadConfig();
}
virtual void OnRehash(userrec* user, const std::string ¶meter)
{
ReadConfig();
}
void Implements(char* List)
{
List[I_OnUserPreJoin] = List[I_OnRehash] = 1;
}
virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs)
{
irc::string x = cname;
// user is not an oper and its not in the allow list
if ((!IS_OPER(user)) && (allowchans.find(x) == allowchans.end()))
{
// channel does not yet exist (record is null, about to be created IF we were to allow it)
if (!chan)
{
user->WriteServ("530 %s %s :Only IRC operators may create new channels",user->nick,cname,cname);
return 1;
}
}
return 0;
}
virtual ~ModuleRestrictChans()
{
}
virtual Version GetVersion()
{
return Version(1,1,0,1,VF_VENDOR,API_VERSION);
}
};
MODULE_INIT(ModuleRestrictChans)
\ No newline at end of file |