- 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>Count</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++)
- {
- data << "<TR><TD>" << a->first << "</TD><TD>" << a->second << "</TD></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");
+ Membership* memb = x->second;
+ data << "<channelmember><uid>" << memb->user->uuid << "</uid><privs>"
+ << Sanitize(memb->GetAllPrefixChars()) << "</privs><modes>"
+ << memb->modes << "</modes>";
+ DumpMeta(data, memb);
+ data << "</channelmember>";