]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Remove legacy code, mostly related to 1.2 compatibility
authorattilamolnar <attilamolnar@hush.com>
Sun, 31 Mar 2013 22:54:58 +0000 (00:54 +0200)
committerattilamolnar <attilamolnar@hush.com>
Sun, 31 Mar 2013 22:54:58 +0000 (00:54 +0200)
15 files changed:
docs/conf/inspircd.conf.example
docs/conf/modules.conf.example
include/configreader.h
src/configreader.cpp
src/modules/hash.h
src/modules/m_cloaking.cpp
src/modules/m_halfop.cpp [deleted file]
src/modules/m_md5.cpp
src/modules/m_ripemd160.cpp
src/modules/m_sha256.cpp
src/modules/m_spanningtree/capab.cpp
src/modules/m_spanningtree/compat.cpp
src/modules/m_spanningtree/hmac.cpp
src/modules/m_spanningtree/main.h
src/users.cpp

index 0767e9ff5a2ec716ad9ebea1307fb02bc6a72023..63c19e4039cad2fbb4761218be100e70707e0ec0 100644 (file)
 
          # nosnoticestack: This prevents snotices from 'stacking' and giving you
          # the message saying '(last message repeated X times)'. Defaults to no.
-         nosnoticestack="no"
-
-         # welcomenotice: When turned on, this sends a NOTICE to connecting users 
-         # with the text Welcome to <networkname>! after successful registration.
-         # Defaults to yes.
-         welcomenotice="yes">
+         nosnoticestack="no">
 
 
 #-#-#-#-#-#-#-#-#-#-#-# PERFORMANCE CONFIGURATION #-#-#-#-#-#-#-#-#-#-#
index 0e7b3a29bf838ec4cc7d57f1c2834fb339a5ce74..a163c164664d12aced8bf743c98cc3926d183d90 100644 (file)
 # cloak prefix as shown below. The cloak key must be shared across    #
 # the network for correct cloaking.                                   #
 #                                                                     #
-# There are four methods of cloaking:                                 #
+# There are two methods of cloaking:                                  #
 #                                                                     #
 #   half           Cloak only the "unique" portion of a host; show    #
 #                  the last 2 parts of the domain, /16 subnet of IPv4 #
 #   full           Cloak the users completely, using three slices for #
 #                  common CIDR bans (IPv4: /16, /24; IPv6: /48, /64)  #
 #                                                                     #
-# These methods use a single key that can be any length of text.      #
+# The methods use a single key that can be any length of text.        #
 # An optional prefix may be specified to mark cloaked hosts.          #
-#                                                                     #
-# The following methods are maintained for backwards compatibility;   #
-# they are slightly less secure, and always hide unresolved IPs       #
-#                                                                     #
-#   compat-host    InspIRCd 1.2-compatible host-based cloaking        #
-#   compat-ip      InspIRCd 1.2-compatible ip-always cloaking         #
-#                                                                     #
-# If you use a compat cloaking mode then you must specify key1, key2, #
-# key3, key4; the values must be less than 0x80000000 and should be   #
-# picked at random. Prefix is mandatory, will default to network name #
-# if not specified, and will always have a "-" appended.              #
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 #
 #<cloak mode="half"
 #   quitmsg="Throttled" bootwait="10">
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# Custom prefixes: allows for channel prefixes to be added. 
-# This can replace m_chanprotect and m_halfop, except for services that
-# recognise those modules by name
+# Custom prefixes: allows for channel prefixes to be added.
 #<module name="m_customprefix.so">
 #
 # name       The name of the mode, must be unique from other modes
 # must be in one of your oper class blocks.
 #<module name="m_globalload.so">
 
-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# Halfop module: Provides the +h (halfops) channel status mode.
-#<module name="m_halfop.so">
-
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # HELPOP module: Provides the /HELPOP command
 #<module name="m_helpop.so">
index 09d4e619d4aaa35e64004607f0db019f11fbeaaf..b26be3d6cbb6825f5ea2fc20e5ddfbf79deabc5a 100644 (file)
@@ -578,11 +578,6 @@ class CoreExport ServerConfig
        /** If this value is true, snotices will not stack when repeats are sent
         */
        bool NoSnoticeStack;
-
-       /** If true, a "Welcome to <networkname>!" NOTICE will be sent to
-        * connecting users
-        */
-       bool WelcomeNotice;
 };
 
 /** The background thread for config reading, so that reading from executable includes
index 2577b83b800f6719fd93ef3eb71bfbd71c6468af..1f863ba62badb93092817f137af8abecfb1df198 100644 (file)
@@ -551,7 +551,6 @@ void ServerConfig::Fill()
        Limits.MaxAway = ConfValue("limits")->getInt("maxaway", 200);
        InvBypassModes = options->getBool("invitebypassmodes", true);
        NoSnoticeStack = options->getBool("nosnoticestack", false);
-       WelcomeNotice = options->getBool("welcomenotice", true);
 
        range(SoftLimit, 10, ServerInstance->SE->GetMaxFds(), ServerInstance->SE->GetMaxFds(), "<performance:softlimit>");
        range(MaxConn, 0, SOMAXCONN, SOMAXCONN, "<performance:somaxconn>");
index f7bf85e204d6ec57624b0106d8fb415d9a4fb54c..98a182165db5db05636cb60efdd31d7ee123969b 100644 (file)
@@ -40,20 +40,6 @@ class HashProvider : public DataProvider
                return BinToBase64(sum(data), NULL, 0);
        }
 
-       /** Allows the IVs for the hash to be specified. As the choice of initial IV is
-        * important for the security of a hash, this should not be used except to
-        * maintain backwards compatability. This also allows you to change the hex
-        * sequence from its default of "0123456789abcdef", which does not improve the
-        * strength of the output, but helps confuse those attempting to implement it.
-        *
-        * Example:
-        * \code
-        * unsigned int iv[] = { 0xFFFFFFFF, 0x00000000, 0xAAAAAAAA, 0xCCCCCCCC };
-        * std::string result = Hash.sumIV(iv, "fedcba9876543210", "data");
-        * \endcode
-        */
-       virtual std::string sumIV(unsigned int* IV, const char* HexMap, const std::string &sdata) = 0;
-
        /** HMAC algorithm, RFC 2104 */
        std::string hmac(const std::string& key, const std::string& msg)
        {
index 105d688337d20d0afb767059815bf10ace8c5671..3ad0c7ab31123b529e4dc9e73a523ff2eaf01d8b 100644 (file)
 
 enum CloakMode
 {
-       /** 1.2-compatible host-based cloak */
-       MODE_COMPAT_HOST,
-       /** 1.2-compatible IP-only cloak */
-       MODE_COMPAT_IPONLY,
        /** 2.0 cloak of "half" of the hostname plus the full IP hash */
        MODE_HALF_CLOAK,
        /** 2.0 cloak of IP hash, split at 2 common CIDR range points */
@@ -147,7 +143,6 @@ class ModuleCloaking : public Module
        std::string prefix;
        std::string suffix;
        std::string key;
-       unsigned int compatkey[4];
        const char* xtab[4];
        dynamic_reference<HashProvider> Hash;
 
@@ -224,63 +219,6 @@ class ModuleCloaking : public Module
                return rv;
        }
 
-       std::string CompatCloak4(const char* ip)
-       {
-               irc::sepstream seps(ip, '.');
-               std::string octet[4];
-               int i[4];
-
-               for (int j = 0; j < 4; j++)
-               {
-                       seps.GetToken(octet[j]);
-                       i[j] = atoi(octet[j].c_str());
-               }
-
-               octet[3] = octet[0] + "." + octet[1] + "." + octet[2] + "." + octet[3];
-               octet[2] = octet[0] + "." + octet[1] + "." + octet[2];
-               octet[1] = octet[0] + "." + octet[1];
-
-               /* Reset the Hash module and send it our IV */
-
-               std::string rv;
-
-               /* Send the Hash module a different hex table for each octet group's Hash sum */
-               for (int k = 0; k < 4; k++)
-               {
-                       rv.append(Hash->sumIV(compatkey, xtab[(compatkey[k]+i[k]) % 4], octet[k]).substr(0,6));
-                       if (k < 3)
-                               rv.append(".");
-               }
-               /* Stick them all together */
-               return rv;
-       }
-
-       std::string CompatCloak6(const char* ip)
-       {
-               std::vector<std::string> hashies;
-               std::string item;
-               int rounds = 0;
-
-               /* Reset the Hash module and send it our IV */
-
-               for (const char* input = ip; *input; input++)
-               {
-                       item += *input;
-                       if (item.length() > 7)
-                       {
-                               hashies.push_back(Hash->sumIV(compatkey, xtab[(compatkey[0]+rounds) % 4], item).substr(0,8));
-                               item.clear();
-                       }
-                       rounds++;
-               }
-               if (!item.empty())
-               {
-                       hashies.push_back(Hash->sumIV(compatkey, xtab[(compatkey[0]+rounds) % 4], item).substr(0,8));
-               }
-               /* Stick them all together */
-               return irc::stringjoiner(":", hashies, 0, hashies.size() - 1).GetJoined();
-       }
-
        std::string SegmentIP(const irc::sockets::sockaddrs& ip, bool full)
        {
                std::string bindata;
@@ -395,12 +333,6 @@ class ModuleCloaking : public Module
                {
                        switch (mode)
                        {
-                               case MODE_COMPAT_HOST:
-                                       testcloak = prefix + "-" + Hash->sumIV(compatkey, xtab[0], "*").substr(0,10);
-                                       break;
-                               case MODE_COMPAT_IPONLY:
-                                       testcloak = Hash->sumIV(compatkey, xtab[0], "*").substr(0,10);
-                                       break;
                                case MODE_HALF_CLOAK:
                                        testcloak = prefix + SegmentCloak("*", 3, 8) + suffix;
                                        break;
@@ -418,75 +350,16 @@ class ModuleCloaking : public Module
                suffix = tag->getString("suffix", ".IP");
 
                std::string modestr = tag->getString("mode");
-               if (modestr == "compat-host")
-                       mode = MODE_COMPAT_HOST;
-               else if (modestr == "compat-ip")
-                       mode = MODE_COMPAT_IPONLY;
-               else if (modestr == "half")
+               if (modestr == "half")
                        mode = MODE_HALF_CLOAK;
                else if (modestr == "full")
                        mode = MODE_OPAQUE;
                else
-                       throw ModuleException("Bad value for <cloak:mode>; must be one of compat-host, compat-ip, half, full");
-
-               if (mode == MODE_COMPAT_HOST || mode == MODE_COMPAT_IPONLY)
-               {
-                       bool lowercase = tag->getBool("lowercase");
-
-                       /* These are *not* using the need_positive parameter of ReadInteger -
-                        * that will limit the valid values to only the positive values in a
-                        * signed int. Instead, accept any value that fits into an int and
-                        * cast it to an unsigned int. That will, a bit oddly, give us the full
-                        * spectrum of an unsigned integer. - Special
-                        *
-                        * We must limit the keys or else we get different results on
-                        * amd64/x86 boxes. - psychon */
-                       const unsigned int limit = 0x80000000;
-                       compatkey[0] = (unsigned int) tag->getInt("key1");
-                       compatkey[1] = (unsigned int) tag->getInt("key2");
-                       compatkey[2] = (unsigned int) tag->getInt("key3");
-                       compatkey[3] = (unsigned int) tag->getInt("key4");
-
-                       if (!lowercase)
-                       {
-                               xtab[0] = "F92E45D871BCA630";
-                               xtab[1] = "A1B9D80C72E653F4";
-                               xtab[2] = "1ABC078934DEF562";
-                               xtab[3] = "ABCDEF5678901234";
-                       }
-                       else
-                       {
-                               xtab[0] = "f92e45d871bca630";
-                               xtab[1] = "a1b9d80c72e653f4";
-                               xtab[2] = "1abc078934def562";
-                               xtab[3] = "abcdef5678901234";
-                       }
+                       throw ModuleException("Bad value for <cloak:mode>; must be half or full");
 
-                       if (prefix.empty())
-                               prefix = ServerInstance->Config->Network;
-
-                       if (!compatkey[0] || !compatkey[1] || !compatkey[2] || !compatkey[3] ||
-                               compatkey[0] >= limit || compatkey[1] >= limit || compatkey[2] >= limit || compatkey[3] >= limit)
-                       {
-                               std::string detail;
-                               if (!compatkey[0] || compatkey[0] >= limit)
-                                       detail = "<cloak:key1> is not valid, it may be set to a too high/low value, or it may not exist.";
-                               else if (!compatkey[1] || compatkey[1] >= limit)
-                                       detail = "<cloak:key2> is not valid, it may be set to a too high/low value, or it may not exist.";
-                               else if (!compatkey[2] || compatkey[2] >= limit)
-                                       detail = "<cloak:key3> is not valid, it may be set to a too high/low value, or it may not exist.";
-                               else if (!compatkey[3] || compatkey[3] >= limit)
-                                       detail = "<cloak:key4> is not valid, it may be set to a too high/low value, or it may not exist.";
-
-                               throw ModuleException("You have not defined cloak keys for m_cloaking!!! THIS IS INSECURE AND SHOULD BE CHECKED! - " + detail);
-                       }
-               }
-               else
-               {
-                       key = tag->getString("key");
-                       if (key.empty() || key == "secret")
-                               throw ModuleException("You have not defined cloak keys for m_cloaking. Define <cloak:key> as a network-wide secret.");
-               }
+               key = tag->getString("key");
+               if (key.empty() || key == "secret")
+                       throw ModuleException("You have not defined cloak keys for m_cloaking. Define <cloak:key> as a network-wide secret.");
        }
 
        std::string GenCloak(const irc::sockets::sockaddrs& ip, const std::string& ipstr, const std::string& host)
@@ -495,29 +368,6 @@ class ModuleCloaking : public Module
 
                switch (mode)
                {
-                       case MODE_COMPAT_HOST:
-                       {
-                               if (ipstr != host)
-                               {
-                                       std::string tail = LastTwoDomainParts(host);
-
-                                       // xtab is not used here due to a bug in 1.2 cloaking
-                                       chost = prefix + "-" + Hash->sumIV(compatkey, "0123456789abcdef", host).substr(0,8) + tail;
-
-                                       /* Fix by brain - if the cloaked host is > the max length of a host (64 bytes
-                                        * according to the DNS RFC) then they get cloaked as an IP.
-                                        */
-                                       if (chost.length() <= 64)
-                                               break;
-                               }
-                               // fall through to IP cloak
-                       }
-                       case MODE_COMPAT_IPONLY:
-                               if (ip.sa.sa_family == AF_INET6)
-                                       chost = CompatCloak6(ipstr.c_str());
-                               else
-                                       chost = CompatCloak4(ipstr.c_str());
-                               break;
                        case MODE_HALF_CLOAK:
                        {
                                if (ipstr != host)
diff --git a/src/modules/m_halfop.cpp b/src/modules/m_halfop.cpp
deleted file mode 100644 (file)
index 3194fcd..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * InspIRCd -- Internet Relay Chat Daemon
- *
- *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
- *
- * 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/>.
- */
-
-
-/* $ModDesc: Channel half-operator mode provider */
-
-#include "inspircd.h"
-
-class ModeChannelHalfOp : public ModeHandler
-{
- public:
-       ModeChannelHalfOp(Module* parent);
-       ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding);
-       unsigned int GetPrefixRank();
-       void RemoveMode(Channel* channel, irc::modestacker* stack = NULL);
-       void RemoveMode(User* user, irc::modestacker* stack = NULL);
-
-       ModResult AccessCheck(User* src, Channel*, std::string& value, bool adding)
-       {
-               if (!adding && src->nick == value)
-                       return MOD_RES_ALLOW;
-               return MOD_RES_PASSTHRU;
-       }
-};
-
-ModeChannelHalfOp::ModeChannelHalfOp(Module* parent) : ModeHandler(parent, "halfop", 'h', PARAM_ALWAYS, MODETYPE_CHANNEL)
-{
-       list = true;
-       prefix = '%';
-       levelrequired = OP_VALUE;
-       m_paramtype = TR_NICK;
-}
-
-unsigned int ModeChannelHalfOp::GetPrefixRank()
-{
-       return HALFOP_VALUE;
-}
-
-void ModeChannelHalfOp::RemoveMode(Channel* channel, irc::modestacker* stack)
-{
-       const UserMembList* clist = channel->GetUsers();
-
-       for (UserMembCIter i = clist->begin(); i != clist->end(); i++)
-       {
-               if (stack)
-               {
-                       stack->Push(this->GetModeChar(), i->first->nick);
-               }
-               else
-               {
-                       std::vector<std::string> parameters;
-                       parameters.push_back(channel->name);
-                       parameters.push_back("-h");
-                       parameters.push_back(i->first->nick);
-                       ServerInstance->SendMode(parameters, ServerInstance->FakeClient);
-               }
-       }
-
-}
-
-void ModeChannelHalfOp::RemoveMode(User*, irc::modestacker* stack)
-{
-}
-
-ModeAction ModeChannelHalfOp::OnModeChange(User* source, User*, Channel* channel, std::string &parameter, bool adding)
-{
-       return MODEACTION_ALLOW;
-}
-
-class ModuleHalfop : public Module
-{
-       ModeChannelHalfOp mh;
- public:
-       ModuleHalfop() : mh(this)
-       {
-       }
-
-       void init()
-       {
-               ServerInstance->Modules->AddService(mh);
-       }
-
-       Version GetVersion()
-       {
-               return Version("Channel half-operator mode provider", VF_VENDOR);
-       }
-};
-
-MODULE_INIT(ModuleHalfop)
index 14ccf16a8c8ff87ae18d2088d89ccce08ac7a398..c42507ea19080bc96243d98b852bace28c1df340 100644 (file)
@@ -275,13 +275,6 @@ class MD5Provider : public HashProvider
                return std::string(res, 16);
        }
 
-       std::string sumIV(unsigned int* IV, const char* HexMap, const std::string &sdata)
-       {
-               char res[33];
-               GenHash(sdata.data(), res, HexMap, IV, sdata.length());
-               return res;
-       }
-
        MD5Provider(Module* parent) : HashProvider(parent, "hash/md5", 16, 64) {}
 };
 
index 6ceb4b481bb80790045316a610ad390947947570..3c76ed1d6e476635961b2195e0ee203105b44062 100644 (file)
@@ -451,11 +451,6 @@ public:
                return std::string(rv, RMDsize / 8);
        }
 
-       std::string sumIV(unsigned int* IV, const char* HexMap, const std::string &sdata)
-       {
-               return "";
-       }
-
        RIProv(Module* m) : HashProvider(m, "hash/ripemd160", 20, 64) {}
 };
 
index 86970968a80740c43ef31204426e2e141854123c..360b18ddd4a616b324429c44008033d89119c6b5 100644 (file)
@@ -263,11 +263,6 @@ class HashSHA256 : public HashProvider
                return std::string((char*)bytes, SHA256_DIGEST_SIZE);
        }
 
-       std::string sumIV(unsigned int* IV, const char* HexMap, const std::string &sdata)
-       {
-               return "";
-       }
-
        HashSHA256(Module* parent) : HashProvider(parent, "hash/sha256", 32, 64) {}
 };
 
index 62afe5974b6262b36458dec598543626dcee4c8c..cf0fde3e83ffd1841cd45e59d99d4c2351524a72 100644 (file)
@@ -40,17 +40,14 @@ std::string TreeSocket::MyModules(int filter)
        for (std::vector<std::string>::const_iterator i = modlist.begin(); i != modlist.end(); ++i)
        {
                if (i != modlist.begin())
-                       capabilities.push_back(proto_version > 1201 ? ' ' : ',');
+                       capabilities.push_back(');
                capabilities.append(*i);
                Module* m = ServerInstance->Modules->Find(*i);
-               if (m && proto_version > 1201)
+               Version v = m->GetVersion();
+               if (!v.link_data.empty())
                {
-                       Version v = m->GetVersion();
-                       if (!v.link_data.empty())
-                       {
-                               capabilities.push_back('=');
-                               capabilities.append(v.link_data);
-                       }
+                       capabilities.push_back('=');
+                       capabilities.append(v.link_data);
                }
        }
        return capabilities;
@@ -90,7 +87,7 @@ void TreeSocket::SendCapabilities(int phase)
        if (phase < 2)
                return;
 
-       char sep = proto_version > 1201 ? ' ' : ',';
+       const char sep = ' ';
        irc::sepstream modulelist(MyModules(VF_COMMON), sep);
        irc::sepstream optmodulelist(MyModules(VF_OPTCOMMON), sep);
        /* Send module names, split at 509 length */
@@ -139,8 +136,6 @@ void TreeSocket::SendCapabilities(int phase)
                SetOurChallenge(ServerInstance->GenRandomStr(20));
                extra = " CHALLENGE=" + this->GetOurChallenge();
        }
-       if (proto_version < 1202)
-               extra += ServerInstance->Modes->FindMode('h', MODETYPE_CHANNEL) ? " HALFOP=1" : " HALFOP=0";
 
        this->WriteLine("CAPAB CAPABILITIES " /* Preprocessor does this one. */
                        ":NICKMAX="+ConvToStr(ServerInstance->Config->Limits.NickMax)+
@@ -212,7 +207,7 @@ bool TreeSocket::Capab(const parameterlist &params)
                if ((this->capab->ModuleList != this->MyModules(VF_COMMON)) && (this->capab->ModuleList.length()))
                {
                        std::string diffIneed, diffUneed;
-                       ListDifference(this->capab->ModuleList, this->MyModules(VF_COMMON), proto_version > 1201 ? ' ' : ',', diffIneed, diffUneed);
+                       ListDifference(this->capab->ModuleList, this->MyModules(VF_COMMON), ', diffIneed, diffUneed);
                        if (diffIneed.length() || diffUneed.length())
                        {
                                reason = "Modules incorrectly matched on these servers.";
@@ -348,7 +343,7 @@ bool TreeSocket::Capab(const parameterlist &params)
                }
                else
                {
-                       capab->ModuleList.push_back(proto_version > 1201 ? ' ' : ',');
+                       capab->ModuleList.push_back(');
                        capab->ModuleList.append(params[1]);
                }
        }
index ec0cdb03661d3e99a45d15a6487828d0e59bded1..92f2bc8f4ae812caf3dc8f0341d80bec8f51eec5 100644 (file)
 #include "main.h"
 #include "treesocket.h"
 
-static const char* const forge_common_1201[] = {
-       "m_allowinvite.so",
-       "m_alltime.so",
-       "m_auditorium.so",
-       "m_banexception.so",
-       "m_blockcaps.so",
-       "m_blockcolor.so",
-       "m_botmode.so",
-       "m_censor.so",
-       "m_chanfilter.so",
-       "m_chanhistory.so",
-       "m_channelban.so",
-       "m_chanprotect.so",
-       "m_chghost.so",
-       "m_chgname.so",
-       "m_commonchans.so",
-       "m_customtitle.so",
-       "m_deaf.so",
-       "m_delayjoin.so",
-       "m_delaymsg.so",
-       "m_exemptchanops.so",
-       "m_gecosban.so",
-       "m_globops.so",
-       "m_helpop.so",
-       "m_hidechans.so",
-       "m_hideoper.so",
-       "m_invisible.so",
-       "m_inviteexception.so",
-       "m_joinflood.so",
-       "m_kicknorejoin.so",
-       "m_knock.so",
-       "m_messageflood.so",
-       "m_muteban.so",
-       "m_nickflood.so",
-       "m_nicklock.so",
-       "m_noctcp.so",
-       "m_nokicks.so",
-       "m_nonicks.so",
-       "m_nonotice.so",
-       "m_nopartmsg.so",
-       "m_ojoin.so",
-       "m_operprefix.so",
-       "m_permchannels.so",
-       "m_redirect.so",
-       "m_regex_glob.so",
-       "m_regex_pcre.so",
-       "m_regex_posix.so",
-       "m_regex_tre.so",
-       "m_remove.so",
-       "m_sajoin.so",
-       "m_sakick.so",
-       "m_sanick.so",
-       "m_sapart.so",
-       "m_saquit.so",
-       "m_serverban.so",
-       "m_services_account.so",
-       "m_servprotect.so",
-       "m_setident.so",
-       "m_showwhois.so",
-       "m_silence.so",
-       "m_sslmodes.so",
-       "m_stripcolor.so",
-       "m_swhois.so",
-       "m_uninvite.so",
-       "m_watch.so"
-};
-
-static std::string wide_newline("\r\n");
 static std::string newline("\n");
 
-void TreeSocket::CompatAddModules(std::vector<std::string>& modlist)
-{
-       if (proto_version < 1202)
-       {
-               // you MUST have chgident loaded in order to be able to translate FIDENT
-               modlist.push_back("m_chgident.so");
-               for(int i=0; i * sizeof(char*) < sizeof(forge_common_1201); i++)
-               {
-                       if (ServerInstance->Modules->Find(forge_common_1201[i]))
-                               modlist.push_back(forge_common_1201[i]);
-               }
-               // module was merged
-               if (ServerInstance->Modules->Find("m_operchans.so"))
-               {
-                       modlist.push_back("m_operchans.so");
-                       modlist.push_back("m_operinvex.so");
-               }
-       }
-}
-
 void TreeSocket::WriteLine(std::string line)
 {
        if (LinkState == CONNECTED)
@@ -127,70 +39,10 @@ void TreeSocket::WriteLine(std::string line)
                        std::string command = line.substr(a + 1, b-a-1);
                        // now try to find a translation entry
                        // TODO a more efficient lookup method will be needed later
-                       if (proto_version < 1202 && command == "FIDENT")
-                       {
-                               ServerInstance->Logs->Log("m_spanningtree",DEBUG,"Rewriting FIDENT for 1201-protocol server");
-                               line = ":" + ServerInstance->Config->GetSID() + " CHGIDENT " +  line.substr(1,a-1) + line.substr(b);
-                       }
-                       else if (proto_version < 1202 && command == "SAVE")
-                       {
-                               ServerInstance->Logs->Log("m_spanningtree",DEBUG,"Rewriting SAVE for 1201-protocol server");
-                               std::string::size_type c = line.find(' ', b + 1);
-                               std::string uid = line.substr(b, c - b);
-                               line = ":" + ServerInstance->Config->GetSID() + " SVSNICK" + uid + line.substr(b);
-                       }
-                       else if (proto_version < 1202 && command == "AWAY")
-                       {
-                               if (b != std::string::npos)
-                               {
-                                       ServerInstance->Logs->Log("m_spanningtree",DEBUG,"Stripping AWAY timestamp for 1201-protocol server");
-                                       std::string::size_type c = line.find(' ', b + 1);
-                                       line.erase(b,c-b);
-                               }
-                       }
-                       else if (proto_version < 1202 && command == "ENCAP")
-                       {
-                               // :src ENCAP target command [args...]
-                               //     A     B      C       D
-                               // Therefore B and C cannot be npos in a valid command
-                               if (b == std::string::npos)
-                                       return;
-                               std::string::size_type c = line.find(' ', b + 1);
-                               if (c == std::string::npos)
-                                       return;
-                               std::string::size_type d = line.find(' ', c + 1);
-                               std::string subcmd = line.substr(c + 1, d - c - 1);
-
-                               if (subcmd == "CHGIDENT" && d != std::string::npos)
-                               {
-                                       std::string::size_type e = line.find(' ', d + 1);
-                                       if (e == std::string::npos)
-                                               return; // not valid
-                                       std::string target = line.substr(d + 1, e - d - 1);
-
-                                       ServerInstance->Logs->Log("m_spanningtree",DEBUG,"Forging acceptance of CHGIDENT from 1201-protocol server");
-                                       recvq.insert(0, ":" + target + " FIDENT " + line.substr(e) + "\n");
-                               }
-
-                               Command* thiscmd = ServerInstance->Parser->GetHandler(subcmd);
-                               if (thiscmd && subcmd != "WHOISNOTICE")
-                               {
-                                       Version ver = thiscmd->creator->GetVersion();
-                                       if (ver.Flags & VF_OPTCOMMON)
-                                       {
-                                               ServerInstance->Logs->Log("m_spanningtree",DEBUG,"Removing ENCAP on '%s' for 1201-protocol server",
-                                                       subcmd.c_str());
-                                               line.erase(a, c-a);
-                                       }
-                               }
-                       }
                }
        }
 
        ServerInstance->Logs->Log("m_spanningtree", RAWIO, "S[%d] O %s", this->GetFd(), line.c_str());
        this->WriteData(line);
-       if (proto_version < 1202)
-               this->WriteData(wide_newline);
-       else
-               this->WriteData(newline);
+       this->WriteData(newline);
 }
index d990e1fbf4dfa1c680fbbc9640660e7896ccdfd2..65b3a5997107c0947fa6b021a53c9cdeb4bbd53f 100644 (file)
@@ -62,38 +62,9 @@ std::string TreeSocket::MakePass(const std::string &password, const std::string
         */
        HashProvider* sha256 = ServerInstance->Modules->FindDataService<HashProvider>("hash/sha256");
        if (Utils->ChallengeResponse && sha256 && !challenge.empty())
-       {
-               if (proto_version < 1202)
-               {
-                       /* This is how HMAC is done in InspIRCd 1.2:
-                        *
-                        * sha256( (pass xor 0x5c) + sha256((pass xor 0x36) + m) )
-                        *
-                        * 5c and 36 were chosen as part of the HMAC standard, because they
-                        * flip the bits in a way likely to strengthen the function.
-                        */
-                       std::string hmac1, hmac2;
-
-                       for (size_t n = 0; n < password.length(); n++)
-                       {
-                               hmac1.push_back(static_cast<char>(password[n] ^ 0x5C));
-                               hmac2.push_back(static_cast<char>(password[n] ^ 0x36));
-                       }
-
-                       hmac2.append(challenge);
-                       hmac2 = sha256->hexsum(hmac2);
-               
-                       std::string hmac = hmac1 + hmac2;
-                       hmac = sha256->hexsum(hmac);
+               return "AUTH:" + BinToBase64(sha256->hmac(password, challenge));
 
-                       return "HMAC-SHA256:"+ hmac;
-               }
-               else
-               {
-                       return "AUTH:" + BinToBase64(sha256->hmac(password, challenge));
-               }
-       }
-       else if (!challenge.empty() && !sha256)
+       if (!challenge.empty() && !sha256)
                ServerInstance->Logs->Log("m_spanningtree",DEFAULT,"Not authenticating to server using SHA256/HMAC because we don't have m_sha256 loaded!");
 
        return password;
index ae6e2e602d1b08432598665773bccf4078f3ff0a..1a16d72bbae5a02a64518388951ec334844549b4 100644 (file)
@@ -37,7 +37,7 @@
  * painful death by pain. You have been warned.
  */
 const long ProtocolVersion = 1202;
-const long MinCompatProtocol = 1201;
+const long MinCompatProtocol = 1202;
 
 /** Forward declarations
  */
index adfa7642cffc7278cfb0aa4fd8592db9422a4324..53dfc3dc01e71e224195e5b8412dac0552f1102c 100644 (file)
@@ -775,8 +775,6 @@ void LocalUser::FullConnect()
        if (quitting)
                return;
 
-       if (ServerInstance->Config->WelcomeNotice)
-               this->WriteServ("NOTICE Auth :Welcome to \002%s\002!",ServerInstance->Config->Network.c_str());
        this->WriteNumeric(RPL_WELCOME, "%s :Welcome to the %s IRC Network %s",this->nick.c_str(), ServerInstance->Config->Network.c_str(), GetFullRealHost().c_str());
        this->WriteNumeric(RPL_YOURHOSTIS, "%s :Your host is %s, running version %s",this->nick.c_str(),ServerInstance->Config->ServerName.c_str(),BRANCH);
        this->WriteNumeric(RPL_SERVERCREATED, "%s :This server was created %s %s", this->nick.c_str(), __TIME__, __DATE__);