From cbc27f5bb9252528582aa518927d0cd4814355eb Mon Sep 17 00:00:00 2001 From: psychon Date: Sat, 21 Feb 2009 16:48:28 +0000 Subject: [PATCH] Call OnFailedLogin() for all failed logins, not only those on the irc port This breaks CAuthBase's API for modules that want to auth users. Instead of overloading AcceptLogin() and RefuseLogin(), they now have to overload AcceptedLogin() and RefusedLogin(). Modules that auth users (e.g. imapauth) still call AcceptLogin() and RefuseLogin() which is where OnFailedLogin() gets called. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1389 726aef4b-f618-498e-8847-2d620e286838 --- Client.cpp | 8 ++++++-- Client.h | 12 ++++++++---- modules/webadmin.cpp | 8 ++++---- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Client.cpp b/Client.cpp index e4e74e8e..e2638312 100644 --- a/Client.cpp +++ b/Client.cpp @@ -619,13 +619,17 @@ CClientAuth::CClientAuth(CClient* pClient, const CString& sUsername, const CStri m_pClient = pClient; } -void CClientAuth::RefuseLogin(const CString& sReason) { +void CClientAuth::RefusedLogin(const CString& sReason) { if (m_pClient) { m_pClient->RefuseLogin(sReason); } +} + +void CAuthBase::RefuseLogin(const CString& sReason) { #ifdef _MODULES CZNC::Get().GetModules().OnFailedLogin(GetUsername(), GetRemoteIP()); #endif + RefusedLogin(sReason); } void CClient::RefuseLogin(const CString& sReason) { @@ -639,7 +643,7 @@ void CClient::RefuseLogin(const CString& sReason) { Close(); } -void CClientAuth::AcceptLogin(CUser& User) { +void CClientAuth::AcceptedLogin(CUser& User) { if (m_pClient) { m_pClient->AcceptLogin(User); } diff --git a/Client.h b/Client.h index bdc4f2c7..101bba2b 100644 --- a/Client.h +++ b/Client.h @@ -36,13 +36,17 @@ public: m_sRemoteIP = sRemoteIP; } - virtual void AcceptLogin(CUser& User) = 0; - virtual void RefuseLogin(const CString& sReason) = 0; + void AcceptLogin(CUser& User) { AcceptedLogin(User); } + void RefuseLogin(const CString& sReason); const CString& GetUsername() const { return m_sUsername; } const CString& GetPassword() const { return m_sPassword; } const CString& GetRemoteIP() const { return m_sRemoteIP; } +protected: + virtual void AcceptedLogin(CUser& User) = 0; + virtual void RefusedLogin(const CString& sReason) = 0; + private: CString m_sUsername; CString m_sPassword; @@ -56,8 +60,8 @@ public: virtual ~CClientAuth() {} void SetClient(CClient* pClient) { m_pClient = pClient; } - void AcceptLogin(CUser& User); - void RefuseLogin(const CString& sReason); + void AcceptedLogin(CUser& User); + void RefusedLogin(const CString& sReason); private: protected: CClient* m_pClient; diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index a4b08734..dd52b558 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -26,8 +26,8 @@ public: virtual ~CWebAdminAuth() {} void SetWebAdminSock(CWebAdminSock* pWebAdminSock) { m_pWebAdminSock = pWebAdminSock; } - void AcceptLogin(CUser& User); - void RefuseLogin(const CString& sReason); + void AcceptedLogin(CUser& User); + void RefusedLogin(const CString& sReason); private: protected: CWebAdminSock* m_pWebAdminSock; @@ -1165,7 +1165,7 @@ CWebAdminAuth::CWebAdminAuth(CWebAdminSock* pWebAdminSock, const CString& sUsern m_pWebAdminSock = pWebAdminSock; } -void CWebAdminAuth::AcceptLogin(CUser& User) { +void CWebAdminAuth::AcceptedLogin(CUser& User) { if (m_pWebAdminSock) { m_pWebAdminSock->SetSessionUser(&User); m_pWebAdminSock->SetLoggedIn(true); @@ -1173,7 +1173,7 @@ void CWebAdminAuth::AcceptLogin(CUser& User) { } } -void CWebAdminAuth::RefuseLogin(const CString& sReason) { +void CWebAdminAuth::RefusedLogin(const CString& sReason) { if (m_pWebAdminSock) { m_pWebAdminSock->SetLoggedIn(false); m_pWebAdminSock->UnPauseRead();