diff options
| author | 2020-06-21 04:25:45 +0100 | |
|---|---|---|
| committer | 2021-05-08 15:31:50 +0100 | |
| commit | 0c750c060839f9018ca129bd7456184792ea0dc0 (patch) | |
| tree | 43aa8d0a593afa292e2922d2481b2349e0dc8dfd /src/channelmanager.cpp | |
| parent | Merge branch 'insp3' into master. (diff) | |
Move channel logic from InspIRCd to the new ChannelManager class.
Diffstat (limited to 'src/channelmanager.cpp')
| -rw-r--r-- | src/channelmanager.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/channelmanager.cpp b/src/channelmanager.cpp new file mode 100644 index 000000000..f8bd9ddb4 --- /dev/null +++ b/src/channelmanager.cpp @@ -0,0 +1,52 @@ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2020 Sadie Powell <sadie@witchery.services> + * + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "inspircd.h" + +bool ChannelManager::DefaultIsChannel(const std::string& channel) +{ + if (channel.empty() || channel.length() > ServerInstance->Config->Limits.MaxChannel) + return false; + + if (channel[0] != '#') + return false; + + for (const auto& chr : insp::iterator_range(channel.begin() + 1, channel.end())) + { + switch (chr) + { + case 0x07: // BELL + case 0x20: // SPACE + case 0x2C: // COMMA + return false; + } + } + + return true; +} + +Channel* ChannelManager::Find(const std::string& channel) +{ + ChannelMap::iterator iter = channels.find(channel); + if (iter == channels.end()) + return nullptr; + + return iter->second; +} + |
