From 44301db24589223e10fc898fb3ca6ec9f57a9bd5 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 20 Jan 2014 16:40:01 +0100 Subject: m_services_account Add workaround for wrong host being displayed in numeric when cgiirc users log in using SASL --- src/modules/m_services_account.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index a139087a5..154968e9e 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -114,6 +114,24 @@ class ModuleServicesAccount : public Module AccountExtItem accountname; bool checking_ban; + static bool ReadCGIIRCExt(const char* extname, User* user, const std::string*& out) + { + ExtensionItem* wiext = ServerInstance->Extensions.GetItem(extname); + if (!wiext) + return false; + + if (wiext->creator->ModuleSourceFile != "m_cgiirc.so") + return false; + + StringExtItem* stringext = static_cast(wiext); + std::string* addr = stringext->get(user); + if (!addr) + return false; + + out = addr; + return true; + } + public: ModuleServicesAccount() : m1(this), m2(this), m3(this), m4(this), m5(this), accountname("accountname", this), checking_ban(false) @@ -282,8 +300,19 @@ class ModuleServicesAccount : public Module trim(*account); if (IS_LOCAL(dest)) - dest->WriteNumeric(900, "%s %s %s :You are now logged in as %s", - dest->nick.c_str(), dest->GetFullHost().c_str(), account->c_str(), account->c_str()); + { + const std::string* host = &dest->dhost; + if (dest->registered != REG_ALL) + { + if (!ReadCGIIRCExt("cgiirc_webirc_hostname", dest, host)) + { + ReadCGIIRCExt("cgiirc_webirc_ip", dest, host); + } + } + + dest->WriteNumeric(900, "%s %s!%s@%s %s :You are now logged in as %s", + dest->nick.c_str(), dest->nick.c_str(), dest->ident.c_str(), host->c_str(), account->c_str(), account->c_str()); + } AccountEvent(this, dest, *account).Send(); } -- cgit v1.2.3