- log(DEBUG,"HTTP URL!");
-
- data << "<HTML><HEAD>";
- data << "<TITLE>InspIRCd server statisitics for " << Srv->GetServerName() << " (" << Srv->GetServerDescription() << ")</TITLE>";
- data << "</HEAD><BODY>";
- data << "<H1>InspIRCd server statisitics for " << Srv->GetServerName() << " (" << Srv->GetServerDescription() << ")</H1>";
-
- data << "<DIV ID='TOTALS'>";
- data << "<H2>Totals</H2>";
- data << "<TABLE>";
- data << "<TR><TD>Users</TD><TD>" << clientlist.size() << "</TD></TR>";
- data << "<TR><TD>Channels</TD><TD>" << chanlist.size() << "</TD></TR>";
- data << "<TR><TD>Opers</TD><TD>" << all_opers.size() << "</TD></TR>";
- data << "<TR><TD>Sockets</TD><TD>" << (ServerInstance->SE->GetMaxFds() - ServerInstance->SE->GetRemainingFds()) << " (Max: " << ServerInstance->SE->GetMaxFds() << " via socket engine '" << ServerInstance->SE->GetName() << "')</TD></TR>";
- data << "</TABLE>";
- data << "</DIV>";
-
- data << "<DIV ID='MODULES'>";
- data << "<H2>Modules</H2>";
- data << "<TABLE>";
- for (int i = 0; i <= MODCOUNT; i++)
- {
- if (Config->module_names[i] != "")
- data << "<TR><TD>" << Config->module_names[i] << "</TD></TR>";
- }
- data << "</TABLE>";
- data << "</DIV>";
-
- data << "<DIV ID='CHANNELS'>";
- data << "<H2>Channels</H2>";
- data << "<TABLE>";
- data << "<TR><TH>Users</TH><TH>Name</TH><TH>@</TH><TH>%</TH><TH>+</TH></TR>";
-
- /* If the list has changed since last time it was displayed, re-sort it
- * this time only (not every time, as this would be moronic)
- */
- if (this->changed)
- this->SortList();
-
- int n = 0;
- for (SortedIter a = so->begin(); ((a != so->end()) && (n < 25)); a++, n++)
- {
- chanrec* c = Srv->FindChannel(a->second.c_str());
- if (c)
- {
- data << "<TR><TD>" << a->first << "</TD><TD>" << a->second << "</TD>";
- data << "<TD>" << c->GetOppedUsers()->size() << "</TD>";
- data << "<TD>" << c->GetHalfoppedUsers()->size() << "</TD>";
- data << "<TD>" << c->GetVoicedUsers()->size() << "</TD>";
- data << "</TR>";
- }
- }
-
- data << "</TABLE>";
- data << "</DIV>";
-
-
- data << "</BODY>";
- data << "</HTML>";
-
- /* Send the document back to m_httpd */
- HTTPDocument response(http->sock, &data, 200, "X-Powered-By: m_http_stats.so\r\nContent-Type: text/html\r\n");
- Request req((char*)&response, (Module*)this, event->GetSource());
- req.Send();
-
- log(DEBUG,"Sent");