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

📄 servhtml.cpp.svn-base

📁 这是和p2p相关的一份源码
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
// ------------------------------------------------// File : servhtml.cpp// Date: 4-apr-2002// Author: giles// Desc: //		HTML support for servents, TODO: should be in its own class//// (c) 2002 peercast.org// ------------------------------------------------// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// ------------------------------------------------#include <stdlib.h>#include "servent.h"#include "servmgr.h"#include "html.h"#include "stats.h"typedef int (*COMPARE_FUNC)(const void *,const void *);typedef int (*COMPARE_FUNC2)(ChanHitList **, ChanHitList **);// -----------------------------------void Servent::addBasicHeader(HTML &html){	sock->writeLine(HTTP_SC_OK);	sock->writeLine("%s %s",HTTP_HS_SERVER,PCX_AGENT);    sock->writeLine("%s %s",HTTP_HS_CONTENT,MIME_HTML);	sock->writeLine("%s %s",HTTP_HS_CACHE,"no-cache");	sock->writeLine("%s %s",HTTP_HS_CONNECTION,"close");	sock->writeLine("");	html.startHTML();	html.addHead();	html.startBody();}// -----------------------------------void Servent::addHeader(HTML &html, int sel){	addBasicHeader(html);	html.startTagEnd("div align=\"center\"",HTML_VERSTRING);	if (servMgr->downloadURL[0])	{		html.startTag("font color=\"#FF0000\"");			html.startTag("div align=\"center\"");				html.startTagEnd("h2","! Attention !");			html.end();		html.end();		html.startTag("h3");			html.startTag("div align=\"center\"");				html.addLink("/admin?cmd=upgrade","Click here to update your client");			html.end();		html.end();	}	if (!servMgr->rootMsg.isEmpty())	{		String pcMsg = servMgr->rootMsg;		pcMsg.convertTo(String::T_HTML);		html.startTag("div align=\"center\"");			html.startTagEnd("h3",pcMsg.cstr());		html.end();	}	html.startTag("table width=\"100%%\"");		html.startTag("tr bgcolor=\"#CCCCCC\"");						if (sel >= 0)			{				html.startTag("td");					html.startTag("div align=\"center\"");					html.addLink("/admin?page=index",sel==1?"<b>Index</b>":"Index");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");						html.addLink("/admin?page=chans",sel==2?"<b>All channels</b>":"All channels");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");						html.addLink("/admin?page=mychans",sel==3?"<b>Relayed channels</b>":"Relayed channels");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");						html.addLink("/admin?page=broadcast",sel==8?"<b>Broadcast</b>":"Broadcast");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");					html.addLink("/admin?page=connections",sel==4?"<b>Connections</b>":"Connections");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");					html.addLink("/admin?page=settings",sel==5?"<b>Settings</b>":"Settings");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");					html.addLink("/admin?page=viewlog",sel==7?"<b>View Log</b>":"View Log");					html.end();				html.end();				html.startTag("td");					html.startTag("div align=\"center\"");					html.addLink("/admin?page=logout",sel==6?"<b>Logout</b>":"Logout");					html.end();				html.end();			}else{				html.startTagEnd("td");			}		html.end(); // tr	html.end(); // table	html.startTagEnd("b","<br>");}// -----------------------------------void Servent::addFooter(HTML &html){	html.startTagEnd("p","<br>");	html.startTag("table width=\"100%%\"");		html.startTag("tr bgcolor=\"#CCCCCC\"");						html.startTag("td");				html.startTagEnd("div align=\"center\"","&copy; <a target=\"_blank\" href=/admin?cmd=redirect&url=www.peercast.org>peercast.org</a> 2004");			html.end();		html.end();	html.end();	html.end();	// body	html.end();	// html}// -----------------------------------void Servent::addAdminPage(HTML &html){	html.setRefresh(servMgr->refreshHTML);	addHeader(html,1);	html.startTag("table border=\"0\" align=\"center\"");			html.startTag("tr align=\"center\"");				html.startTag("td valign=\"top\"");					addInformation(html);				html.end();				html.startTag("td valign=\"top\"");					addStatistics(html);				html.end();			html.end();	html.end();	addFooter(html);}// -----------------------------------void Servent::addLogPage(HTML &html){	addHeader(html,7);	LogBuffer *lb = sys->logBuf;	lb->lock.on();	try	{		unsigned int nl = lb->currLine;		unsigned int sp = 0;		if (nl > lb->maxLines)		{			nl = lb->maxLines-1;			sp = (lb->currLine+1)%lb->maxLines;		}		String tim,str;		if (nl)		{			html.addLink("/admin?cmd=clearlog","Clear log<br>");			html.addLink("#bottom"," View tail<br><br>");			html.startTag("font size=\"-1\"");				for(unsigned int i=0; i<nl; i++)				{						unsigned int bp = sp*lb->lineLen;						if (lb->types[sp])						{							tim.setFromTime(lb->times[sp]);							html.addContent(tim.cstr());							html.addContent(" <b>[");							html.addContent(lb->getTypeStr(lb->types[sp]));							html.addContent("]</b> ");						}						str.set(&lb->buf[bp]);						str.convertTo(String::T_HTML);						html.addContent(str.cstr());						html.addContent("<br>");						sp++;						sp %= lb->maxLines;				}			html.end();			html.addLink("/admin?page=viewlog","<br>View top");			html.startSingleTagEnd("a name=\"bottom\"");		}	}catch(StreamException &)	{	}	lb->lock.off();	addFooter(html);}// -----------------------------------void Servent::addLoginPage(HTML &html){	addHeader(html,-1);	html.startTag("table border=\"0\" align=\"center\"");		html.startTag("tr bgcolor=\"#cccccc\" align=\"center\"");			html.startTagEnd("td colspan=\"2\" ","<b>Login</b>"); 		html.end();		html.startTag("form method=\"get\" action=\"/admin?\"");		html.startSingleTagEnd("input name=\"cmd\" type=\"hidden\" value=\"login\"");							int row=0;		// password		html.startTableRow(row++);			html.startTagEnd("td","Password");			html.startTag("td");				html.startSingleTagEnd("input name=\"pass\" size=\"10\" type=\"password\"");			html.end();		html.end();		// login		html.startTableRow(row++);			html.startTagEnd("td","");			html.startTag("td");				html.startTagEnd("input name=\"submit\" type=\"submit\" id=\"submit\" value=\"Login\"");								html.end();		html.end();	html.end();	addFooter(html);}// -----------------------------------void Servent::addLogoutPage(HTML &html){	addHeader(html,6);	html.startTag("table border=\"0\" align=\"center\"");		html.startTag("tr align=\"center\"");			html.startTag("td colspan=\"2\" valign=\"top\"");				html.startTag("tr align=\"center\"");					html.startTag("td");					if ((servMgr->authType != ServMgr::AUTH_HTTPBASIC) 					     && !sock->host.isLocalhost()						)					{						html.startTag("form method=\"get\" action=\"/admin\"");							html.startTagEnd("input name=\"logout\" type=\"submit\" value=\"Logout\"");												html.startSingleTagEnd("input name=\"cmd\" type=\"hidden\" value=\"logout\"");											html.end();					}					html.end();					html.startTag("td");						html.startTag("form method=\"get\" action=\"/admin\"");							html.startTagEnd("input name=\"logout\" type=\"submit\" value=\"Shutdown\"");												html.startSingleTagEnd("input name=\"page\" type=\"hidden\" value=\"shutdown\"");											html.end();					html.end();				html.end();			html.end();		html.end(); // form	html.end(); // table		addFooter(html);}// -----------------------------------void Servent::addShutdownPage(HTML &html){	html.startTag("h1");		html.startTagEnd("div align=\"center\"","PeerCast will shutdown in 3 seconds");	html.end();	servMgr->shutdownTimer = 3;}// -----------------------------------void addChannelSourceTag(HTML &html, Channel *c){	const char *stype = c->getSrcTypeStr();	const char *ptype = ChanInfo::getProtocolStr(c->info.srcProtocol);	if (!c->sourceURL.isEmpty())		html.startTagEnd("td","%s-%s:<br>%s",stype,ptype,c->sourceURL.cstr()); 	else	{		char ipStr[64];		if (c->sock)			c->sock->host.toStr(ipStr);		else		{			strcpy(ipStr,"Unknown");		}		html.startTagEnd("td","%s-%s:<br>%s",stype,ptype,ipStr); 	}}// -----------------------------------void	Servent::addChanInfo(HTML &html, ChanInfo *info, Channel *ch){	int row=0;	TrackInfo track;	String name,genre,url,desc,comment,temp,hitTime;	track = info->track;	track.convertTo(String::T_HTML);	name = info->name;	name.convertTo(String::T_HTML);	genre = info->genre;	genre.convertTo(String::T_HTML);	url = info->url;	url.convertTo(String::T_HTML);	desc = info->desc;	desc.convertTo(String::T_HTML);	comment = info->comment;	comment.convertTo(String::T_HTML);	char idStr[64];	info->id.toStr(idStr);	html.startTag("table border=\"0\" align=\"center\"");		html.startTag("tr bgcolor=\"#cccccc\" align=\"center\"");			html.startTagEnd("td colspan=\"2\"","<b>Channel Information</b>"); 		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Name");			html.startTag("td");				sprintf(temp.data,"peercast://pls/%s",idStr);				html.addLink(temp.data,name.cstr());			html.end();		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Genre");			html.startTagEnd("td",genre.cstr());		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Desc.");			html.startTagEnd("td",desc.cstr());		html.end();		html.startTableRow(row++);			html.startTagEnd("td","URL");			html.startTag("td");				String tmp;				sprintf(tmp.data,"/admin?cmd=redirect&url=%s",url.cstr());				html.addLink(tmp.data,url.cstr(),true);			html.end();		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Comment");			html.startTagEnd("td",comment.cstr());		html.end();		html.startTableRow(row++);			html.startTagEnd("td","ID");			html.startTagEnd("td",idStr);		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Type");			html.startTagEnd("td",ChanInfo::getTypeStr(info->contentType));		html.end();		html.startTableRow(row++);			html.startTagEnd("td","Bitrate");			html.startTagEnd("td","%d kb/s",info->bitrate);		html.end();

		if (ch)		{			html.startTableRow(row++);				html.startTagEnd("td","Source");				addChannelSourceTag(html,ch);			html.end();			html.startTableRow(row++);					html.startTagEnd("td","Uptime");					String uptime;					if (info->lastPlayTime)						uptime.setFromStopwatch(sys->getTime()-info->lastPlayTime);					else						uptime.set("-");					html.startTagEnd("td",uptime.cstr());			html.end();			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());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -