mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-11-03 04:17:17 -05:00
190 lines
5.8 KiB
XML
190 lines
5.8 KiB
XML
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
|
|
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
|
<xsl:template match = "/icestats">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>Icecast Streaming Media Server</title>
|
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
</head>
|
|
<body>
|
|
<h1 id="header">Icecast2 Status</h1>
|
|
<!--index header menu -->
|
|
<div id="menu">
|
|
<ul>
|
|
<li><a href="admin/">Administration</a></li>
|
|
<li><a href="status.xsl">Server Status</a></li>
|
|
<li><a href="server_version.xsl">Version</a></li>
|
|
</ul>
|
|
</div>
|
|
<!--end index header menu -->
|
|
<xsl:text disable-output-escaping="yes">
|
|
<!-- WARNING:
|
|
DO NOT ATTEMPT TO PARSE ICECAST HTML OUTPUT!
|
|
The web interface may change completely between releases.
|
|
If you have a need for automatic processing of server data,
|
|
please read the appropriate documentation. Latest docs:
|
|
http://icecast.org/docs/icecast-latest/icecast2_stats.html
|
|
-->
|
|
</xsl:text>
|
|
<!--mount point stats-->
|
|
<xsl:for-each select="source">
|
|
<xsl:choose>
|
|
<xsl:when test="listeners">
|
|
<div class="roundbox">
|
|
<div class="mounthead">
|
|
<h3 class="mount">Mount Point <xsl:value-of select="@mount" /></h3>
|
|
<div class="right">
|
|
<xsl:choose>
|
|
<xsl:when test="authenticator">
|
|
<a class="auth" href="/auth.xsl">Login</a>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<ul class="mountlist">
|
|
<li><a class="play" href="{@mount}.m3u">M3U</a></li>
|
|
<li><a class="play" href="{@mount}.xspf">XSPF</a></li>
|
|
<!-- <li><a class="play" href="{@mount}.vclt">VCLT</a></li> -->
|
|
</ul>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</div>
|
|
</div>
|
|
<div class="mountcont">
|
|
<xsl:if test="server_type and ((server_type = 'application/ogg') or (server_type = 'audio/ogg'))">
|
|
<div class="audioplayer">
|
|
<audio controls="controls" preload="none">
|
|
<source src="{@mount}" type="{server_type}" />
|
|
</audio>
|
|
</div>
|
|
</xsl:if>
|
|
<table class="yellowkeys">
|
|
<tbody>
|
|
<xsl:if test="server_name">
|
|
<tr>
|
|
<td>Stream Name:</td>
|
|
<td><xsl:value-of select="server_name" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="server_description">
|
|
<tr>
|
|
<td>Stream Description:</td>
|
|
<td><xsl:value-of select="server_description" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="server_type">
|
|
<tr>
|
|
<td>Content Type:</td>
|
|
<td><xsl:value-of select="server_type" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="stream_start">
|
|
<tr>
|
|
<td>Stream started:</td>
|
|
<td class="streamstats"><xsl:value-of select="stream_start" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="bitrate">
|
|
<tr>
|
|
<td>Bitrate:</td>
|
|
<td class="streamstats"><xsl:value-of select="bitrate" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="quality">
|
|
<tr>
|
|
<td>Quality:</td>
|
|
<td class="streamstats"><xsl:value-of select="quality" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="video_quality">
|
|
<tr>
|
|
<td>Video Quality:</td>
|
|
<td class="streamstats"><xsl:value-of select="video_quality" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="frame_size">
|
|
<tr>
|
|
<td>Framesize:</td>
|
|
<td class="streamstats"><xsl:value-of select="frame_size" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="frame_rate">
|
|
<tr>
|
|
<td>Framerate:</td>
|
|
<td class="streamstats"><xsl:value-of select="frame_rate" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="listeners">
|
|
<tr>
|
|
<td>Listeners (current):</td>
|
|
<td class="streamstats"><xsl:value-of select="listeners" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="listener_peak">
|
|
<tr>
|
|
<td>Listeners (peak):</td>
|
|
<td class="streamstats"><xsl:value-of select="listener_peak" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="genre">
|
|
<tr>
|
|
<td>Genre:</td>
|
|
<td class="streamstats"><xsl:value-of select="genre" /></td>
|
|
</tr>
|
|
</xsl:if>
|
|
<xsl:if test="server_url">
|
|
<tr>
|
|
<td>Stream URL:</td>
|
|
<td class="streamstats">
|
|
<a href="{server_url}"><xsl:value-of select="server_url" /></a>
|
|
</td>
|
|
</tr>
|
|
</xsl:if>
|
|
<tr>
|
|
<td>Currently playing:</td>
|
|
<td class="streamstats">
|
|
<xsl:if test="artist">
|
|
<xsl:value-of select="artist" /> -
|
|
</xsl:if>
|
|
<xsl:value-of select="title" />
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<!-- Extra playlist -->
|
|
<xsl:if test="playlist/*">
|
|
<h4>Playlist</h4>
|
|
<table class="table-block">
|
|
<tbody>
|
|
<tr>
|
|
<th>Album</th>
|
|
<th>Track</th>
|
|
<th>Creator</th>
|
|
<th>Title</th>
|
|
</tr>
|
|
<xsl:for-each select="playlist/trackList/track">
|
|
<tr>
|
|
<td><xsl:value-of select="album" /></td>
|
|
<td><xsl:value-of select="trackNum" /></td>
|
|
<td><xsl:value-of select="creator" /></td>
|
|
<td><xsl:value-of select="title" /></td>
|
|
</tr>
|
|
</xsl:for-each>
|
|
</tbody>
|
|
</table>
|
|
</xsl:if>
|
|
</div>
|
|
</div>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:for-each>
|
|
<div id="footer">
|
|
Support icecast development at <a href="http://www.icecast.org">www.icecast.org</a>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|