]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/capab.cpp
Add support for blocking tag messages with the deaf mode.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / capab.cpp
index ed94079aea1f905b1b4a9d02cda2556f4740b932..9894dd413d55524a03ec76734709f35c2a9c0174 100644 (file)
@@ -1,9 +1,15 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2019 linuxdaemon <linuxdaemon.irc@gmail.com>
+ *   Copyright (C) 2014, 2017-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2014 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2012-2016 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012 Robby <robby@chatbelgie.be>
  *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2008, 2010 Craig Edwards <brain@inspircd.org>
+ *   Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
  *   Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
- *   Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc>
  *
  * 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
@@ -67,8 +73,7 @@ std::string TreeSocket::MyModules(int filter)
                if ((!do_compat_include) && (!(v.Flags & filter)))
                        continue;
 
-               if (i != modlist.begin())
-                       capabilities.push_back(' ');
+               capabilities.push_back(' ');
                capabilities.append(i->first);
                if (!v.link_data.empty())
                {
@@ -80,12 +85,12 @@ std::string TreeSocket::MyModules(int filter)
        // If we are linked in a 2.0 server and have an ascii casemapping
        // advertise it as m_ascii.so from inspircd-extras
        if ((filter & VF_COMMON) && ServerInstance->Config->CaseMapping == "ascii" && proto_version == PROTO_INSPIRCD_20)
-       {
-               if (!capabilities.empty())
-                       capabilities += "m_ascii.so";
-       }
+               capabilities.append(" m_ascii.so");
 
-       return capabilities;
+       if (capabilities.empty())
+               return capabilities;
+
+       return capabilities.substr(1);
 }
 
 std::string TreeSocket::BuildModeList(ModeType mtype)
@@ -194,6 +199,14 @@ void TreeSocket::SendCapabilities(int phase)
                        .append(" PREFIX="+ ServerInstance->Modes->BuildPrefixes());
        }
 
+       // HACK: Allow services to know what extbans exist. This will be
+       // replaced by CAPAB EXTBANS in the next protocol version.
+       std::map<std::string, std::string> tokens;
+       FOREACH_MOD(On005Numeric, (tokens));
+       std::map<std::string, std::string>::const_iterator eiter = tokens.find("EXTBAN");
+       if (eiter != tokens.end())
+               extra.append(" EXTBANS=" + eiter->second);
+
        this->WriteLine("CAPAB CAPABILITIES " /* Preprocessor does this one. */
                        ":NICKMAX="+ConvToStr(ServerInstance->Config->Limits.NickMax)+
                        " CHANMAX="+ConvToStr(ServerInstance->Config->Limits.ChanMax)+
@@ -218,7 +231,7 @@ void TreeSocket::SendCapabilities(int phase)
        this->WriteLine("CAPAB END");
 }
 
-/* Isolate and return the elements that are different between two comma seperated lists */
+/* Isolate and return the elements that are different between two comma separated lists */
 void TreeSocket::ListDifference(const std::string &one, const std::string &two, char sep,
                std::string& mleft, std::string& mright)
 {