From 50dea12a2e100db4a25f2f2dc52889b1931e8282 Mon Sep 17 00:00:00 2001 From: cflakes Date: Mon, 5 Apr 2010 15:18:02 +0000 Subject: [PATCH] Webadmin now finally displays "failed to load module" messages, thanks to the WebMods framework. Yay! git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1887 726aef4b-f618-498e-8847-2d620e286838 --- modules/webadmin.cpp | 49 ++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index 8d85f6fb..e0ff1eb3 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -20,15 +20,6 @@ using std::stringstream; using std::make_pair; -/* - void GetErrorPage(CString& sPageRet, const CString& sError) { - m_Template["Action"] = "error"; - m_Template["Title"] = "Error"; - m_Template["Error"] = sError; - - PrintPage(sPageRet, "Error.tmpl"); - } -*/ class CWebAdminMod : public CGlobalModule { public: @@ -185,16 +176,22 @@ public: for (a = 0; a < vsArgs.size(); a++) { CString sModRet; CString sModName = vsArgs[a].TrimRight_n("\r"); + CString sModLoadError; if (!sModName.empty()) { CString sArgs = WebSock.GetParam("modargs_" + sModName); try { if (!pNewUser->GetModules().LoadModule(sModName, sArgs, pNewUser, sModRet, (pUser != NULL))) { - DEBUG("Unable to load module [" << sModName << "] [" << sModRet << "]"); + sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]"; } } catch (...) { - DEBUG("Unable to load module [" << sModName << "] [" << sArgs << "]"); + sModLoadError = "Unable to load module [" + sModName + "] [" + sArgs + "]"; + } + + if (!sModLoadError.empty()) { + DEBUG(sModLoadError); + spSession->AddError(sModLoadError); } } } @@ -205,13 +202,19 @@ public: CString sModName = Modules[a]->GetModName(); CString sArgs = Modules[a]->GetArgs(); CString sModRet; + CString sModLoadError; try { if (!pNewUser->GetModules().LoadModule(sModName, sArgs, pNewUser, sModRet, (pUser != NULL))) { - DEBUG("Unable to load module [" << sModName << "] [" << sModRet << "]"); + sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]"; } } catch (...) { - DEBUG("Unable to load module [" << sModName << "]"); + sModLoadError = "Unable to load module [" + sModName + "]"; + } + + if (!sModLoadError.empty()) { + DEBUG(sModLoadError); + spSession->AddError(sModLoadError); } } } @@ -669,7 +672,8 @@ public: WebSock.Redirect("listusers"); } - return true; + /* we don't want the template to be printed while we redirect */ + return false; } bool ListUsersPage(CWebSock& WebSock, CTemplate& Tmpl) { @@ -820,6 +824,7 @@ public: for (set::iterator it = ssArgs.begin(); it != ssArgs.end(); ++it) { CString sModRet; CString sModName = (*it).TrimRight_n("\r"); + CString sModLoadError; if (!sModName.empty()) { CString sArgs = WebSock.GetParam("modargs_" + sModName); @@ -827,14 +832,17 @@ public: CModule *pMod = CZNC::Get().GetModules().FindModule(sModName); if (!pMod) { if (!CZNC::Get().GetModules().LoadModule(sModName, sArgs, NULL, sModRet)) { - DEBUG("Unable to load module [" << sModName << "] [" << sModRet << "]"); + sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]"; } } else if (pMod->GetArgs() != sArgs) { if (!CZNC::Get().GetModules().ReloadModule(sModName, sArgs, NULL, sModRet)) { - DEBUG("Unable to reload module [" << sModName << "] [" << sModRet << "]"); + sModLoadError = "Unable to reload module [" + sModName + "] [" + sModRet + "]"; } - } else { - DEBUG("Unable to load module [" << sModName << "] because it is already loaded"); + } + + if (!sModLoadError.empty()) { + DEBUG(sModLoadError); + WebSock.GetSession()->AddError(sModLoadError); } } } @@ -855,11 +863,12 @@ public: } if (!CZNC::Get().WriteConfig()) { - //WebSock.SetError("Settings changed, but config was not written"); + WebSock.GetSession()->AddError("Settings changed, but config was not written"); } WebSock.Redirect("settings"); - return true; + /* we don't want the template to be printed while we redirect */ + return false; } private: