diff options
author | Sadie Powell <sadie@witchery.services> | 2020-11-03 15:43:04 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2020-11-03 15:43:04 +0000 |
commit | 0a6b1e1a7de92e078a98f0b955d2624e5b85e4c1 (patch) | |
tree | 203e657ce7177250199923504f53d5f214efe454 /src/modules | |
parent | d38595e7e14e7509e744d33df657d50d00cc201f (diff) |
Make connect class debug logging more complete and consistent.
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_cgiirc.cpp | 13 | ||||
-rw-r--r-- | src/modules/m_dnsbl.cpp | 14 | ||||
-rw-r--r-- | src/modules/m_geoclass.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_ident.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_services_account.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_sslinfo.cpp | 16 |
6 files changed, 43 insertions, 10 deletions
diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp index 9397b206a..52c24e50a 100644 --- a/src/modules/m_cgiirc.cpp +++ b/src/modules/m_cgiirc.cpp @@ -346,11 +346,22 @@ class ModuleCgiIRC // cannot match this connect class. const std::string* gateway = cmd.gateway.get(user); if (!gateway) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires a connection via a WebIRC gateway", + myclass->GetName().c_str()); return MOD_RES_DENY; + } // If the gateway matches the <connect:webirc> constraint then // allow the check to continue. Otherwise, reject it. - return InspIRCd::Match(*gateway, webirc) ? MOD_RES_PASSTHRU : MOD_RES_DENY; + if (!InspIRCd::Match(*gateway, webirc)) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as the WebIRC gateway name (%s) does not match %s", + myclass->GetName().c_str(), gateway->c_str(), webirc.c_str()); + return MOD_RES_DENY; + } + + return MOD_RES_PASSTHRU; } ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp index 689f3f1be..6265ca85a 100644 --- a/src/modules/m_dnsbl.cpp +++ b/src/modules/m_dnsbl.cpp @@ -427,12 +427,20 @@ class ModuleDNSBL : public Module, public Stats::EventListener std::string* match = nameExt.get(user); if (!match) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires a DNSBL mark", + myclass->GetName().c_str()); return MOD_RES_DENY; + } - if (InspIRCd::Match(*match, dnsbl)) - return MOD_RES_PASSTHRU; + if (!InspIRCd::Match(*match, dnsbl)) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as the DNSBL mark (%s) does not match %s", + myclass->GetName().c_str(), match->c_str(), dnsbl.c_str()); + return MOD_RES_DENY; + } - return MOD_RES_DENY; + return MOD_RES_PASSTHRU; } ModResult OnCheckReady(LocalUser *user) CXX11_OVERRIDE diff --git a/src/modules/m_geoclass.cpp b/src/modules/m_geoclass.cpp index 6251131fd..8289c9a60 100644 --- a/src/modules/m_geoclass.cpp +++ b/src/modules/m_geoclass.cpp @@ -68,6 +68,8 @@ class ModuleGeoClass // A list of country codes were specified but the user didn't match // any of them. + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as the origin country (%s) is not any of %s", + myclass->GetName().c_str(), code.c_str(), country.c_str()); return MOD_RES_DENY; } diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp index fe0f3e80d..73dc64cf0 100644 --- a/src/modules/m_ident.cpp +++ b/src/modules/m_ident.cpp @@ -410,7 +410,11 @@ class ModuleIdent : public Module ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) CXX11_OVERRIDE { if (myclass->config->getBool("requireident") && state.get(user) != IDENT_FOUND) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires an identd response", + myclass->GetName().c_str()); return MOD_RES_DENY; + } return MOD_RES_PASSTHRU; } diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index 0ca29f603..53d1a4730 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -317,7 +317,11 @@ class ModuleServicesAccount ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) CXX11_OVERRIDE { if (myclass->config->getBool("requireaccount") && !accountname.get(user)) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires the user to be logged into an account", + myclass->GetName().c_str()); return MOD_RES_DENY; + } return MOD_RES_PASSTHRU; } diff --git a/src/modules/m_sslinfo.cpp b/src/modules/m_sslinfo.cpp index 70e065257..0054e3ed7 100644 --- a/src/modules/m_sslinfo.cpp +++ b/src/modules/m_sslinfo.cpp @@ -318,21 +318,25 @@ class ModuleSSLInfo ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass) CXX11_OVERRIDE { ssl_cert* cert = cmd.sslapi.GetCertificate(user); - bool ok = true; + const char* error = NULL; const std::string requiressl = myclass->config->getString("requiressl"); if (stdalgo::string::equalsci(requiressl, "trusted")) { - ok = (cert && cert->IsCAVerified()); - ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "Class requires a trusted TLS (SSL) client certificate. Client %s one.", (ok ? "has" : "does not have")); + if (!cert || !cert->IsCAVerified()) + error = "a trusted TLS (SSL) client certificate"; } else if (myclass->config->getBool("requiressl")) { - ok = (cert != NULL); - ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "Class requires a secure connection. Client %s on a secure connection.", (ok ? "is" : "is not")); + if (!cert) + error = "a TLS (SSL) connection"; } - if (!ok) + if (error) + { + ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as it requires %s", + myclass->GetName().c_str(), error); return MOD_RES_DENY; + } return MOD_RES_PASSTHRU; } |