2 * InspIRCd -- Internet Relay Chat Daemon
4 * Copyright (C) 2020 Sadie Powell <sadie@witchery.services>
5 * Copyright (C) 2016 Johanna A <johanna-a@users.noreply.github.com>
7 * This file is part of InspIRCd. InspIRCd is free software: you can
8 * redistribute it and/or modify it under the terms of the GNU General Public
9 * License as published by the Free Software Foundation, version 2.
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 class ModuleClassBan : public Module
27 std::string underscore;
36 ModResult OnCheckBan(User* user, Channel* c, const std::string& mask) CXX11_OVERRIDE
38 LocalUser* localUser = IS_LOCAL(user);
39 if ((localUser) && (mask.length() > 2) && (mask[0] == 'n') && (mask[1] == ':'))
41 // Replace spaces with underscores as they're prohibited in mode parameters.
42 std::string classname(localUser->GetClass()->name);
43 stdalgo::string::replace_all(classname, space, underscore);
44 if (InspIRCd::Match(classname, mask.substr(2)))
48 return MOD_RES_PASSTHRU;
51 void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
53 tokens["EXTBAN"].push_back('n');
56 Version GetVersion() CXX11_OVERRIDE
58 return Version("Adds extended ban n: which check whether users are in a connect class matching the specified glob pattern.", VF_VENDOR | VF_OPTCOMMON);
62 MODULE_INIT(ModuleClassBan)