diff options
Diffstat (limited to 'src/modules/m_inviteexception.cpp')
-rw-r--r-- | src/modules/m_inviteexception.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp index 1ecec735e..5e6628e6d 100644 --- a/src/modules/m_inviteexception.cpp +++ b/src/modules/m_inviteexception.cpp @@ -47,6 +47,7 @@ class InviteException : public ListModeBase class ModuleInviteException : public Module { + bool invite_bypass_key; InviteException ie; public: ModuleInviteException() : ie(this) @@ -54,9 +55,10 @@ public: if (!ServerInstance->Modes->AddMode(&ie)) throw ModuleException("Could not add new modes!"); + OnRehash(NULL); ie.DoImplements(this); - Implementation eventlist[] = { I_On005Numeric, I_OnCheckInvite, I_OnCheckKey }; - ServerInstance->Modules->Attach(eventlist, this, 3); + Implementation eventlist[] = { I_On005Numeric, I_OnCheckInvite, I_OnCheckKey, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, 4); } void On005Numeric(std::string &output) @@ -66,17 +68,14 @@ public: ModResult OnCheckInvite(User* user, Channel* chan) { - if(chan != NULL) + modelist* list = ie.extItem.get(chan); + if (list) { - modelist* list = ie.extItem.get(chan); - if (list) + for (modelist::iterator it = list->begin(); it != list->end(); it++) { - for (modelist::iterator it = list->begin(); it != list->end(); it++) + if (chan->CheckBan(user, it->mask)) { - if (chan->CheckBan(user, it->mask)) - { - return MOD_RES_ALLOW; - } + return MOD_RES_ALLOW; } } } @@ -86,7 +85,7 @@ public: ModResult OnCheckKey(User* user, Channel* chan, const std::string& key) { - if (ServerInstance->Config->ConfValue("inviteexception")->getBool("bypasskey", true)) + if (invite_bypass_key) return OnCheckInvite(user, chan); return MOD_RES_PASSTHRU; } @@ -103,6 +102,7 @@ public: void OnRehash(User* user) { + invite_bypass_key = ServerInstance->Config->ConfValue("inviteexception")->getBool("bypasskey", true); ie.DoRehash(); } |