1 /* +------------------------------------+
2 * | Inspire Internet Relay Chat Daemon |
3 * +------------------------------------+
5 * InspIRCd: (C) 2002-2009 InspIRCd Development Team
6 * See: http://wiki.inspircd.org/Credits
8 * This program is free but copyrighted software; see
9 * the file COPYING for details.
11 * ---------------------------------------------------
15 #include "u_listmode.h"
17 /* $ModDep: ../../include/u_listmode.h */
19 /* $ModDesc: Implements extban/invex +I O: - opertype bans */
21 class ModuleOperInvex : public Module
25 ModuleOperInvex(InspIRCd* Me) : Module(Me)
27 Implementation eventlist[] = { I_OnCheckBan, I_On005Numeric, I_OnCheckInvite };
28 ServerInstance->Modules->Attach(eventlist, this, 3);
31 virtual ~ModuleOperInvex()
35 virtual Version GetVersion()
37 return Version("$Id$", VF_COMMON|VF_VENDOR, API_VERSION);
40 virtual ModResult OnCheckInvite(User *user, Channel *c)
42 if (!IS_LOCAL(user) || !IS_OPER(user))
43 return MOD_RES_PASSTHRU;
45 Module* ExceptionModule = ServerInstance->Modules->Find("m_inviteexception.so");
48 if (ListModeRequest(this, ExceptionModule, user->oper, 'O', c).Send())
50 // Oper type is exempt
55 return MOD_RES_PASSTHRU;
58 virtual ModResult OnCheckBan(User *user, Channel *c)
61 return MOD_RES_PASSTHRU;
62 return c->GetExtBanStatus(user->oper, 'O');
65 virtual void On005Numeric(std::string &output)
67 ServerInstance->AddExtBanChar('O');
72 MODULE_INIT(ModuleOperInvex)