aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-05-07 17:19:01 +0100
committerGravatar Sadie Powell2022-05-07 17:19:01 +0100
commita31baf263eb58f97eae19a9efc4e85f85e726a5f (patch)
treed12a75e015ac14bfbef28935074a57cd95101a20 /src
parentFix an off by one error in regex_posix. (diff)
parentMake linking servers over UNIX sockets less difficult. (diff)
Merge branch 'insp3' into master.
Diffstat (limited to 'src')
-rw-r--r--src/modules/extra/m_argon2.cpp2
-rw-r--r--src/modules/m_spanningtree/server.cpp2
-rw-r--r--src/modules/m_spanningtree/utils.cpp19
3 files changed, 17 insertions, 6 deletions
diff --git a/src/modules/extra/m_argon2.cpp b/src/modules/extra/m_argon2.cpp
index 48554cc6d..58e11eef0 100644
--- a/src/modules/extra/m_argon2.cpp
+++ b/src/modules/extra/m_argon2.cpp
@@ -22,7 +22,7 @@
/// $PackageInfo: require_system("arch") argon2 pkgconf
/// $PackageInfo: require_system("darwin") argon2 pkg-config
-/// $PackageInfo: require_system("debian" "9.0") libargon2-0 pkg-config
+/// $PackageInfo: require_system("debian" "10.0") libargon2-dev pkg-config
/// $PackageInfo: require_system("ubuntu" "18.04") libargon2-0-dev pkg-config
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");