aboutsummaryrefslogtreecommitdiff
path: root/modules/spanningtree/server.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2025-03-03 14:58:58 +0000
committerGravatar Sadie Powell2025-03-03 14:58:58 +0000
commitd4d2293244c1845d2ca44708e82cad0bd38741e5 (patch)
treee6c03e062dd5b2dc13f215169ab11455a2b89d88 /modules/spanningtree/server.cpp
parentMerge branch 'insp4' into master. (diff)
parentUse Duration::ToHuman instead of seconds in various messages. (diff)
Merge branch 'insp4' into master.
Diffstat (limited to 'modules/spanningtree/server.cpp')
-rw-r--r--modules/spanningtree/server.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/modules/spanningtree/server.cpp b/modules/spanningtree/server.cpp
index 711bc3b9b..e9d8ebd19 100644
--- a/modules/spanningtree/server.cpp
+++ b/modules/spanningtree/server.cpp
@@ -23,6 +23,8 @@
*/
+#include <filesystem>
+
#include "inspircd.h"
#include "modules/ssl.h"
@@ -33,6 +35,22 @@
#include "treesocket.h"
#include "commands.h"
+namespace
+{
+ bool RunningInContainer()
+ {
+ std::error_code ec;
+ if (std::filesystem::is_regular_file("/.dockerenv", ec))
+ {
+ // We are running inside of Docker so all IP addresses are
+ // non-local and as far as I can see there isn't a way to
+ // reliably detect the Docker network.
+ return true;
+ }
+ return false;
+ }
+}
+
/*
* Some server somewhere in the network introducing another server.
* -- w
@@ -138,7 +156,7 @@ std::shared_ptr<Link> TreeSocket::AuthRemote(const CommandBase::Params& params)
ssliohook->GetCiphersuite(ciphersuite);
ServerInstance->SNO.WriteToSnoMask('l', "Negotiated ciphersuite {} on link {}", ciphersuite, x->Name);
}
- else if (!capab->remotesa.is_local())
+ else if (!capab->remotesa.is_local() && !RunningInContainer())
{
this->SendError("Non-local server connections MUST be linked with SSL!");
return nullptr;