From 9c02aff3e4a05c1aeb3f832da7d7c0e475121a96 Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 1 Nov 2007 18:19:54 +0000 Subject: Make misconfiguration of spanningtree more 'fatal' so we get less morons coming to us saying 'it wont link' and not knowing its skipped their invalid link tag git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8455 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree/utils.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index f147a6f79..adeacb5bd 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -487,7 +487,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind) if ((!transport.empty()) && (hooks.find(transport.c_str()) == hooks.end())) { - ServerInstance->Log(DEFAULT,"m_spanningtree: WARNING: Can't find transport type '%s' for port %s:%s - maybe you forgot to load it BEFORE m_spanningtree in your config file? - Skipping this port binding", transport.c_str(), IP.c_str(), Port.c_str()); + throw CoreException("Can't find transport type '"+transport+"' for port "+IP+":"+Port+" - maybe you forgot to load it BEFORE m_spanningtree in your config file?"); break; } @@ -544,8 +544,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind) if ((!L.Hook.empty()) && (hooks.find(L.Hook.c_str()) == hooks.end())) { - ServerInstance->Log(DEFAULT,"m_spanningtree: WARNING: Can't find transport type '%s' for link '%s' - maybe you forgot to load it BEFORE m_spanningtree in your config file? Skipping tag completely.", - L.Hook.c_str(), L.Name.c_str()); + throw CoreException("Can't find transport type '"+L.Hook+"' for link '"+assign(L.Name)+"' - maybe you forgot to load it BEFORE m_spanningtree in your config file? Skipping tag completely."); continue; } @@ -556,6 +555,12 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind) { if ((!L.IPAddr.empty()) && (!L.RecvPass.empty()) && (!L.SendPass.empty()) && (!L.Name.empty()) && (L.Port)) { + if (L.Name.find('.') == std::string::npos) + throw CoreException("The link name '"+assign(L.Name)+"' is invalid and must contain at least one '.' character"); + + if (L.Name.length() > 64) + throw CoreException("The link name '"+assign(L.Name)+"' is longer than 64 characters!"); + ValidIPs.push_back(L.IPAddr); if (Allow.length()) @@ -603,29 +608,29 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind) { if (L.IPAddr.empty()) { - ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', IP address not defined!",L.Name.c_str()); + throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', IP address not defined!"); } else if (L.RecvPass.empty()) { - ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', recvpass not defined!",L.Name.c_str()); + throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', recvpass not defined!"); } else if (L.SendPass.empty()) { - ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', sendpass not defined!",L.Name.c_str()); + throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', sendpass not defined!"); } else if (L.Name.empty()) { - ServerInstance->Log(DEFAULT,"Invalid configuration, link tag without a name!"); + throw CoreException("Invalid configuration, link tag without a name! IP address: "+L.IPAddr); } else if (!L.Port) { - ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', no port specified!",L.Name.c_str()); + throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', no port specified!"); } } } else { - ServerInstance->Log(DEFAULT,"Invalid configuration for server '%s', link tag has the same server name as the local server!",L.Name.c_str()); + throw CoreException("Invalid configuration for server '"+assign(L.Name)+"', link tag has the same server name as the local server!"); } } DELETE(Conf); -- cgit v1.2.3