Ejemplo n.º 1
0
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;
}