📄 servhtml.cpp
字号:
html.startTableRow(row++); html.startTagEnd("td","Skips"); html.startTagEnd("td","%d",info->numSkips); html.end(); html.startTableRow(row++); html.startTagEnd("td","Status"); html.startTagEnd("td",ch->getStatusStr()); html.end(); } html.startTableRow(row++); html.startTagEnd("td colspan=\"2\" align=\"center\"","<b>Current Track</b>"); html.end(); html.startTableRow(row++); html.startTagEnd("td","Artist"); html.startTagEnd("td",track.artist.cstr()); html.end(); html.startTableRow(row++); html.startTagEnd("td","Title"); html.startTagEnd("td",track.title.cstr()); html.end(); html.startTableRow(row++); html.startTagEnd("td","Album"); html.startTagEnd("td",track.album.cstr()); html.end(); html.startTableRow(row++); html.startTagEnd("td","Genre"); html.startTagEnd("td",track.genre.cstr()); html.end(); html.startTableRow(row++); html.startTagEnd("td","Contact"); html.startTagEnd("td",track.contact.cstr()); html.end(); html.end();}static int compareHits(ChanHit **c2, ChanHit **c1){ return c1[0]->time-c2[0]->time;}// -----------------------------------void Servent::addChanHits(HTML &html, ChanHitList *chl, ChanHit *source, ChanInfo &info){ html.startTagEnd("br"); html.startTag("table border=\"0\" align=\"center\""); html.startTag("tr bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td"," "); html.startTagEnd("td","<b>IP:Port</b>"); html.startTagEnd("td","<b>Hops</b>"); html.startTagEnd("td","<b>Listeners</b>"); html.startTagEnd("td","<b>Uptime</b>"); html.startTagEnd("td","<b>Skips</b>"); html.startTagEnd("td","<b>Push</b>"); html.startTagEnd("td","<b>Busy</b>"); html.startTagEnd("td","<b>Stable</b>"); html.startTagEnd("td","<b>Agent</b>"); html.startTagEnd("td","<b>Update</b>"); html.end(); int i; int row=0; ChanHit *hits[ChanHitList::MAX_HITS]; int numHits=0; for(i=0; i<ChanHitList::MAX_HITS; i++) if (chl->hits[i].host.ip) hits[numHits++] = &chl->hits[i]; qsort(hits,numHits,sizeof(ChanHit*),(COMPARE_FUNC)compareHits); for(i=0; i<numHits; i++) { ChanHit *ch = hits[i]; if (ch->host.ip) { html.startTableRow(row++); bool isSource = false; if (source) if (source->host.isSame(ch->host)) isSource = true; html.startTagEnd("td",isSource?"*":""); // IP char ipStr[64]; ch->host.toStr(ipStr); // ID char idStr[64]; info.id.toStr(idStr); if (!ch->firewalled) { String temp; html.startTag("td"); sprintf(temp.data,"peercast://pls/%s?ip=%s",idStr,ipStr); html.addLink(temp.data,ipStr); html.end(); }else html.startTagEnd("td","%s",ipStr); html.startTagEnd("td","%d",ch->hops); html.startTagEnd("td","%d",ch->numListeners); String hitTime; hitTime.setFromStopwatch(ch->upTime); html.startTagEnd("td",hitTime.cstr()); html.startTagEnd("td","%d",ch->numSkips); html.startTagEnd("td","%s",ch->firewalled?"Yes":"No"); html.startTagEnd("td","%s",ch->busy?"Yes":"No"); html.startTagEnd("td","%s",ch->stable?"Yes":"No"); if (ch->agentStr[0]) html.startTagEnd("td","%s",ch->agentStr); else html.startTagEnd("td","-"); if (ch->time) hitTime.setFromStopwatch(sys->getTime()-ch->time); else hitTime.set("-"); html.startTagEnd("td",hitTime.cstr()); html.end(); } } html.end();} // -----------------------------------void Servent::addSettingsPage(HTML &html){ addHeader(html,5); html.startTag("table border=\"0\" align=\"center\""); html.startTag("form method=\"get\" action=\"/admin\""); html.startTag("tr align=\"center\""); html.startTag("td valign=\"top\""); addServerOptions(html); html.end(); html.startTag("td valign=\"top\""); addClientOptions(html); html.end(); html.end(); html.startTag("tr align=\"center\""); html.startTag("td valign=\"top\""); addConnectOptions(html); html.end(); html.startTag("td valign=\"top\""); addRelayOptions(html); html.end(); html.end(); html.startTag("tr align=\"center\""); html.startTag("td valign=\"top\""); addFilterOptions(html); html.end(); html.startTag("td valign=\"top\""); addSecurityOptions(html); html.end(); html.end(); html.startTag("tr align=\"center\""); html.startTag("td valign=\"top\""); addAuthOptions(html); html.end(); html.startTag("td valign=\"top\""); addLogOptions(html); html.end(); html.end(); if (servMgr->isRoot) { html.startTag("tr align=\"center\""); html.startTag("td valign=\"top\""); addRootOptions(html); html.end(); html.end(); } html.startTag("tr align=\"center\""); html.startTag("td colspan=\"2\""); html.startTagEnd("input name=\"submit\" type=\"submit\" value=\"Save Settings\""); html.startTagEnd("input name=\"cmd\" type=\"hidden\" value=\"apply\""); html.end(); html.end(); html.end(); // form html.end(); // table addFooter(html);} // -----------------------------------void Servent::addWinampSettingsPage(HTML &html){ addBasicHeader(html); html.startTag("form method=\"get\" action=\"/admin\""); html.startTagEnd("input name=\"submit\" type=\"submit\" value=\"Save Settings\""); html.startTagEnd("input name=\"cmd\" type=\"hidden\" value=\"apply\""); addServerOptions(html); addClientOptions(html); addConnectOptions(html); addRelayOptions(html); addFilterOptions(html); addSecurityOptions(html); addAuthOptions(html); addLogOptions(html); if (servMgr->isRoot) addRootOptions(html); html.end(); // form addFooter(html);} // -----------------------------------static int addStat(HTML &html,int row, int totIn,int totOut, const char *name, Stats::STAT in, Stats::STAT out){ html.startTableRow(row++); html.startTagEnd("td",name); unsigned int v; if ((in) && (totIn)) { v = stats.getCurrent(in); html.startTagEnd("td","%d",v); html.startTagEnd("td","%d",totIn?((v*100)/totIn):0); }else { html.startTagEnd("td","-"); html.startTagEnd("td","-"); } if ((out) && (totOut)) { v = stats.getCurrent(out); html.startTagEnd("td","%d",v); html.startTagEnd("td","%d",totOut?((v*100)/totOut):0); }else { html.startTagEnd("td","-"); html.startTagEnd("td","-"); } html.end(); return row;}// -----------------------------------void Servent::addNetStatsPage(HTML &html){ addHeader(html,0); int row=0; html.startTag("table width=\"50%%\" border=\"0\" align=\"center\""); row = 0; html.startTag("tr width=\"100%%\" bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td colspan=\"5\"","<b>Packets</b>"); html.end(); html.startTableRow(row++); html.startTagEnd("td"," "); html.startTagEnd("td","<b>In</b>"); html.startTagEnd("td","<b>In %s</b>","%%"); html.startTagEnd("td","<b>Out</b>"); html.startTagEnd("td","<b>Out %s</b>","%%"); html.end(); unsigned int totalIn = stats.getCurrent(Stats::NUMPACKETSIN); unsigned int totalOut = stats.getCurrent(Stats::NUMPACKETSOUT); row=addStat(html,row,totalIn,totalOut,"Total",Stats::NUMPACKETSIN,Stats::NUMPACKETSOUT); row=addStat(html,row,totalIn,totalOut,"Ping",Stats::NUMPINGIN,Stats::NUMPINGOUT); row=addStat(html,row,totalIn,totalOut,"Pong",Stats::NUMPONGIN,Stats::NUMPONGOUT); row=addStat(html,row,totalIn,totalOut,"Push",Stats::NUMPUSHIN,Stats::NUMPUSHOUT); row=addStat(html,row,totalIn,totalOut,"Query",Stats::NUMQUERYIN,Stats::NUMQUERYOUT); row=addStat(html,row,totalIn,totalOut,"Hit",Stats::NUMHITIN,Stats::NUMHITOUT); row=addStat(html,row,totalIn,totalOut,"Other",Stats::NUMOTHERIN,Stats::NUMOTHEROUT); row=addStat(html,row,totalIn,totalOut,"Accepted",Stats::NUMACCEPTED,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Dropped",Stats::NUMDROPPED,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Duplicate",Stats::NUMDUP,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Old",Stats::NUMOLD,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Dead",Stats::NUMDEAD,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Routed",Stats::NUMROUTED,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Broadcasted",Stats::NUMBROADCASTED,Stats::NONE); row=addStat(html,row,totalIn,totalOut,"Discarded",Stats::NUMDISCARDED,Stats::NONE); html.startTableRow(row++); html.startTagEnd("td","Avg. Size"); if (totalIn) html.startTagEnd("td","%d",stats.getCurrent(Stats::PACKETDATAIN)/totalIn); else html.startTagEnd("td","-"); html.startTagEnd("td","-"); if (totalOut) html.startTagEnd("td","%d",stats.getCurrent(Stats::PACKETDATAOUT)/totalOut); else html.startTagEnd("td","-"); html.startTagEnd("td","-"); html.end(); int i; for(i=0; i<10; i++) { char str[64]; sprintf(str,"Hops %d",i+1); row=addStat(html,row,totalIn,totalOut,str,(Stats::STAT)((int)Stats::NUMHOPS1+i),Stats::NONE); } if (totalIn) { for(i=0; i<servMgr->numVersions; i++) { html.startTableRow(row++); html.startTagEnd("td","v%05X",servMgr->clientVersions[i]); html.startTagEnd("td","%d",servMgr->clientCounts[i]); html.startTagEnd("td","%d",(servMgr->clientCounts[i]*100)/totalIn); html.startTagEnd("td","-"); html.startTagEnd("td","-"); html.end(); } } html.startTableRow(row++); html.startTagEnd("td colspan=\"5\"","<a href=\"/admin?cmd=clear&packets=1\">Reset</a>"); html.end(); html.end(); addFooter(html);} // -----------------------------------void Servent::addInformation(HTML &html){ html.startTag("table width=\"100%%\" border=\"0\" align=\"center\""); html.startTag("tr bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td colspan=\"2\" ","<b>Information</b>"); html.end(); int row=0; // server IP char ipStr[64]; servMgr->serverHost.IPtoStr(ipStr); html.startTableRow(row++); html.startTagEnd("td","Server IP"); html.startTagEnd("td","%s",ipStr); html.end(); // uptime html.startTableRow(row++); html.startTagEnd("td","Uptime"); String upt; upt.setFromStopwatch(servMgr->getUptime()); upt.convertTo(String::T_HTML); html.startTagEnd("td",upt.cstr()); html.end(); // channels found html.startTableRow(row++); html.startTagEnd("td","Channels found"); html.startTagEnd("td","%d",chanMgr->numHitLists()); html.end(); // channels relayed html.startTableRow(row++); html.startTagEnd("td","Total relays"); html.startTagEnd("td","%d / %d",chanMgr->numRelayed(),chanMgr->numConnected()); html.end(); // direct listeners html.startTableRow(row++); html.startTagEnd("td","Total listeners"); html.startTagEnd("td","%d",chanMgr->numListeners()); html.end(); // total streams html.startTableRow(row++); html.startTagEnd("td","Total streams"); html.startTagEnd("td","%d / %d",servMgr->numStreams(false),servMgr->numStreams(true)); html.end(); // total connected html.startTableRow(row++); html.startTagEnd("td","Total connected"); html.startTagEnd("td","%d",servMgr->totalConnected()); html.end(); // outgoing html.startTableRow(row++); html.startTagEnd("td","Num outgoing"); html.startTagEnd("td","%d",servMgr->numConnected(T_OUTGOING)); html.end(); // incoming html.startTableRow(row++); html.startTagEnd("td","Num incoming"); html.startTagEnd("td","%d",servMgr->numConnected(T_INCOMING)); html.end(); // host cache html.startTableRow(row++); html.startTagEnd("td","Host cache (Servents)"); html.startTagEnd("td","%d - <a href=\"/admin?cmd=clear&hostcache=1\">Clear</a>",servMgr->numHosts(ServHost::T_SERVENT)); html.end(); // XML stats html.startTableRow(row++); html.startTagEnd("td","XML stats"); html.startTagEnd("td","<a href=\"/admin?cmd=viewxml\">View</a>"); html.end(); // Network stats html.startTableRow(row++); html.startTagEnd("td","Network stats"); html.startTagEnd("td","<a href=\"/admin?page=viewnet\">View</a>"); html.end(); html.end();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -