bool CLogMod::OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) { CFile LogFile(m_sLogPath); CDir LogDir (LogFile.GetDir()); for(std::vector<CFile*>::iterator it = LogDir.begin(); it != LogDir.end(); ++it) { CTemplate& Row = Tmpl.AddRow("LogsLoop"); Row["File"] = (**it).GetShortName(); } if (WebSock.HasParam("file", false)) { CString path = CDir::CheckPathPrefix(GetSavePath(), LogFile.GetDir() + WebSock.GetParam("file", false)); if (path.empty()) { WebSock.PrintErrorPage("Invalid Path"); return true; } CFile DisplayFile(path); CString content; DisplayFile.Open(); int PageSize = 1024 * 1024; int Page = 0; if (WebSock.HasParam("page", false)) { Page = WebSock.GetParam("page", false).ToInt(); DisplayFile.Seek(Page * PageSize); } Tmpl["Prev"] = CString(Page - 1); Tmpl["Next"] = CString(Page + 1); Tmpl["Curr"] = WebSock.GetParam("file", false); DisplayFile.ReadFile(content, PageSize); DisplayFile.Close(); Tmpl["Log"] = content; } return true; }