⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servhtml.cpp

📁 这是和p2p相关的一份源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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 + -