diff options
author | Adam <Adam@anope.org> | 2010-11-20 21:45:30 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-12-12 19:35:27 -0500 |
commit | 246f44b9888161aecefc81f0ff17ddd893287e3c (patch) | |
tree | b89607a9ad9c91914f292fc54cc32213a8d9f5c4 /modules/protocol/ratbox.cpp | |
parent | a85112172d842aa74aa5531788d383328d153e74 (diff) |
Added cs_mode, rewrote the old list mode code, and added CIDR support
Diffstat (limited to 'modules/protocol/ratbox.cpp')
-rw-r--r-- | modules/protocol/ratbox.cpp | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/modules/protocol/ratbox.cpp b/modules/protocol/ratbox.cpp index 9b5f02e46..0e034aa00 100644 --- a/modules/protocol/ratbox.cpp +++ b/modules/protocol/ratbox.cpp @@ -37,7 +37,6 @@ IRCDVar myIrcd[] = { 0, /* Can remove User Channel Modes with SVSMODE */ 0, /* Sglines are not enforced until user reconnects */ 1, /* ts6 */ - 0, /* CIDR channelbans */ "$$", /* TLD Prefix for Global */ 4, /* Max number of modes we can send per line */ } @@ -626,26 +625,20 @@ bool event_bmask(const Anope::string &source, const std::vector<Anope::string> & if (c) { + ChannelMode *ban = ModeManager::FindChannelModeByName(CMODE_BAN), + *except = ModeManager::FindChannelModeByName(CMODE_EXCEPT), + *invex = ModeManager::FindChannelModeByName(CMODE_INVITEOVERRIDE); Anope::string bans = params[3]; int count = myNumToken(bans, ' '), i; for (i = 0; i <= count - 1; ++i) { Anope::string b = myStrGetToken(bans, ' ', i); - if (params[2].equals_cs("b")) - { - ChannelModeList *cml = debug_cast<ChannelModeList *>(ModeManager::FindChannelModeByChar('b')); - cml->AddMask(c, b); - } - else if (params[2].equals_cs("e")) - { - ChannelModeList *cml = debug_cast<ChannelModeList *>(ModeManager::FindChannelModeByChar('e')); - cml->AddMask(c, b); - } - if (params[2].equals_cs("I")) - { - ChannelModeList *cml = debug_cast<ChannelModeList *>(ModeManager::FindChannelModeByChar('I')); - cml->AddMask(c, b); - } + if (ban && params[2].equals_cs("b")) + c->SetModeInternal(ban, b); + else if (except && params[2].equals_cs("e")) + c->SetModeInternal(except, b); + if (invex && params[2].equals_cs("I")) + c->SetModeInternal(invex, b); } } return true; |