X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_services_account.cpp;h=7aebaa1b986bef896210c56ee26eeef6eb570129;hb=fcafba14c5408360ec725ed1649ede75b7ae52c1;hp=a763e8e687c2e0ece51fc8cf43a560157e436067;hpb=d56e1a1d586d61cfee2cdb8f6e8ecd71428385d8;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index a763e8e68..7aebaa1b9 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -3,7 +3,7 @@ * +------------------------------------+ * * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -116,7 +116,7 @@ class ModuleServicesAccount : public Module if (!ServerInstance->Modes->AddMode(m1) || !ServerInstance->Modes->AddMode(m2) || !ServerInstance->Modes->AddMode(m3) || !ServerInstance->Modes->AddMode(m4) || !ServerInstance->Modes->AddMode(m5)) throw ModuleException("Some other module has claimed our modes!"); - Implementation eventlist[] = { I_OnWhois, I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserPreJoin, + Implementation eventlist[] = { I_OnWhois, I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserPreJoin, I_OnCheckBan, I_OnSyncUserMetaData, I_OnUserQuit, I_OnCleanup, I_OnDecodeMetaData, I_On005Numeric, I_OnUserPostNick }; ServerInstance->Modules->Attach(eventlist, this, 10); @@ -186,7 +186,7 @@ class ModuleServicesAccount : public Module if (account) { - if (c->IsExtBanned(*account, 'M')) + if (c->GetExtBanStatus(*account, 'M') < 0) { // may not speak (text is deliberately vague, so they don't know which restriction to evade) user->WriteNumeric(477, ""+std::string(user->nick)+" "+std::string(c->name)+" :You may not speak in this channel"); @@ -208,6 +208,14 @@ class ModuleServicesAccount : public Module return 0; } + virtual int OnCheckBan(User* user, Channel* chan) + { + std::string* account; + if (!user->GetExt("accountname", account)) + return 0; + return chan->GetExtBanStatus(*account, 'R'); + } + virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { return OnUserPreMessage(user, dest, target_type, text, status, exempt_list); @@ -239,16 +247,6 @@ class ModuleServicesAccount : public Module return 1; } } - - if (account) - { - if (chan->IsExtBanned(*account, 'R')) - { - // may not join - user->WriteNumeric(ERR_BANNEDFROMCHAN, "%s %s :Cannot join channel (You're banned)", user->nick.c_str(), chan->name.c_str()); - return 1; - } - } } return 0; }