diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-07-12 21:25:11 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-07-12 21:25:11 +0000 |
commit | 4676743fac7383346b7768e7a98f25e16b68826f (patch) | |
tree | 03678b16bbd21ca9657be6d1ebb4d8092fb1bbd2 | |
parent | 6f4b5cbc450ca08c022e02de6495673c710d7667 (diff) |
Make m_gecosban work. We can't make assumptions about how an extban banmask must look, as they won't necessarily be a usermask type affair. :(
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9991 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | src/mode.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_gecosban.cpp | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index b778d1d5c..9f92de314 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -780,6 +780,9 @@ void ModeParser::CleanMask(std::string &mask) std::string::size_type pos_of_dot = mask.find_first_of('.'); std::string::size_type pos_of_colons = mask.find("::"); /* Because ipv6 addresses are colon delimited -- double so it treats extban as nick */ + if (mask.length() >= 2 && mask[1] == ':') + return; // if it's an extban, don't even try guess how it needs to be formed. + if ((pos_of_pling == std::string::npos) && (pos_of_at == std::string::npos)) { /* Just a nick, or just a host - or clearly ipv6 (starting with :) */ diff --git a/src/modules/m_gecosban.cpp b/src/modules/m_gecosban.cpp index 49ca17fe0..3c041c548 100644 --- a/src/modules/m_gecosban.cpp +++ b/src/modules/m_gecosban.cpp @@ -42,6 +42,8 @@ class ModuleNickBan : public Module if (!c) return 0; + ServerInstance->Logs->Log("EXTBANS", DEBUG, "Checking if %s is banned", user->fullname.c_str()); + if (c->IsExtBanned(user->fullname, 'r')) { // XXX: send a numeric here |