From f8f718437c7e20fded119c2a92b2c22b0f930dcf Mon Sep 17 00:00:00 2001 From: prozacx Date: Sat, 24 Sep 2005 18:07:13 +0000 Subject: [PATCH] Added support for allowed hosts git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@531 726aef4b-f618-498e-8847-2d620e286838 --- modules/webadmin.cpp | 47 +++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index 92c8dd91..3a4e0920 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -164,7 +164,13 @@ CString CWebAdminSock::Header(const CString& sTitle) { "\r\nZNC - " + sTitle.Escape_n(CString::EHTML) + "\r\n" "\r\n" "\r\n" - "\r\n" + "\r\n" "\r\n" + return "\r\n" "

" + sTitle.Escape_n(CString::EHTML) + "

" + "" + "" + "" + "" + "
 

" + sTitle.Escape_n(CString::EHTML) + "

" + GetUser().Escape_n(CString::EHTML) + "@" + GetRemoteIP().Escape_n(CString::EHTML) + "
" + "
\r\n"; if (IsAdmin()) { @@ -180,7 +186,7 @@ CString CWebAdminSock::Header(const CString& sTitle) { } CString CWebAdminSock::Footer() { - return "
" + CZNC::Get().GetTag() + "
" + CZNC::Get().GetTag().Escape_n(CString::EHTML) + "
\r\n\r\n"; } @@ -192,14 +198,18 @@ bool CWebAdminSock::OnLogin(const CString& sUser, const CString& sPass) { CUser* pUser = CZNC::Get().FindUser(GetUser()); - if (pUser && pUser->CheckPass(GetPass())) { - if (pUser->IsAdmin()) { - m_bAdmin = true; - } else { - m_pUser = pUser; - } + if (pUser) { + CString sHost = GetRemoteIP(); - return true; + if (pUser->IsHostAllowed(sHost) && pUser->CheckPass(GetPass())) { + if (pUser->IsAdmin()) { + m_bAdmin = true; + } else { + m_pUser = pUser; + } + + return true; + } } return false; @@ -684,10 +694,19 @@ bool CWebAdminSock::UserPage(CString& sPageRet, CUser* pUser) { sPageRet += "
\r\n"; } + CString sIP = GetRemoteIP(); + + sIP = sIP.Token(0, false, ".") + "." + sIP.Token(1, false, ".") + "." + sIP.Token(2, false, ".") + ".*"; + sPageRet += "Password:

\r\n" - "Confirm Password:
\r\n" - "
Allowed IPs:
\r\n" - "


\r\n" + "Confirm Password:


\r\n" + "
Allowed IPs:

\r\n"; + + if (pUser && pUser == CZNC::Get().FindUser(GetUser())) { + sPageRet += "  \r\n"; + } + + sPageRet += "



\r\n" "
IRC Information
\r\n" "
Nick:
\r\n" @@ -916,6 +935,10 @@ CUser* CWebAdminSock::GetNewUser(CString& sPageRet, CUser* pUser) { pNewUser->AddAllowedHost(vsArgs[a].Trim_n()); } + if (HasParam("ownip")) { + pNewUser->AddAllowedHost(GetParam("ownip")); + } + GetParam("ctcpreplies").Split("\n", vsArgs); for (a = 0; a < vsArgs.size(); a++) { CString sReply = vsArgs[a].TrimRight_n("\r");