bool OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) override { if (sPageName == "index") { if (CZNC::Get().GetManager().empty()) { return false; } std::priority_queue<CSocketSorter> socks = GetSockets(); while (!socks.empty()) { Csock* pSocket = socks.top().GetSock(); socks.pop(); CTemplate& Row = Tmpl.AddRow("SocketsLoop"); Row["Name"] = pSocket->GetSockName(); Row["Created"] = GetCreatedTime(pSocket); Row["State"] = GetSocketState(pSocket); Row["SSL"] = pSocket->GetSSL() ? "Yes" : "No"; Row["Local"] = GetLocalHost(pSocket, true); Row["Remote"] = GetRemoteHost(pSocket, true); Row["In"] = CString::ToByteStr(pSocket->GetBytesRead()); Row["Out"] = CString::ToByteStr(pSocket->GetBytesWritten()); } return true; } return false; }
void ShowSocks(bool bShowHosts) { if (CZNC::Get().GetManager().empty()) { PutStatus("You have no open sockets."); return; } std::priority_queue<CSocketSorter> socks = GetSockets(); CTable Table; Table.AddColumn("Name"); Table.AddColumn("Created"); Table.AddColumn("State"); #ifdef HAVE_LIBSSL Table.AddColumn("SSL"); #endif Table.AddColumn("Local"); Table.AddColumn("Remote"); Table.AddColumn("In"); Table.AddColumn("Out"); while (!socks.empty()) { Csock* pSocket = socks.top().GetSock(); socks.pop(); Table.AddRow(); Table.SetCell("Name", pSocket->GetSockName()); Table.SetCell("Created", GetCreatedTime(pSocket)); Table.SetCell("State", GetSocketState(pSocket)); #ifdef HAVE_LIBSSL Table.SetCell("SSL", pSocket->GetSSL() ? "Yes" : "No"); #endif Table.SetCell("Local", GetLocalHost(pSocket, bShowHosts)); Table.SetCell("Remote", GetRemoteHost(pSocket, bShowHosts)); Table.SetCell("In", CString::ToByteStr(pSocket->GetBytesRead())); Table.SetCell("Out", CString::ToByteStr(pSocket->GetBytesWritten())); } PutModule(Table); return; }