📄 servhtml.cpp
字号:
html.startTag("tr"); if (showFind) html.startTag("td","No channels found"); else html.startTag("td","Searching..."); html.end(); }else { qsort(hits,numHits,sizeof(ChanHitList*),(COMPARE_FUNC)compareFuncs[sort*2 + (dir?0:1)]); for(i=0; i<numHits; i++) { ChanHitList *chl = hits[i]; html.startTableRow(i); #if 0 html.startTag("td"); html.startSingleTagEnd("input type=\"checkbox\" name=\"c%d\" value=\"1\"",chl->index); html.end(); #endif addChannelInfo(html,chl->info,false,true,true,true,true); String genre = chl->info.genre; genre.convertTo(String::T_HTML); html.startTagEnd("td",genre.cstr()); html.startTagEnd("td","%d",chl->info.bitrate); html.startTagEnd("td",ChanInfo::getTypeStr(chl->info.contentType)); html.startTagEnd("td","%d / %d",chl->numListeners(),chl->numHits()); html.end(); // tr } }#if 0 html.end(); // form#endif html.end(); // table //}else{ // html.startTagEnd("h3","No channels found."); //} addFooter(html);}// -----------------------------------void Servent::addWinampChansPage(HTML &html, const char *wildcard, const char *type, bool stop){ int maxHits=ChanMgr::MAX_HITLISTS; //bool stop = (wildcard==NULL) || (type==NULL); if (!strlen(type)) type = "name"; if ((chanMgr->numHitLists() < maxHits) && (!stop)) html.setRefresh(servMgr->refreshHTML); addBasicHeader(html); ChanHitList *hits[ChanMgr::MAX_HITLISTS]; int numHits=0; int i; ChanInfo searchInfo; searchInfo.init(); if (strcmp(type,"name")==0) searchInfo.name.set(wildcard); else if (strcmp(type,"genre")==0) searchInfo.genre.set(wildcard); else if (strcmp(type,"bitrate")==0) searchInfo.bitrate = atoi(wildcard); for(i=0; i<ChanMgr::MAX_HITLISTS; i++) { ChanHitList *chl = &chanMgr->hitlists[i]; if (chl->isUsed() && chl->isAvailable()) if (chl->info.match(searchInfo)) hits[numHits++] = chl; } bool maxShown=false; if (numHits >= maxHits) { numHits = maxHits; maxShown = true; } if (servMgr->downloadURL[0]) { html.startTag("font color=\"#FF0000\""); html.startTag("div align=\"center\""); html.startTagEnd("b","! Attention !"); html.end(); html.end(); html.startTag("b"); html.startTag("div align=\"center\""); html.addLink("/admin?cmd=upgrade","Click here to update your client",true); html.end(); html.end(); } if (!servMgr->rootMsg.isEmpty()) { String pcMsg = servMgr->rootMsg; pcMsg.convertTo(String::T_HTML); html.startTag("div align=\"center\""); html.startTagEnd("b",pcMsg.cstr()); html.end(); }// html.startTagEnd("b","-%s -%s",wildcard,type); html.startTag("form method=\"get\" action=\"/admin?\""); html.startSingleTagEnd("input name=\"page\" type=\"hidden\" value=\"winamp-chans\""); if (!stop) { html.startTagEnd("input name=\"stop\" type=\"submit\" value=\"Stop Search\""); html.startSingleTagEnd("input name=\"wildcard\" type=\"hidden\" value=\"%s\"",wildcard); html.startSingleTagEnd("input name=\"type\" type=\"hidden\" value=\"%s\"",type); }else { char optStr[256]; html.startTag("select name=\"type\""); sprintf(optStr,"option value=\"name\" %s",(strcmp(type,"name")==0)?"selected":""); html.startTagEnd(optStr,"Name"); sprintf(optStr,"option value=\"genre\" %s",(strcmp(type,"genre")==0)?"selected":""); html.startTagEnd(optStr,"Genre"); sprintf(optStr,"option value=\"bitrate\" %s",(strcmp(type,"bitrate")==0)?"selected":""); html.startTagEnd(optStr,"BitRate"); html.end(); html.startSingleTagEnd("input name=\"wildcard\" type=\"text\" value=\"%s\"",wildcard); html.startTagEnd("input name=\"search\" type=\"submit\" value=\"Search\""); } //html.startTagEnd("input name=\"search\" type=\"submit\" value=\"Stop Search\""); html.end();#if 1 html.startTag("table border=\"0\" width=\"100%%\" align=\"center\""); html.startTag("tr bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td width=\"5%%\"","<b><font size=\"-1\">Play</font></b>"); //html.startTagEnd("td width=\"20%%\"","<b><font size=\"-1\">Type</font></b>"); html.startTagEnd("td width=\"95%%\"","<b><font size=\"-1\">PeerCast Channel</font></b>"); html.end(); if (numHits) { qsort(hits,numHits,sizeof(ChanHitList*),(COMPARE_FUNC)compareNamesUp); for(i=0; i<numHits; i++) { ChanHitList *chl = hits[i]; html.startTableRow(i); char idStr[64]; chl->info.id.toStr(idStr); String playURL; sprintf(playURL.data,"/pls/%s",idStr); String genre = chl->info.genre; genre.convertTo(String::T_HTML); String name = chl->info.name; name.convertTo(String::T_HTML); html.startTagEnd("td","<font face=\"Webdings\" size=\"+2\"><a href=\"%s\">U</a></font>",playURL.cstr()); //html.startTagEnd("td","<font size=\"-1\">%s %d kb/s</font>",chl->info.getTypeStr(),chl->info.bitrate); html.startTagEnd("td","<font size=\"-1\"><b>%s</b><br>%s %d kb/s - (%s)</font>",name.cstr(),ChanInfo::getTypeStr(chl->info.contentType),chl->info.bitrate,genre.cstr()); //addChannelInfoShort(html,chl->info); //String genre = chl->info.genre; //genre.convertTo(String::T_HTML); //html.startTagEnd("td",genre.cstr()); //html.startTagEnd("td","%d",chl->info.bitrate); //html.startTagEnd("td",chl->info.getTypeStr()); html.end(); // tr } } html.end(); // table if (stop) html.startTagEnd("b","<font size=\"-1\">Displayed %d out of %d channels.</b>",numHits,chanMgr->numHitLists()); else if (!stop) html.startTagEnd("b","Searching...");#endif addFooter(html);}// -----------------------------------void Servent::addMyChannelsPage(HTML &html){ html.setRefresh(servMgr->refreshHTML); addHeader(html,3); Channel *clist[ChanMgr::MAX_CHANNELS]; ChanInfo info; int num = chanMgr->findChannels(info,clist,ChanMgr::MAX_CHANNELS); //if (num) if (1) { //int totListen=0; html.startTag("table border=\"0\" width=\"95%%\" align=\"center\""); html.startTagEnd("td","<b>Channel</b>"); html.startTagEnd("td","<b>Genre</b>"); html.startTagEnd("td width=\"1%%\"","<b>Bitrate (kb/s)</b>"); html.startTagEnd("td width=\"1%%\"","<b>Stream</b>"); html.startTagEnd("td width=\"2%%\"","<b>Relays</b>"); html.startTagEnd("td width=\"2%%\"","<b>Listeners</b>"); html.startTagEnd("td width=\"1%%\"","<b>Status</b>"); html.startTagEnd("td width=\"1%%\"","<b>Keep</b>"); html.end(); for(int i=0; i<num; i++) { Channel *c = clist[i]; char idStr[64]; c->getIDStr(idStr); html.startTableRow(i); String genre = c->info.genre; genre.convertTo(String::T_HTML); addChannelInfo(html,c->info,true,true,true,true,true); html.startTagEnd("td",genre.cstr()); // bitrate if (c->getBitrate()) html.startTagEnd("td","%d",c->getBitrate()); else html.startTagEnd("td","-"); // stream/type html.startTag("td align=\"center\""); { String path; c->getStreamPath(path.data); html.addLink(path.cstr(),ChanInfo::getTypeStr(c->info.contentType)); } html.end(); // relays html.startTagEnd("td","%d",c->numRelays()); // listeners html.startTagEnd("td","%d",c->numListeners()); // status html.startTagEnd("td",c->getStatusStr()); // keep html.startTagEnd("td",c->stayConnected?"Yes":"No"); html.end(); //totListen += c->listeners; } html.end(); // table }else{ html.startTagEnd("h3","No channels available."); } addFooter(html);}// -----------------------------------void Servent::addBroadcastPage(HTML &html){ addHeader(html,8); Channel *clist[ChanMgr::MAX_CHANNELS]; ChanInfo info; int num = chanMgr->findChannels(info,clist,ChanMgr::MAX_CHANNELS); //if (num) if (1) { //int totListen=0; html.startTag("table border=\"0\" align=\"center\""); html.startTag("form method=\"get\" action=\"/admin\""); html.startSingleTagEnd("input name=\"cmd\" type=\"hidden\" value=\"fetch\""); html.startTag("tr bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td colspan=\"2\" ","<b>External Source</b>"); html.end(); int row=0; html.startTableRow(row++); html.startTagEnd("td","URL (Required)"); html.startTag("td"); html.startSingleTagEnd("input name=\"url\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Name"); html.startTag("td"); html.startSingleTagEnd("input name=\"name\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Description"); html.startTag("td"); html.startSingleTagEnd("input name=\"desc\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Genre"); html.startTag("td"); html.startSingleTagEnd("input name=\"genre\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Contact"); html.startTag("td"); html.startSingleTagEnd("input name=\"contact\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Bitrate (kb/s)"); html.startTag("td"); html.startSingleTagEnd("input name=\"bitrate\" size=\"40\" type=\"text\" value=\"%s\"",""); html.end(); html.end(); html.startTableRow(row++); html.startTagEnd("td","Type"); html.startTag("td"); html.startTag("select name=\"type\""); html.startTagEnd("option value=\"UNKNOWN\" selected","Unknown"); html.startTagEnd("option value=\"MP3\"","MP3"); html.startTagEnd("option value=\"OGG\"","OGG"); html.startTagEnd("option value=\"WMA\"","WMA"); html.startTagEnd("option value=\"NSV\"","NSV"); html.startTagEnd("option value=\"WMV\"","WMV"); html.startTagEnd("option value=\"RAW\"","RAW"); html.end(); html.end(); html.end(); html.startTableRow(row++); html.startTag("td colspan=\"2\" align=\"center\""); html.startSingleTagEnd("input name=\"stream\" type=\"submit\" value=\"Create Relay\""); html.end(); html.end(); html.end(); html.end(); html.startTagEnd("br"); html.startTag("table border=\"0\" width=\"95%%\" align=\"center\""); html.startTag("tr bgcolor=\"#cccccc\" align=\"center\""); html.startTagEnd("td","<b>Channel</b>"); html.startTagEnd("td","<b>Source</b>"); html.startTagEnd("td","<b>Pos</b>"); html.startTagEnd("td","<b>Bitrate (kb/s)</b>"); html.startTagEnd("td","<b>Type</b>"); html.end(); for(int i=0; i<num; i++) { Channel *c = clist[i]; if (c->isBroadcasting()) { unsigned int uptime = c->info.lastPlayTime?(sys->getTime()-c->info.lastPlayTime):0; String uptimeStr; uptimeStr.setFromStopwatch(uptime); char idStr[64]; c->getIDStr(idStr); html.startTableRow(i); String name = c->info.name; name.convertTo(String::T_HTML); char ipStr[64]; servMgr->serverHost.toStr(ipStr); // use global peercast URL as name link String temp; html.startTag("td"); sprintf(temp.data,"peercast://pls/%s?ip=%s",idStr,ipStr); html.addLink(temp.data,name.cstr()); html.end(); addChannelSourceTag(html,c); html.startTagEnd("td","%d",c->streamPos); if (c->getBitrate()) html.startTagEnd("td","%d",c->getBitrate()); else html.startTagEnd("td","-"); html.startTagEnd("td",ChanInfo::getTypeStr(c->info.contentType)); html.end(); //totListen += c->listeners; } } html.end(); // table } addFooter(html);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -