diff --git a/Client.cpp b/Client.cpp index e63d8643..33562a9e 100644 --- a/Client.cpp +++ b/Client.cpp @@ -620,7 +620,7 @@ void CClient::AuthUser() { } CClientAuth::CClientAuth(CClient* pClient, const CString& sUsername, const CString& sPassword) - : CAuthBase(sUsername, sPassword, pClient->GetRemoteIP()) { + : CAuthBase(sUsername, sPassword, pClient) { m_pClient = pClient; } @@ -630,6 +630,12 @@ void CClientAuth::RefusedLogin(const CString& sReason) { } } +CString CAuthBase::GetRemoteIP() const { + if (m_pSock) + return m_pSock->GetRemoteIP(); + return ""; +} + void CAuthBase::RefuseLogin(const CString& sReason) { CUser* pUser = CZNC::Get().GetUser(GetUsername()); diff --git a/Client.h b/Client.h index 101bba2b..9ffe0780 100644 --- a/Client.h +++ b/Client.h @@ -23,17 +23,17 @@ class CClientTimeout; class CAuthBase { public: - CAuthBase(const CString& sUsername, const CString& sPassword, const CString& sRemoteIP) { - SetLoginInfo(sUsername, sPassword, sRemoteIP); + CAuthBase(const CString& sUsername, const CString& sPassword, Csock *pSock) { + SetLoginInfo(sUsername, sPassword, pSock); } virtual ~CAuthBase() {} virtual void SetLoginInfo(const CString& sUsername, const CString& sPassword, - const CString& sRemoteIP) { + Csock *pSock) { m_sUsername = sUsername; m_sPassword = sPassword; - m_sRemoteIP = sRemoteIP; + m_pSock = pSock; } void AcceptLogin(CUser& User) { AcceptedLogin(User); } @@ -41,7 +41,7 @@ public: const CString& GetUsername() const { return m_sUsername; } const CString& GetPassword() const { return m_sPassword; } - const CString& GetRemoteIP() const { return m_sRemoteIP; } + CString GetRemoteIP() const; protected: virtual void AcceptedLogin(CUser& User) = 0; @@ -50,7 +50,7 @@ protected: private: CString m_sUsername; CString m_sPassword; - CString m_sRemoteIP; + Csock* m_pSock; }; diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index 95802dd8..eadc6567 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -1160,7 +1160,7 @@ CUser* CWebAdminSock::GetNewUser(CString& sPageRet, CUser* pUser) { CWebAdminAuth::CWebAdminAuth(CWebAdminSock* pWebAdminSock, const CString& sUsername, const CString& sPassword) - : CAuthBase(sUsername, sPassword, pWebAdminSock->GetRemoteIP()) { + : CAuthBase(sUsername, sPassword, pWebAdminSock) { m_pWebAdminSock = pWebAdminSock; }