aboutsummaryrefslogtreecommitdiff
path: root/src/channelmanager.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2020-06-21 04:25:45 +0100
committerGravatar Sadie Powell2021-05-08 15:31:50 +0100
commit0c750c060839f9018ca129bd7456184792ea0dc0 (patch)
tree43aa8d0a593afa292e2922d2481b2349e0dc8dfd /src/channelmanager.cpp
parentMerge 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.cpp52
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;
+}
+