mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2024-12-04 14:46:30 -05:00
Update: Reformated indents and spaces (ws-only patch)
This commit is contained in:
parent
fde951551f
commit
0fb8225048
@ -1,66 +1,66 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:variable name="title">Dashboard</xsl:variable>
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:variable name="title">Dashboard</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<xsl:for-each select="resource[@name='overall-status']">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Overview for <code><xsl:value-of select="value[@member='global-config']/value[@member='hostname']/@value" /></code></h3>
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/reloadconfig.xsl">Reload Configuration</a></li>
|
||||
</ul>
|
||||
<div class="side-by-side">
|
||||
<div>
|
||||
<h4>Health</h4>
|
||||
<div class="trafficlight colour-{value[@member='status']/@value}"> </div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Current load</h4>
|
||||
<table class="table-block">
|
||||
<tbody>
|
||||
<xsl:for-each select="value[@member='global-current']/value">
|
||||
<tr>
|
||||
<xsl:variable name="member" select="@member" />
|
||||
<xsl:variable name="of" select="../../value[@member='global-config']/value[@member=$member]/@value" />
|
||||
<td><xsl:value-of select="concat(translate(substring(@member, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring(@member, 2))" /></td>
|
||||
<td class="barmeter">
|
||||
<span><xsl:value-of select="@value" /> of <xsl:value-of select="$of" /></span>
|
||||
<div style="width: calc(100% * {@value} / {$of});"> </div>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="resource[@name='maintenance']">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Maintenance</h3>
|
||||
<xsl:choose>
|
||||
<xsl:when test="value">
|
||||
<ul class="maintenance-container">
|
||||
<xsl:for-each select="value">
|
||||
<li class="maintenance-level-{value[@member='type']/@value}">
|
||||
<p><xsl:value-of select="text/text()" /></p>
|
||||
<ul class="references">
|
||||
<xsl:for-each select="reference">
|
||||
<li><a href="{@href}"><xsl:value-of select="concat(translate(substring(@type, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring(@type, 2))" /></a></li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>Nothing to do.</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<xsl:for-each select="resource[@name='overall-status']">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Overview for <code><xsl:value-of select="value[@member='global-config']/value[@member='hostname']/@value" /></code></h3>
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/reloadconfig.xsl">Reload Configuration</a></li>
|
||||
</ul>
|
||||
<div class="side-by-side">
|
||||
<div>
|
||||
<h4>Health</h4>
|
||||
<div class="trafficlight colour-{value[@member='status']/@value}"> </div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Current load</h4>
|
||||
<table class="table-block">
|
||||
<tbody>
|
||||
<xsl:for-each select="value[@member='global-current']/value">
|
||||
<tr>
|
||||
<xsl:variable name="member" select="@member" />
|
||||
<xsl:variable name="of" select="../../value[@member='global-config']/value[@member=$member]/@value" />
|
||||
<td><xsl:value-of select="concat(translate(substring(@member, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring(@member, 2))" /></td>
|
||||
<td class="barmeter">
|
||||
<span><xsl:value-of select="@value" /> of <xsl:value-of select="$of" /></span>
|
||||
<div style="width: calc(100% * {@value} / {$of});"> </div>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="resource[@name='maintenance']">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Maintenance</h3>
|
||||
<xsl:choose>
|
||||
<xsl:when test="value">
|
||||
<ul class="maintenance-container">
|
||||
<xsl:for-each select="value">
|
||||
<li class="maintenance-level-{value[@member='type']/@value}">
|
||||
<p><xsl:value-of select="text/text()" /></p>
|
||||
<ul class="references">
|
||||
<xsl:for-each select="reference">
|
||||
<li><a href="{@href}"><xsl:value-of select="concat(translate(substring(@type, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring(@type, 2))" /></a></li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>Nothing to do.</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,18 +1,18 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Error</xsl:variable>
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Error</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Response</h3>
|
||||
<h4>Message</h4>
|
||||
<p><xsl:value-of select="state/text" /></p>
|
||||
<xsl:if test="state/@definition">
|
||||
<p>Error code: <xsl:value-of select="state/@definition" /></p>
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Response</h3>
|
||||
<h4>Message</h4>
|
||||
<p><xsl:value-of select="state/text" /></p>
|
||||
<xsl:if test="state/@definition">
|
||||
<p>Error code: <xsl:value-of select="state/@definition" /></p>
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,15 +1,15 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0">
|
||||
<xsl:output omit-xml-declaration="yes" media-type="text/plain" method="text" indent="no" encoding="UTF-8" />
|
||||
<xsl:template name="content" match="/report">
|
||||
<xsl:for-each select="/report/incident">
|
||||
<xsl:text>Report:
</xsl:text>
|
||||
<xsl:value-of select="state/text" />
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:if test="state/@definition">
|
||||
<xsl:text>Error code: </xsl:text>
|
||||
<xsl:value-of select="state/@definition" />
|
||||
<xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template name="content" match="/report">
|
||||
<xsl:for-each select="/report/incident">
|
||||
<xsl:text>Report:
</xsl:text>
|
||||
<xsl:value-of select="state/text" />
|
||||
<xsl:text>
</xsl:text>
|
||||
<xsl:if test="state/@definition">
|
||||
<xsl:text>Error code: </xsl:text>
|
||||
<xsl:value-of select="state/@definition" />
|
||||
<xsl:text>
</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,47 +1,47 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Set fallback</xsl:variable>
|
||||
<xsl:variable name="title">Set fallback</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav">
|
||||
<xsl:with-param name="mount" select="current_source"/>
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<p>Choose the mountpoint to which you want listeners to fallback to:</p>
|
||||
<form method="post" action="/admin/fallbacks.xsl">
|
||||
<label for="fallback" class="hidden">
|
||||
Set fallback for <code><xsl:value-of select="current_source" /></code> to
|
||||
</label>
|
||||
<select name="fallback" id="fallback">
|
||||
<xsl:for-each select="source">
|
||||
<option value="{@mount}">
|
||||
<xsl:value-of select="@mount" />
|
||||
</option>
|
||||
</xsl:for-each>
|
||||
</select>
|
||||
<input type="hidden" name="mount" value="{current_source}" />
|
||||
<input type="hidden" name="omode" value="strict" />
|
||||
 
|
||||
<input type="submit" value="Set fallback" />
|
||||
</form>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="warning">
|
||||
<strong>No mounts!</strong>
|
||||
There are no other mountpoints you could set as fallback.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav">
|
||||
<xsl:with-param name="mount" select="current_source"/>
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<p>Choose the mountpoint to which you want listeners to fallback to:</p>
|
||||
<form method="post" action="/admin/fallbacks.xsl">
|
||||
<label for="fallback" class="hidden">
|
||||
Set fallback for <code><xsl:value-of select="current_source" /></code> to
|
||||
</label>
|
||||
<select name="fallback" id="fallback">
|
||||
<xsl:for-each select="source">
|
||||
<option value="{@mount}">
|
||||
<xsl:value-of select="@mount" />
|
||||
</option>
|
||||
</xsl:for-each>
|
||||
</select>
|
||||
<input type="hidden" name="mount" value="{current_source}" />
|
||||
<input type="hidden" name="omode" value="strict" />
|
||||
 
|
||||
<input type="submit" value="Set fallback" />
|
||||
</form>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="warning">
|
||||
<strong>No mounts!</strong>
|
||||
There are no other mountpoints you could set as fallback.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="footer">
|
||||
<xsl:template name="footer">
|
||||
|
||||
<div class="footer">
|
||||
<p>Support Icecast development at <a href="http://icecast.org">icecast.org</a></p>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<p>Support Icecast development at <a href="http://icecast.org">icecast.org</a></p>
|
||||
</div>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,15 +1,15 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="head">
|
||||
<xsl:param name="title"/>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title><xsl:if test="$title"><xsl:value-of select="$title"/> — </xsl:if>Icecast Admin</title>
|
||||
<xsl:template name="head">
|
||||
<xsl:param name="title"/>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title><xsl:if test="$title"><xsl:value-of select="$title"/> — </xsl:if>Icecast Admin</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/assets/css/style.css" />
|
||||
|
||||
<meta name="theme-color" content="#001826" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<meta name="description" content="Icecast Server status page" />
|
||||
</head>
|
||||
</xsl:template>
|
||||
<meta name="theme-color" content="#001826" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<meta name="description" content="Icecast Server status page" />
|
||||
</head>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,26 +1,26 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="header">
|
||||
<xsl:template name="header">
|
||||
|
||||
<header>
|
||||
<nav id="main-nav" role="primary">
|
||||
<a href="/" id="branding">
|
||||
<img src="/assets/img/icecast.png" alt="Logo" />
|
||||
<h1>Icecast Server administration</h1>
|
||||
</a>
|
||||
<ul>
|
||||
<li class="adminlink"><a href="/admin/dashboard.xsl">Dashboard</a></li>
|
||||
<li class="adminlink"><a href="/admin/stats.xsl">Server status</a></li>
|
||||
<li class="adminlink"><a href="/admin/listmounts.xsl">Mountpoint list</a></li>
|
||||
<li class="adminlink"><a href="/admin/showlog.xsl">Logfiles</a></li>
|
||||
<xsl:for-each select="(/report/extension/icestats | /icestats | /iceresponse)/modules/module">
|
||||
<xsl:if test="@management-url and @management-title">
|
||||
<li class="adminlink"><a href="{@management-url}"><xsl:value-of select="@management-title" /></a></li>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<li class="right"><a href="/status.xsl">Public area</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<header>
|
||||
<nav id="main-nav" role="primary">
|
||||
<a href="/" id="branding">
|
||||
<img src="/assets/img/icecast.png" alt="Logo" />
|
||||
<h1>Icecast Server administration</h1>
|
||||
</a>
|
||||
<ul>
|
||||
<li class="adminlink"><a href="/admin/dashboard.xsl">Dashboard</a></li>
|
||||
<li class="adminlink"><a href="/admin/stats.xsl">Server status</a></li>
|
||||
<li class="adminlink"><a href="/admin/listmounts.xsl">Mountpoint list</a></li>
|
||||
<li class="adminlink"><a href="/admin/showlog.xsl">Logfiles</a></li>
|
||||
<xsl:for-each select="(/report/extension/icestats | /icestats | /iceresponse)/modules/module">
|
||||
<xsl:if test="@management-url and @management-title">
|
||||
<li class="adminlink"><a href="{@management-url}"><xsl:value-of select="@management-title" /></a></li>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<li class="right"><a href="/status.xsl">Public area</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,15 +1,15 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="mountnav">
|
||||
<xsl:param name="mount" select="@mount"/>
|
||||
<div class="mountnav">
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/stats.xsl?mount={$mount}#mount-1">Details</a></li>
|
||||
<li><a href="/admin/listclients.xsl?mount={$mount}">Clients</a></li>
|
||||
<li><a href="/admin/moveclients.xsl?mount={$mount}">Move listeners</a></li>
|
||||
<li><a href="/admin/updatemetadata.xsl?mount={$mount}">Metadata</a></li>
|
||||
<li><a href="/admin/fallbacks.xsl?mount={$mount}&omode=strict">Set fallback</a></li>
|
||||
<li class="critical"><a href="/admin/killsource.xsl?mount={$mount}">Kill source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<xsl:template name="mountnav">
|
||||
<xsl:param name="mount" select="@mount"/>
|
||||
<div class="mountnav">
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/stats.xsl?mount={$mount}#mount-1">Details</a></li>
|
||||
<li><a href="/admin/listclients.xsl?mount={$mount}">Clients</a></li>
|
||||
<li><a href="/admin/moveclients.xsl?mount={$mount}">Move listeners</a></li>
|
||||
<li><a href="/admin/updatemetadata.xsl?mount={$mount}">Metadata</a></li>
|
||||
<li><a href="/admin/fallbacks.xsl?mount={$mount}&omode=strict">Set fallback</a></li>
|
||||
<li class="critical"><a href="/admin/killsource.xsl?mount={$mount}">Kill source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,31 +1,31 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="utf-8" />
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/head.xsl"/>
|
||||
<xsl:include href="includes/header.xsl"/>
|
||||
<xsl:include href="includes/footer.xsl"/>
|
||||
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="utf-8" />
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/head.xsl"/>
|
||||
<xsl:include href="includes/header.xsl"/>
|
||||
<xsl:include href="includes/footer.xsl"/>
|
||||
|
||||
<xsl:template match="/node()">
|
||||
<html>
|
||||
<xsl:template match="/node()">
|
||||
<html>
|
||||
|
||||
<xsl:call-template name="head">
|
||||
<xsl:with-param name="title" select="$title" />
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="head">
|
||||
<xsl:with-param name="title" select="$title" />
|
||||
</xsl:call-template>
|
||||
|
||||
<body>
|
||||
<!-- Header/Menu -->
|
||||
<xsl:call-template name="header" />
|
||||
<body>
|
||||
<!-- Header/Menu -->
|
||||
<xsl:call-template name="header" />
|
||||
|
||||
<main role="main">
|
||||
<xsl:call-template name="content" />
|
||||
</main>
|
||||
<main role="main">
|
||||
<xsl:call-template name="content" />
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<xsl:call-template name="footer" />
|
||||
</footer>
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<xsl:call-template name="footer" />
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,23 +1,23 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="player">
|
||||
<div>
|
||||
<ul class="playlists">
|
||||
<li><a href="{@mount}">Direct</a></li>
|
||||
<li><a href="{@mount}.m3u">M3U</a></li>
|
||||
<li><a href="{@mount}.xspf">XSPF</a></li>
|
||||
</ul>
|
||||
<xsl:template name="player">
|
||||
<div>
|
||||
<ul class="playlists">
|
||||
<li><a href="{@mount}">Direct</a></li>
|
||||
<li><a href="{@mount}.m3u">M3U</a></li>
|
||||
<li><a href="{@mount}.xspf">XSPF</a></li>
|
||||
</ul>
|
||||
|
||||
<!-- Playlists section -->
|
||||
<h4>Play stream</h4>
|
||||
<!-- Playlists section -->
|
||||
<h4>Play stream</h4>
|
||||
|
||||
<!-- Player -->
|
||||
<xsl:if test="content-type and ((content-type = 'application/ogg') or (content-type = 'audio/ogg') or (content-type = 'audio/webm'))">
|
||||
<div class="audioplayer">
|
||||
<audio controls="controls" preload="none">
|
||||
<source src="{@mount}" type="{content-type}" />
|
||||
</audio>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<!-- Player -->
|
||||
<xsl:if test="content-type and ((content-type = 'application/ogg') or (content-type = 'audio/ogg') or (content-type = 'audio/webm'))">
|
||||
<div class="audioplayer">
|
||||
<audio controls="controls" preload="none">
|
||||
<source src="{@mount}" type="{content-type}" />
|
||||
</audio>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,29 +1,29 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template name="playlist">
|
||||
<xsl:if test="playlist/*">
|
||||
<h4>Playlist</h4>
|
||||
<div class="playlist-container">
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Album</th>
|
||||
<th width="10%">Track</th>
|
||||
<th>Creator</th>
|
||||
<th width="33%">Title</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<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>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
<xsl:template name="playlist">
|
||||
<xsl:if test="playlist/*">
|
||||
<h4>Playlist</h4>
|
||||
<div class="playlist-container">
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Album</th>
|
||||
<th width="10%">Track</th>
|
||||
<th>Creator</th>
|
||||
<th width="33%">Title</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<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>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="utf-8" />
|
||||
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="utf-8" />
|
||||
<!-- Import include files -->
|
||||
|
||||
<xsl:template match="/node()">
|
||||
@ -15,15 +15,15 @@
|
||||
<meta name="description" content="Icecast is free server software for streaming multimedia." />
|
||||
</head>
|
||||
<body>
|
||||
<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:
|
||||
https://icecast.org/docs/icecast-latest/icecast2_stats.html
|
||||
-->
|
||||
</xsl:text>
|
||||
<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:
|
||||
https://icecast.org/docs/icecast-latest/icecast2_stats.html
|
||||
-->
|
||||
</xsl:text>
|
||||
<!-- Header and menu -->
|
||||
<header>
|
||||
<nav id="main-nav" role="primary">
|
||||
@ -41,15 +41,15 @@
|
||||
|
||||
<!--<h1 id="header">Icecast <xsl:value-of select="$title"/></h1>-->
|
||||
|
||||
<!-- Content -->
|
||||
<main role="main">
|
||||
<xsl:call-template name="content" namespace="http://www.w3.org/1999/xhtml" />
|
||||
</main>
|
||||
<!-- Content -->
|
||||
<main role="main">
|
||||
<xsl:call-template name="content" namespace="http://www.w3.org/1999/xhtml" />
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<p>Support icecast development at <a href="http://icecast.org">icecast.org</a></p>
|
||||
</footer>
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<p>Support icecast development at <a href="http://icecast.org">icecast.org</a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
@ -1,57 +1,57 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Listener Stats</xsl:variable>
|
||||
<xsl:variable name="title">Listener Stats</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<h4>Listeners</h4>
|
||||
<xsl:choose>
|
||||
<xsl:when test="listener">
|
||||
<table class="table-flipscroll">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IP</th>
|
||||
<th>Username</th>
|
||||
<th>Role</th>
|
||||
<th>Sec. connected</th>
|
||||
<th>User Agent</th>
|
||||
<th class="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="listener">
|
||||
<tr>
|
||||
<td><xsl:value-of select="ip" /></td>
|
||||
<td><xsl:value-of select="username" /></td>
|
||||
<td><xsl:value-of select="role" /></td>
|
||||
<td><xsl:value-of select="connected" /></td>
|
||||
<td><xsl:value-of select="useragent" /></td>
|
||||
<td class="actions">
|
||||
<a class="critical" href="/admin/killclient.xsl?mount={../@mount}&id={id}">Kick</a>
|
||||
<a href="/admin/moveclients.xsl?mount={../@mount}&id={id}">Move</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>No listeners connected</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<h4>Listeners</h4>
|
||||
<xsl:choose>
|
||||
<xsl:when test="listener">
|
||||
<table class="table-flipscroll">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>IP</th>
|
||||
<th>Username</th>
|
||||
<th>Role</th>
|
||||
<th>Sec. connected</th>
|
||||
<th>User Agent</th>
|
||||
<th class="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="listener">
|
||||
<tr>
|
||||
<td><xsl:value-of select="ip" /></td>
|
||||
<td><xsl:value-of select="username" /></td>
|
||||
<td><xsl:value-of select="role" /></td>
|
||||
<td><xsl:value-of select="connected" /></td>
|
||||
<td><xsl:value-of select="useragent" /></td>
|
||||
<td class="actions">
|
||||
<a class="critical" href="/admin/killclient.xsl?mount={../@mount}&id={id}">Kick</a>
|
||||
<a href="/admin/moveclients.xsl?mount={../@mount}&id={id}">Move</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>No listeners connected</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
|
||||
</div>
|
||||
</xsl:template>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,63 +1,63 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Active Mountpoints</xsl:variable>
|
||||
<xsl:variable name="title">Active Mountpoints</xsl:variable>
|
||||
|
||||
<!-- Auth template -->
|
||||
<xsl:template name="authlist">
|
||||
<ul>
|
||||
<xsl:for-each select="authentication/role">
|
||||
<li>Role
|
||||
<xsl:if test="@name">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:if>
|
||||
of type <xsl:value-of select="@type" />
|
||||
<xsl:if test="@management-url">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@can-adduser='true' or @can-deleteuser='true'">
|
||||
(<a href="{@management-url}">Manage</a>)
|
||||
</xsl:when>
|
||||
<xsl:when test="@can-listuser='true'">
|
||||
(<a href="{@management-url}">List</a>)
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
<!-- Auth template -->
|
||||
<xsl:template name="authlist">
|
||||
<ul>
|
||||
<xsl:for-each select="authentication/role">
|
||||
<li>Role
|
||||
<xsl:if test="@name">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:if>
|
||||
of type <xsl:value-of select="@type" />
|
||||
<xsl:if test="@management-url">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@can-adduser='true' or @can-deleteuser='true'">
|
||||
(<a href="{@management-url}">Manage</a>)
|
||||
</xsl:when>
|
||||
<xsl:when test="@can-listuser='true'">
|
||||
(<a href="{@management-url}">List</a>)
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<xsl:call-template name="player" />
|
||||
<p><xsl:value-of select="listeners" /> Listener(s)</p>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<xsl:call-template name="player" />
|
||||
<p><xsl:value-of select="listeners" /> Listener(s)</p>
|
||||
|
||||
<!-- Mount Authentication -->
|
||||
<xsl:if test="authentication">
|
||||
<h4>Mount Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="info">
|
||||
<strong>No mounts!</strong> There are no active mountpoints.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<!-- Mount Authentication -->
|
||||
<xsl:if test="authentication">
|
||||
<h4>Mount Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="info">
|
||||
<strong>No mounts!</strong> There are no active mountpoints.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,72 +1,72 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Manage Authentication</xsl:variable>
|
||||
<xsl:variable name="title">Manage Authentication</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:if test="iceresponse">
|
||||
<aside class="error">
|
||||
<xsl:value-of select="iceresponse/message" />
|
||||
</aside>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="role">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Role <code><xsl:value-of select="@name" /></code> (<code><xsl:value-of select="@type" /></code>)
|
||||
<xsl:if test="server_name">
|
||||
<xsl:text> </xsl:text><small><xsl:value-of select="server_name" /></small>
|
||||
</xsl:if>
|
||||
</h3>
|
||||
<xsl:choose>
|
||||
<xsl:when test="users/user">
|
||||
<table class="table-flipscroll">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<xsl:if test="@can-deleteuser = 'true'">
|
||||
<th class="actions">Action</th>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="users/user">
|
||||
<tr>
|
||||
<td><xsl:value-of select="username" /></td>
|
||||
<xsl:if test="../../@can-deleteuser = 'true'">
|
||||
<td class="actions">
|
||||
<a class="critical" href="/admin/manageauth.xsl?id={../../@id}&username={username}&action=delete">Delete</a>
|
||||
</td>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>No Users</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- Form to add Users -->
|
||||
<xsl:if test="@can-adduser = 'true'">
|
||||
<h4>Add User</h4>
|
||||
<form method="post" action="/admin/manageauth.xsl">
|
||||
<input type="hidden" name="id" value="{@id}"/>
|
||||
<input type="hidden" name="action" value="add"/>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:if test="iceresponse">
|
||||
<aside class="error">
|
||||
<xsl:value-of select="iceresponse/message" />
|
||||
</aside>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="role">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Role <code><xsl:value-of select="@name" /></code> (<code><xsl:value-of select="@type" /></code>)
|
||||
<xsl:if test="server_name">
|
||||
<xsl:text> </xsl:text><small><xsl:value-of select="server_name" /></small>
|
||||
</xsl:if>
|
||||
</h3>
|
||||
<xsl:choose>
|
||||
<xsl:when test="users/user">
|
||||
<table class="table-flipscroll">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>User</th>
|
||||
<xsl:if test="@can-deleteuser = 'true'">
|
||||
<th class="actions">Action</th>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="users/user">
|
||||
<tr>
|
||||
<td><xsl:value-of select="username" /></td>
|
||||
<xsl:if test="../../@can-deleteuser = 'true'">
|
||||
<td class="actions">
|
||||
<a class="critical" href="/admin/manageauth.xsl?id={../../@id}&username={username}&action=delete">Delete</a>
|
||||
</td>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>No Users</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- Form to add Users -->
|
||||
<xsl:if test="@can-adduser = 'true'">
|
||||
<h4>Add User</h4>
|
||||
<form method="post" action="/admin/manageauth.xsl">
|
||||
<input type="hidden" name="id" value="{@id}"/>
|
||||
<input type="hidden" name="action" value="add"/>
|
||||
|
||||
<label for="username" class="hidden">Username: </label>
|
||||
<input type="text" id="username" name="username" value="" placeholder="Username" required="required" />
|
||||
 
|
||||
<label for="password" class="hidden">Password: </label>
|
||||
<input type="password" id="password" name="password" value="" placeholder="Password" required="required" />
|
||||
 
|
||||
<input type="submit" value="Add new user" />
|
||||
</form>
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<label for="username" class="hidden">Username: </label>
|
||||
<input type="text" id="username" name="username" value="" placeholder="Username" required="required" />
|
||||
 
|
||||
<label for="password" class="hidden">Password: </label>
|
||||
<input type="password" id="password" name="password" value="" placeholder="Password" required="required" />
|
||||
 
|
||||
<input type="submit" value="Add new user" />
|
||||
</form>
|
||||
</xsl:if>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,54 +1,54 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Move listeners</xsl:variable>
|
||||
<xsl:variable name="title">Move listeners</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav">
|
||||
<xsl:with-param name="mount" select="current_source"/>
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="param-id">
|
||||
<input type="hidden" name="id" value="{param-id}" />
|
||||
<p>Choose the mountpoint to which you want to move the listener to:</p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>Choose the mountpoint to which you want to move the listeners to:</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<form method="post" action="/admin/moveclients.xsl">
|
||||
<label for="moveto" class="hidden">
|
||||
Move from <code><xsl:value-of select="current_source" /></code> to
|
||||
</label>
|
||||
<select name="destination" id="moveto">
|
||||
<xsl:for-each select="source">
|
||||
<option value="{@mount}">
|
||||
<xsl:value-of select="@mount" />
|
||||
</option>
|
||||
</xsl:for-each>
|
||||
</select>
|
||||
<input type="hidden" name="mount" value="{current_source}" />
|
||||
 
|
||||
<input type="submit" value="Move listeners" />
|
||||
</form>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="warning">
|
||||
<strong>No mounts!</strong>
|
||||
There are no other mountpoints you could move the listeners to.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</div>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav">
|
||||
<xsl:with-param name="mount" select="current_source"/>
|
||||
</xsl:call-template>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="param-id">
|
||||
<input type="hidden" name="id" value="{param-id}" />
|
||||
<p>Choose the mountpoint to which you want to move the listener to:</p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p>Choose the mountpoint to which you want to move the listeners to:</p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<form method="post" action="/admin/moveclients.xsl">
|
||||
<label for="moveto" class="hidden">
|
||||
Move from <code><xsl:value-of select="current_source" /></code> to
|
||||
</label>
|
||||
<select name="destination" id="moveto">
|
||||
<xsl:for-each select="source">
|
||||
<option value="{@mount}">
|
||||
<xsl:value-of select="@mount" />
|
||||
</option>
|
||||
</xsl:for-each>
|
||||
</select>
|
||||
<input type="hidden" name="mount" value="{current_source}" />
|
||||
 
|
||||
<input type="submit" value="Move listeners" />
|
||||
</form>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="warning">
|
||||
<strong>No mounts!</strong>
|
||||
There are no other mountpoints you could move the listeners to.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</section>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,18 +1,18 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Server Response</xsl:variable>
|
||||
<xsl:variable name="title">Server Response</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/iceresponse">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Response</h3>
|
||||
<h4>Message</h4>
|
||||
<p><xsl:value-of select="message" /></p>
|
||||
<p>(Return Code: <xsl:value-of select="return" />)</p>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/iceresponse">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Response</h3>
|
||||
<h4>Message</h4>
|
||||
<p><xsl:value-of select="message" /></p>
|
||||
<p>(Return Code: <xsl:value-of select="return" />)</p>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,24 +1,24 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:variable name="title">Logfiles</xsl:variable>
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:variable name="title">Logfiles</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Logfile <code><xsl:value-of select="resource[@name='logcontent']/value/value[@member='logfile']/@value" /></code></h3>
|
||||
<ul class="boxnav">
|
||||
<xsl:for-each select="resource[@name='logfiles']/value/value">
|
||||
<li><a href="?logfile={@value}"><xsl:value-of select="@value" /></a></li>
|
||||
</xsl:for-each>
|
||||
<li class="critical"><a href="/admin/marklog.xsl">Mark logfiles</a></li>
|
||||
</ul>
|
||||
<ul class="codeblock">
|
||||
<xsl:for-each select="resource[@name='logcontent']/value/value[@member='lines']/value">
|
||||
<li><pre><xsl:value-of select="@value" /></pre></li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template name="content">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:for-each select="/report/incident">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Logfile <code><xsl:value-of select="resource[@name='logcontent']/value/value[@member='logfile']/@value" /></code></h3>
|
||||
<ul class="boxnav">
|
||||
<xsl:for-each select="resource[@name='logfiles']/value/value">
|
||||
<li><a href="?logfile={@value}"><xsl:value-of select="@value" /></a></li>
|
||||
</xsl:for-each>
|
||||
<li class="critical"><a href="/admin/marklog.xsl">Mark logfiles</a></li>
|
||||
</ul>
|
||||
<ul class="codeblock">
|
||||
<xsl:for-each select="resource[@name='logcontent']/value/value[@member='lines']/value">
|
||||
<li><pre><xsl:value-of select="@value" /></pre></li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
232
admin/stats.xsl
232
admin/stats.xsl
@ -1,131 +1,131 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
<xsl:include href="includes/playlist.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
<xsl:include href="includes/playlist.xsl"/>
|
||||
|
||||
<xsl:param name="param-showall" />
|
||||
<xsl:param name="param-has-mount" />
|
||||
<xsl:variable name="title">Server status</xsl:variable>
|
||||
<xsl:param name="param-showall" />
|
||||
<xsl:param name="param-has-mount" />
|
||||
<xsl:variable name="title">Server status</xsl:variable>
|
||||
|
||||
<!-- Auth template -->
|
||||
<xsl:template name="authlist">
|
||||
<ul>
|
||||
<xsl:for-each select="authentication/role">
|
||||
<li>Role
|
||||
<xsl:if test="@name">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:if>
|
||||
of type <xsl:value-of select="@type" />
|
||||
<xsl:if test="@management-url">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@can-adduser='true' or @can-deleteuser='true'">
|
||||
(<a href="{@management-url}">Manage</a>)
|
||||
</xsl:when>
|
||||
<xsl:when test="@can-listuser='true'">
|
||||
(<a href="{@management-url}">List</a>)
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
<!-- Auth template -->
|
||||
<xsl:template name="authlist">
|
||||
<ul>
|
||||
<xsl:for-each select="authentication/role">
|
||||
<li>Role
|
||||
<xsl:if test="@name">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:if>
|
||||
of type <xsl:value-of select="@type" />
|
||||
<xsl:if test="@management-url">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@can-adduser='true' or @can-deleteuser='true'">
|
||||
(<a href="{@management-url}">Manage</a>)
|
||||
</xsl:when>
|
||||
<xsl:when test="@can-listuser='true'">
|
||||
(<a href="{@management-url}">List</a>)
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="content">
|
||||
<h2>Server status</h2>
|
||||
<xsl:template name="content">
|
||||
<h2>Server status</h2>
|
||||
|
||||
<!-- Global stats table -->
|
||||
<section class="box">
|
||||
<h3 class="box_title">Global server stats</h3>
|
||||
<!-- Global subnav -->
|
||||
<div class="stats">
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/reloadconfig.xsl">Reload Configuration</a></li>
|
||||
<li><a href="/admin/?showall=true">Show all mounts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Global stats table -->
|
||||
<section class="box">
|
||||
<h3 class="box_title">Global server stats</h3>
|
||||
<!-- Global subnav -->
|
||||
<div class="stats">
|
||||
<ul class="boxnav">
|
||||
<li><a href="/admin/reloadconfig.xsl">Reload Configuration</a></li>
|
||||
<li><a href="/admin/?showall=true">Show all mounts</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h4>Statistics</h4>
|
||||
<h4>Statistics</h4>
|
||||
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="/icestats/*[not(self::source) and not(self::authentication) and not(self::modules)]">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="/icestats/*[not(self::source) and not(self::authentication) and not(self::modules)]">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Global Auth -->
|
||||
<xsl:if test="authentication">
|
||||
<h4>Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
</section>
|
||||
<!-- Global Auth -->
|
||||
<xsl:if test="authentication">
|
||||
<h4>Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
</section>
|
||||
|
||||
<!-- Mount stats -->
|
||||
<xsl:if test="$param-showall or $param-has-mount">
|
||||
<xsl:for-each select="source">
|
||||
<section class="box" id="mount-{position()}">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<xsl:call-template name="player" />
|
||||
<h4>Further information</h4>
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="*[not(self::metadata) and not(self::authentication) and not(self::authenticator) and not(self::listener)]">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Mount stats -->
|
||||
<xsl:if test="$param-showall or $param-has-mount">
|
||||
<xsl:for-each select="source">
|
||||
<section class="box" id="mount-{position()}">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<xsl:call-template name="player" />
|
||||
<h4>Further information</h4>
|
||||
<table class="table-block">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:for-each select="*[not(self::metadata) and not(self::authentication) and not(self::authenticator) and not(self::listener)]">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Extra metadata -->
|
||||
<xsl:if test="metadata/*">
|
||||
<h4>Extra Metadata</h4>
|
||||
<table class="table-block">
|
||||
<tbody>
|
||||
<xsl:for-each select="metadata/*">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:if>
|
||||
<!-- Extra metadata -->
|
||||
<xsl:if test="metadata/*">
|
||||
<h4>Extra Metadata</h4>
|
||||
<table class="table-block">
|
||||
<tbody>
|
||||
<xsl:for-each select="metadata/*">
|
||||
<tr>
|
||||
<td><xsl:value-of select="name()" /></td>
|
||||
<td><xsl:value-of select="text()" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</tbody>
|
||||
</table>
|
||||
</xsl:if>
|
||||
|
||||
<!-- Extra playlist -->
|
||||
<xsl:call-template name="playlist" />
|
||||
<!-- Extra playlist -->
|
||||
<xsl:call-template name="playlist" />
|
||||
|
||||
<!-- Mount Authentication -->
|
||||
<xsl:if test="authentication/*">
|
||||
<h4>Mount Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
<!-- Mount Authentication -->
|
||||
<xsl:if test="authentication/*">
|
||||
<h4>Mount Authentication</h4>
|
||||
<xsl:call-template name="authlist" />
|
||||
</xsl:if>
|
||||
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,39 +1,39 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
<!-- Import include files -->
|
||||
<xsl:include href="includes/page.xsl"/>
|
||||
<xsl:include href="includes/mountnav.xsl"/>
|
||||
|
||||
<xsl:variable name="title">Update Metadata</xsl:variable>
|
||||
<xsl:variable name="title">Update Metadata</xsl:variable>
|
||||
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
<xsl:template name="content">
|
||||
<div class="section">
|
||||
<h2><xsl:value-of select="$title" /></h2>
|
||||
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<h4>Update Metadata</h4>
|
||||
<xsl:if test="content-type and not((content-type = 'application/mpeg') or (content-type = 'audio/aac') or (content-type = 'audio/aacp'))">
|
||||
<aside class="warning">
|
||||
<strong>Warning</strong>
|
||||
This is only supported for legacy codecs using ICY as transport such as MP3 and AAC.
|
||||
</aside>
|
||||
</xsl:if>
|
||||
<form method="post" action="/admin/metadata.xsl">
|
||||
<input type="hidden" name="mount" value="{@mount}" />
|
||||
<input type="hidden" name="mode" value="updinfo" />
|
||||
<input type="hidden" name="charset" value="UTF-8" />
|
||||
<xsl:for-each select="source">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<!-- Mount nav -->
|
||||
<xsl:call-template name="mountnav" />
|
||||
<h4>Update Metadata</h4>
|
||||
<xsl:if test="content-type and not((content-type = 'application/mpeg') or (content-type = 'audio/aac') or (content-type = 'audio/aacp'))">
|
||||
<aside class="warning">
|
||||
<strong>Warning</strong>
|
||||
This is only supported for legacy codecs using ICY as transport such as MP3 and AAC.
|
||||
</aside>
|
||||
</xsl:if>
|
||||
<form method="post" action="/admin/metadata.xsl">
|
||||
<input type="hidden" name="mount" value="{@mount}" />
|
||||
<input type="hidden" name="mode" value="updinfo" />
|
||||
<input type="hidden" name="charset" value="UTF-8" />
|
||||
|
||||
<label for="metadata" class="hidden">Metadata:</label>
|
||||
<input type="text" id="metadata" name="song" value="" placeholder="Click to edit" required="required" />
|
||||
 
|
||||
<input type="submit" value="Update Metadata" />
|
||||
</form>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
<label for="metadata" class="hidden">Metadata:</label>
|
||||
<input type="text" id="metadata" name="song" value="" placeholder="Click to edit" required="required" />
|
||||
 
|
||||
<input type="submit" value="Update Metadata" />
|
||||
</form>
|
||||
</section>
|
||||
</xsl:for-each>
|
||||
|
||||
</div>
|
||||
</xsl:template>
|
||||
</div>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,54 +1,54 @@
|
||||
<!--
|
||||
VCLT xslt stylesheet for Icecast 2.3.2 and above
|
||||
based on XSPF xslt stylesheet.
|
||||
Copyright (C) 2007 Thomas B. Ruecker, <thomas@ruecker.fi>
|
||||
VCLT xslt stylesheet for Icecast 2.3.2 and above
|
||||
based on XSPF xslt stylesheet.
|
||||
Copyright (C) 2007 Thomas B. Ruecker, <thomas@ruecker.fi>
|
||||
Copyright (C) 2011 Philipp Schafft, <lion@lion.leolix.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 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.
|
||||
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.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the
|
||||
Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
-->
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the
|
||||
Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="yes" media-type="audio/x-vclt"
|
||||
method="text" indent="no" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<xsl:for-each select="source">STREAMURL=<xsl:value-of select="listenurl" />
|
||||
<xsl:if test="artist"><xsl:text>
|
||||
</xsl:text>ARTIST=<xsl:value-of select="artist" /></xsl:if>
|
||||
<xsl:if test="title"><xsl:text>
|
||||
</xsl:text>TITLE=<xsl:value-of select="title" /></xsl:if>
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="yes" media-type="audio/x-vclt"
|
||||
method="text" indent="no" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<xsl:for-each select="source">STREAMURL=<xsl:value-of select="listenurl" />
|
||||
<xsl:if test="artist"><xsl:text>
|
||||
</xsl:text>ARTIST=<xsl:value-of select="artist" /></xsl:if>
|
||||
<xsl:if test="title"><xsl:text>
|
||||
</xsl:text>TITLE=<xsl:value-of select="title" /></xsl:if>
|
||||
|
||||
<xsl:if test="server_name"><xsl:text>
|
||||
</xsl:text>SERVER_NAME=<xsl:value-of select="server_name" /></xsl:if>
|
||||
<xsl:if test="server_description"><xsl:text>
|
||||
</xsl:text>DESCRIPTION=<xsl:value-of select="server_description" /></xsl:if>
|
||||
SIGNALINFO=<xsl:choose>
|
||||
<xsl:when test="server_type = 'application/ogg'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="subtype = 'Vorbis'">codec:ogg_vorbis</xsl:when>
|
||||
<!-- More codecs should be added here, however I don't know how to find out about the codec.
|
||||
At the moment we just guess that application/ogg is a Ogg bitstream with some undefined
|
||||
codec. Everything else is undefined.
|
||||
-->
|
||||
<xsl:otherwise>codec:ogg_general</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
</xsl:choose><xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:if test="genre">GENRE=<xsl:value-of select="genre" /></xsl:if>
|
||||
==
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
<xsl:if test="server_name"><xsl:text>
|
||||
</xsl:text>SERVER_NAME=<xsl:value-of select="server_name" /></xsl:if>
|
||||
<xsl:if test="server_description"><xsl:text>
|
||||
</xsl:text>DESCRIPTION=<xsl:value-of select="server_description" /></xsl:if>
|
||||
SIGNALINFO=<xsl:choose>
|
||||
<xsl:when test="server_type = 'application/ogg'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="subtype = 'Vorbis'">codec:ogg_vorbis</xsl:when>
|
||||
<!-- More codecs should be added here, however I don't know how to find out about the codec.
|
||||
At the moment we just guess that application/ogg is a Ogg bitstream with some undefined
|
||||
codec. Everything else is undefined.
|
||||
-->
|
||||
<xsl:otherwise>codec:ogg_general</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
</xsl:choose><xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:if test="genre">GENRE=<xsl:value-of select="genre" /></xsl:if>
|
||||
==
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!--
|
||||
XSPF xslt stylesheet for Icecast and above
|
||||
Copyright (C) 2007 Thomas B. Ruecker, <thomas@ruecker.fi>
|
||||
XSPF xslt stylesheet for Icecast and above
|
||||
Copyright (C) 2007 Thomas B. Ruecker, <thomas@ruecker.fi>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
@ -16,58 +16,58 @@
|
||||
along with this program; if not, write to the
|
||||
Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
-->
|
||||
-->
|
||||
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" media-type="application/xspf+xml"
|
||||
method="xml" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<playlist version="1" xmlns="http://xspf.org/ns/0/">
|
||||
<title><xsl:value-of select="server" /></title>
|
||||
<creator><xsl:value-of select="server" /></creator>
|
||||
<trackList >
|
||||
<!-- end of "header" -->
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" media-type="application/xspf+xml"
|
||||
method="xml" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<playlist version="1" xmlns="http://xspf.org/ns/0/">
|
||||
<title><xsl:value-of select="server" /></title>
|
||||
<creator><xsl:value-of select="server" /></creator>
|
||||
<trackList >
|
||||
<!-- end of "header" -->
|
||||
|
||||
<xsl:for-each select="source">
|
||||
<xsl:for-each select="source">
|
||||
|
||||
<track>
|
||||
<location><xsl:value-of select="listenurl" /></location>
|
||||
<track>
|
||||
<location><xsl:value-of select="listenurl" /></location>
|
||||
|
||||
|
||||
<xsl:if test="artist"><creator><xsl:value-of select="artist" /></creator></xsl:if>
|
||||
<title><xsl:value-of select="title" /></title>
|
||||
<!-- The <xsl:text>\n</xsl:text> elements in the following part are used
|
||||
to enforce linebreaks this format seems to be expected by clients -->
|
||||
<annotation>
|
||||
<xsl:if test="server_name">Stream Title: <xsl:value-of select="server_name" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="server_description">Stream Description: <xsl:value-of select="server_description" /></xsl:if>
|
||||
Content Type:<xsl:value-of select="server_type" /><xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:if test="bitrate">Bitrate: <xsl:value-of select="bitrate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="quality">Quality: <xsl:value-of select="quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="video_quality">Video Quality: <xsl:value-of select="video_quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_size">Framesize: <xsl:value-of select="frame_size" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_rate">Framerate: <xsl:value-of select="frame_rate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listeners">Current Listeners: <xsl:value-of select="listeners" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listener_peak">Peak Listeners: <xsl:value-of select="listener_peak" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="genre">Stream Genre: <xsl:value-of select="genre" /></xsl:if>
|
||||
</annotation>
|
||||
<xsl:if test="artist"><creator><xsl:value-of select="artist" /></creator></xsl:if>
|
||||
<title><xsl:value-of select="title" /></title>
|
||||
<!-- The <xsl:text>\n</xsl:text> elements in the following part are used
|
||||
to enforce linebreaks this format seems to be expected by clients -->
|
||||
<annotation>
|
||||
<xsl:if test="server_name">Stream Title: <xsl:value-of select="server_name" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="server_description">Stream Description: <xsl:value-of select="server_description" /></xsl:if>
|
||||
Content Type:<xsl:value-of select="server_type" /><xsl:text>
|
||||
</xsl:text>
|
||||
<xsl:if test="bitrate">Bitrate: <xsl:value-of select="bitrate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="quality">Quality: <xsl:value-of select="quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="video_quality">Video Quality: <xsl:value-of select="video_quality" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_size">Framesize: <xsl:value-of select="frame_size" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="frame_rate">Framerate: <xsl:value-of select="frame_rate" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listeners">Current Listeners: <xsl:value-of select="listeners" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="listener_peak">Peak Listeners: <xsl:value-of select="listener_peak" /><xsl:text>
|
||||
</xsl:text></xsl:if>
|
||||
<xsl:if test="genre">Stream Genre: <xsl:value-of select="genre" /></xsl:if>
|
||||
</annotation>
|
||||
|
||||
<xsl:if test="server_url"><info><xsl:value-of select="server_url" /></info></xsl:if>
|
||||
<xsl:if test="server_url"><info><xsl:value-of select="server_url" /></info></xsl:if>
|
||||
|
||||
</track>
|
||||
</track>
|
||||
|
||||
</xsl:for-each>
|
||||
</trackList>
|
||||
</playlist>
|
||||
</xsl:for-each>
|
||||
</trackList>
|
||||
</playlist>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
70
web/auth.xsl
70
web/auth.xsl
@ -1,37 +1,37 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Authorization Page</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<xsl:if test="authenticator">
|
||||
<div class="roundbox">
|
||||
<h3 class="mount">
|
||||
Mount Point <xsl:value-of select="@mount" />
|
||||
<xsl:if test="server_name">
|
||||
<small><xsl:value-of select="server_name" /></small>
|
||||
</xsl:if>
|
||||
</h3>
|
||||
<form class="alignedform" method="get" action="/admin/buildm3u">
|
||||
<p>
|
||||
<label for="name">Username: </label>
|
||||
<input id="name" name="username" type="text" />
|
||||
</p>
|
||||
<p>
|
||||
<label for="password">Password: </label>
|
||||
<input id="password" name="password" type="password" />
|
||||
</p>
|
||||
<input type="hidden" name="mount" value="{@mount}" />
|
||||
<input type="submit" value="Login" />
|
||||
</form>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Authorization Page</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<xsl:if test="authenticator">
|
||||
<div class="roundbox">
|
||||
<h3 class="mount">
|
||||
Mount Point <xsl:value-of select="@mount" />
|
||||
<xsl:if test="server_name">
|
||||
<small><xsl:value-of select="server_name" /></small>
|
||||
</xsl:if>
|
||||
</h3>
|
||||
<form class="alignedform" method="get" action="/admin/buildm3u">
|
||||
<p>
|
||||
<label for="name">Username: </label>
|
||||
<input id="name" name="username" type="text" />
|
||||
</p>
|
||||
<p>
|
||||
<label for="password">Password: </label>
|
||||
<input id="password" name="password" type="password" />
|
||||
</p>
|
||||
<input type="hidden" name="mount" value="{@mount}" />
|
||||
<input type="submit" value="Login" />
|
||||
</form>
|
||||
</div>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,52 +1,52 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Server Information</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<h2>Version</h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Server Information</h3>
|
||||
<table class="table-keys">
|
||||
<tbody>
|
||||
<xsl:for-each select="/icestats">
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><xsl:value-of select="location" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Admin</td>
|
||||
<td><xsl:value-of select="admin" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Host</td>
|
||||
<td><xsl:value-of select="host" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Version</td>
|
||||
<td><xsl:value-of select="server_id" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
<tr>
|
||||
<td>Download</td>
|
||||
<td><a href="https://icecast.org/download/">icecast.org/download/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Git</td>
|
||||
<td><a href="https://icecast.org/download/#git">icecast.org/download/#git</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Documentation</td>
|
||||
<td><a href="https://icecast.org/docs/">icecast.org/docs/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Stream Directory</td>
|
||||
<td><a href="https://dir.xiph.org/">dir.xiph.org</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Community</td>
|
||||
<td><a href="https://icecast.org/contact/">icecast.org/contact/</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</xsl:template>
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:variable name="title">Server Information</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<h2>Version</h2>
|
||||
<section class="box">
|
||||
<h3 class="box_title">Server Information</h3>
|
||||
<table class="table-keys">
|
||||
<tbody>
|
||||
<xsl:for-each select="/icestats">
|
||||
<tr>
|
||||
<td>Location</td>
|
||||
<td><xsl:value-of select="location" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Admin</td>
|
||||
<td><xsl:value-of select="admin" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Host</td>
|
||||
<td><xsl:value-of select="host" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Version</td>
|
||||
<td><xsl:value-of select="server_id" /></td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
<tr>
|
||||
<td>Download</td>
|
||||
<td><a href="https://icecast.org/download/">icecast.org/download/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Git</td>
|
||||
<td><a href="https://icecast.org/download/#git">icecast.org/download/#git</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Documentation</td>
|
||||
<td><a href="https://icecast.org/docs/">icecast.org/docs/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Stream Directory</td>
|
||||
<td><a href="https://dir.xiph.org/">dir.xiph.org</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Community</td>
|
||||
<td><a href="https://icecast.org/contact/">icecast.org/contact/</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
@ -1,25 +1,25 @@
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:import href="xml2json.xslt"/>
|
||||
<xsl:output indent="no" omit-xml-declaration="yes" method="text" encoding="UTF-8" media-type="application/json"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
<xsl:import href="xml2json.xslt"/>
|
||||
<xsl:output indent="no" omit-xml-declaration="yes" method="text" encoding="UTF-8" media-type="application/json"/>
|
||||
<xsl:strip-space elements="*"/>
|
||||
|
||||
<!-- override imported transform variable to enable output -->
|
||||
<xsl:variable name="output">true</xsl:variable>
|
||||
<!-- override imported transform variable to enable output -->
|
||||
<xsl:variable name="output">true</xsl:variable>
|
||||
|
||||
<!-- hide certain nodes from all sources -->
|
||||
<xsl:template match="icestats/source/max_listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/public"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/source_ip"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/slow_listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/*[contains(name(), 'total_bytes')]"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/user_agent" ><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/listener" ><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<!-- hide certain nodes from all sources -->
|
||||
<xsl:template match="icestats/source/max_listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/public"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/source_ip"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/slow_listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/*[contains(name(), 'total_bytes')]"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/user_agent" ><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/source/listener" ><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
|
||||
<!-- hide certain global nodes -->
|
||||
<xsl:template match="icestats/sources"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/clients"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/stats"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="node()[contains(name(), 'connections')]"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<!-- hide certain global nodes -->
|
||||
<xsl:template match="icestats/sources"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/clients"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/stats"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="icestats/listeners"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
<xsl:template match="node()[contains(name(), 'connections')]"><xsl:if test="not(following-sibling::*)">"dummy":null}</xsl:if></xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
258
web/status.xsl
258
web/status.xsl
@ -1,132 +1,132 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
<xsl:include href="includes/playlist.xsl"/>
|
||||
<xsl:variable name="title">Status</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<!--mount point stats-->
|
||||
<h2>Status</h2>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<xsl:call-template name="player" />
|
||||
<xsl:include href="includes/web-page.xsl"/>
|
||||
<xsl:include href="includes/player.xsl"/>
|
||||
<xsl:include href="includes/playlist.xsl"/>
|
||||
<xsl:variable name="title">Status</xsl:variable>
|
||||
<xsl:template name="content">
|
||||
<!--mount point stats-->
|
||||
<h2>Status</h2>
|
||||
<xsl:choose>
|
||||
<xsl:when test="source">
|
||||
<xsl:for-each select="source">
|
||||
<xsl:choose>
|
||||
<xsl:when test="listeners">
|
||||
<section class="box">
|
||||
<h3 class="box_title">Mountpoint <code><xsl:value-of select="@mount" /></code></h3>
|
||||
<xsl:call-template name="player" />
|
||||
|
||||
<!-- Stream info and stats -->
|
||||
<h4>Further information</h4>
|
||||
<div class="mountcont">
|
||||
<table class="table-keys">
|
||||
<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:call-template name="playlist" />
|
||||
</div>
|
||||
</section>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="info">
|
||||
<strong>No mounts!</strong> There are no active mountpoints.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
<!-- Stream info and stats -->
|
||||
<h4>Further information</h4>
|
||||
<div class="mountcont">
|
||||
<table class="table-keys">
|
||||
<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:call-template name="playlist" />
|
||||
</div>
|
||||
</section>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<aside class="info">
|
||||
<strong>No mounts!</strong> There are no active mountpoints.
|
||||
</aside>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
Loading…
Reference in New Issue
Block a user