diff options
| author | 2022-05-07 17:19:01 +0100 | |
|---|---|---|
| committer | 2022-05-07 17:19:01 +0100 | |
| commit | a31baf263eb58f97eae19a9efc4e85f85e726a5f (patch) | |
| tree | d12a75e015ac14bfbef28935074a57cd95101a20 /src/modules/m_spanningtree | |
| parent | Fix an off by one error in regex_posix. (diff) | |
| parent | Make linking servers over UNIX sockets less difficult. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_spanningtree')
| -rw-r--r-- | src/modules/m_spanningtree/server.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/utils.cpp | 19 |
2 files changed, 16 insertions, 5 deletions
diff --git a/src/modules/m_spanningtree/server.cpp b/src/modules/m_spanningtree/server.cpp index 8f0b68b96..d8b0edc02 100644 --- a/src/modules/m_spanningtree/server.cpp +++ b/src/modules/m_spanningtree/server.cpp @@ -138,7 +138,7 @@ std::shared_ptr<Link> TreeSocket::AuthRemote(const CommandBase::Params& params) ssliohook->GetCiphersuite(ciphersuite); ServerInstance->SNO.WriteToSnoMask('l', "Negotiated ciphersuite %s on link %s", ciphersuite.c_str(), x->Name.c_str()); } - else if (!irc::sockets::cidr_mask("127.0.0.0/8").match(capab->remotesa) && !irc::sockets::cidr_mask("::1/128").match(capab->remotesa)) + else if (capab->remotesa.family() != AF_UNIX && !irc::sockets::cidr_mask("127.0.0.0/8").match(capab->remotesa) && !irc::sockets::cidr_mask("::1/128").match(capab->remotesa)) { this->SendError("Non-local server connections MUST be linked with SSL!"); return NULL; diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index 58b908413..e104bd63d 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -202,7 +202,8 @@ void SpanningTreeUtilities::RefreshIPCache() ValidIPs.clear(); for (std::shared_ptr<Link> L : LinkBlocks) { - if (!L->Port) + bool isunix = L->IPAddr.find('/') != std::string::npos; + if (!L->Port && !isunix) { ServerInstance->Logs.Normal(MODNAME, "Ignoring a link block without a port."); /* Invalid link block */ @@ -213,7 +214,7 @@ void SpanningTreeUtilities::RefreshIPCache() irc::sockets::sockaddrs dummy; bool ipvalid = irc::sockets::aptosa(L->IPAddr, L->Port, dummy); - if ((L->IPAddr == "*") || (ipvalid)) + if ((L->IPAddr == "*") || (isunix) || (ipvalid)) ValidIPs.push_back(L->IPAddr); else if (this->Creator->DNS) { @@ -257,9 +258,19 @@ void SpanningTreeUtilities::ReadConfiguration() for (std::string s; sep.GetToken(s);) L->AllowMasks.push_back(s); + const std::string path = tag->getString("path"); + if (path.empty()) + { + L->IPAddr = tag->getString("ipaddr"); + L->Port = static_cast<unsigned int>(tag->getUInt("port", 0, 0, UINT16_MAX)); + } + else + { + L->IPAddr = ServerInstance->Config->Paths.PrependData(path); + L->Port = 0; + } + L->Name = tag->getString("name"); - L->IPAddr = tag->getString("ipaddr"); - L->Port = static_cast<unsigned int>(tag->getUInt("port", 0, 0, UINT16_MAX)); L->SendPass = tag->getString("sendpass", tag->getString("password")); L->RecvPass = tag->getString("recvpass", tag->getString("password")); L->Fingerprint = tag->getString("fingerprint"); |
