mirror of
https://github.com/fergalmoran/dockerfiless.git
synced 2025-12-22 09:18:58 +00:00
Initial commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.env
|
||||||
12
Dockerfile.alpine.podnoms
Normal file
12
Dockerfile.alpine.podnoms
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime-alpine AS runtime
|
||||||
|
|
||||||
|
RUN apk add --no-cache --update \
|
||||||
|
python \
|
||||||
|
ffmpeg \
|
||||||
|
libuv \
|
||||||
|
curl \
|
||||||
|
curl-dev && \
|
||||||
|
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
|
||||||
|
chmod a+rx /usr/local/bin/youtube-dl && \
|
||||||
|
youtube-dl -U
|
||||||
|
|
||||||
25
Dockerfile.mssql.tools
Normal file
25
Dockerfile.mssql.tools
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# SQL Server Command Line Tools
|
||||||
|
FROM ubuntu:16.04
|
||||||
|
MAINTAINER SQL Server Engineering Team
|
||||||
|
|
||||||
|
# apt-get and system utilities
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
curl apt-transport-https debconf-utils \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# adding custom MS repository
|
||||||
|
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||||
|
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
|
||||||
|
|
||||||
|
# install SQL Server drivers and tools
|
||||||
|
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools python-pip libunwind8 libicu55
|
||||||
|
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin:/scripts/"' >> ~/.bashrc
|
||||||
|
RUN /bin/bash -c "source ~/.bashrc"
|
||||||
|
|
||||||
|
RUN apt-get -y install locales
|
||||||
|
RUN locale-gen en_US.UTF-8
|
||||||
|
RUN update-locale LANG=en_US.UTF-8
|
||||||
|
RUN pip install mssql-scripter
|
||||||
|
|
||||||
|
CMD /bin/bash
|
||||||
|
|
||||||
11
Dockerfile.podnoms
Normal file
11
Dockerfile.podnoms
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS runtime
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get -y install \
|
||||||
|
python \
|
||||||
|
ffmpeg \
|
||||||
|
curl && \
|
||||||
|
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
|
||||||
|
chmod a+rx /usr/local/bin/youtube-dl && \
|
||||||
|
youtube-dl -U
|
||||||
|
|
||||||
19
angular-cli/Dockerfile
Normal file
19
angular-cli/Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
FROM alpine
|
||||||
|
MAINTAINER fergalmoran <Ferg@lMoran/me>
|
||||||
|
|
||||||
|
ENV CONTAINER_USER_ID="1000"
|
||||||
|
ENV CONTAINER_GROUP_ID="1000"
|
||||||
|
|
||||||
|
RUN apk update && apk upgrade
|
||||||
|
RUN apk add --update nodejs nodejs-npm
|
||||||
|
|
||||||
|
RUN adduser -D -u ${CONTAINER_USER_ID} -g ${CONTAINER_GROUP_ID} -h /home/user -s /bin/sh user
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/npm-global && chown user:user /opt/npm-global
|
||||||
|
|
||||||
|
USER user
|
||||||
|
|
||||||
|
ENV NPM_CONFIG_PREFIX=/opt/npm-global
|
||||||
|
ENV PATH=$NPM_CONFIG_PREFIX/bin/:$PATH
|
||||||
|
|
||||||
|
RUN npm install -g npm@latest @angular/cli yarn
|
||||||
30
devbox/Dockerfile
Normal file
30
devbox/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
FROM ubuntu:latest
|
||||||
|
|
||||||
|
RUN apt-get update -y
|
||||||
|
RUN apt-get install -y mercurial \
|
||||||
|
git \
|
||||||
|
python \
|
||||||
|
curl \
|
||||||
|
mongodb \
|
||||||
|
vim \
|
||||||
|
vim-nox \
|
||||||
|
vim-scripts \
|
||||||
|
strace \
|
||||||
|
diffstat \
|
||||||
|
pkg-config \
|
||||||
|
cmake \
|
||||||
|
build-essential \
|
||||||
|
tcpdump \
|
||||||
|
screen \
|
||||||
|
python-setuptools \
|
||||||
|
exuberant-ctags \
|
||||||
|
build-essential \
|
||||||
|
cmake \
|
||||||
|
python-dev
|
||||||
|
|
||||||
|
#Set up git
|
||||||
|
RUN git clone https://github.com/fergalmoran/dotfiles.git ${HOME}/dotfiles \
|
||||||
|
&& cd ${HOME}/dotfiles \
|
||||||
|
&& ./install.sh
|
||||||
|
|
||||||
|
CMD /bin/zsh
|
||||||
2
devbox/README.md
Normal file
2
devbox/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# docker.devbox
|
||||||
|
Docker image for development box
|
||||||
20
docker-icecast/Dockerfile
Normal file
20
docker-icecast/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
FROM ubuntu:wily
|
||||||
|
|
||||||
|
MAINTAINER Fergal Moran "fergal.moran@gmail.com"
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
apt-get -y install icecast2 python-setuptools && \
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
RUN easy_install supervisor && \
|
||||||
|
easy_install supervisor-stdout
|
||||||
|
|
||||||
|
CMD ["/start.sh"]
|
||||||
|
EXPOSE 8000
|
||||||
|
VOLUME ["/config", "/var/log/icecast2", "/etc/icecast2"]
|
||||||
|
|
||||||
|
ADD ./start.sh /start.sh
|
||||||
|
ADD ./etc /etc
|
||||||
|
RUN chown -R icecast2 /etc/icecast2
|
||||||
22
docker-icecast/LICENSE.md
Normal file
22
docker-icecast/LICENSE.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
The MIT License
|
||||||
|
===============
|
||||||
|
|
||||||
|
Copyright (c) **2013-2015 Manfred Touron <m@42.am> ([@moul](https://twitter.com/moul))**
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
60
docker-icecast/README.md
Normal file
60
docker-icecast/README.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Icecast in Docker [](https://travis-ci.org/moul/docker-icecast)
|
||||||
|
|
||||||
|
Icecast2 Dockerfile
|
||||||
|
|
||||||
|
[](https://index.docker.io/u/moul/icecast/)
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
Run with default password, export port 8000
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -p 8000:8000 moul/icecast
|
||||||
|
$BROWSER localhost:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
Run with custom password
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -p 8000:8000 -e ICECAST_SOURCE_PASSWORD=aaaa -e ICECAST_ADMIN_PASSWORD=bbbb -e ICECAST_PASSWORD=cccc -e ICECAST_RELAY_PASSWORD=dddd moul/icecast
|
||||||
|
```
|
||||||
|
|
||||||
|
Run with custom configuration
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -p 8000:8000 -v /local/path/to/icecast/config:/etc/icecast2 moul/icecast
|
||||||
|
docker run -p 8000:8000 -v /local/path/to/icecast.xml:/etc/icecast2/icecast.xml moul/icecast
|
||||||
|
```
|
||||||
|
|
||||||
|
Extends Dockerfile
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM moul/icecast
|
||||||
|
ADD ./icecast.xml /etc/icecast2
|
||||||
|
```
|
||||||
|
|
||||||
|
Docker-compose
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
icecast:
|
||||||
|
image: moul/icecast
|
||||||
|
volumes:
|
||||||
|
- logs:/var/log/icecast2
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
environment:
|
||||||
|
- ICECAST_SOURCE_PASSWORD=aaa
|
||||||
|
- ICECAST_ADMIN_PASSWORD=bbb
|
||||||
|
- ICECAST_PASSWORD=ccc
|
||||||
|
- ICECAST_RELAY_PASSWORD=ddd
|
||||||
|
ports:
|
||||||
|
- 8000:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
- https://github.com/ultreme/scc-radio/
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT](https://github.com/moul/docker-icecast/blob/master/LICENSE.md)
|
||||||
101
docker-icecast/etc/icecast2/admin/listclients.xsl
Normal file
101
docker-icecast/etc/icecast2/admin/listclients.xsl
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Listener Stats</h1>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<div class="streamheader">
|
||||||
|
<table cellspacing="0" cellpadding="0" >
|
||||||
|
<colgroup align="left" />
|
||||||
|
<colgroup align="right" width="300" />
|
||||||
|
<tr>
|
||||||
|
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="authenticator">
|
||||||
|
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td align="right">
|
||||||
|
<a href="{@mount}.m3u">M3U</a>
|
||||||
|
<a href="{@mount}.xspf">XSPF</a></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</tr></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||||
|
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||||
|
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||||
|
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table cellspacing="0" cellpadding="5" border="1" bordercolor="#C0C0C0" >
|
||||||
|
<tr>
|
||||||
|
<td ><center><b>IP</b></center></td>
|
||||||
|
<td ><center><b>Seconds Connected</b></center></td>
|
||||||
|
<td ><center><b>User Agent</b></center></td>
|
||||||
|
<td ><center><b>Action</b></center></td>
|
||||||
|
</tr>
|
||||||
|
<xsl:variable name = "themount" ><xsl:value-of select="@mount" /></xsl:variable>
|
||||||
|
<xsl:for-each select="listener">
|
||||||
|
<tr>
|
||||||
|
<td align="center"><xsl:value-of select="IP" /><xsl:if test="username"> (<xsl:value-of select="username" />)</xsl:if></td>
|
||||||
|
<td align="center"><xsl:value-of select="Connected" /></td>
|
||||||
|
<td align="center"><xsl:value-of select="UserAgent" /></td>
|
||||||
|
<td align="center"><a href="killclient.xsl?mount={$themount}&id={ID}">Kick</a></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
84
docker-icecast/etc/icecast2/admin/listmounts.xsl
Normal file
84
docker-icecast/etc/icecast2/admin/listmounts.xsl
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Active Mountpoints</h1>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<div class="streamheader">
|
||||||
|
<table cellspacing="0" cellpadding="0" >
|
||||||
|
<colgroup align="left" />
|
||||||
|
<colgroup align="right" width="300" />
|
||||||
|
<tr>
|
||||||
|
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="authenticator">
|
||||||
|
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td align="right">
|
||||||
|
<a href="{@mount}.m3u">M3U</a>
|
||||||
|
<a href="{@mount}.xspf">XSPF</a></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</tr></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||||
|
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||||
|
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||||
|
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||||
|
<xsl:if test="authenticator"><a class="nav2" href="manageauth.xsl?mount={@mount}">Manage Authentication</a></xsl:if>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<p><xsl:value-of select="listeners" /> Listener(s)</p>
|
||||||
|
<br></br>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
98
docker-icecast/etc/icecast2/admin/manageauth.xsl
Normal file
98
docker-icecast/etc/icecast2/admin/manageauth.xsl
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<xsl:for-each select="iceresponse">
|
||||||
|
<xsl:value-of select="message" />
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<h3>
|
||||||
|
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||||
|
(<xsl:value-of select="@mount" />)</h3>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||||
|
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move Listeners</a>
|
||||||
|
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||||
|
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<br></br>
|
||||||
|
<form method="GET" action="manageauth.xsl">
|
||||||
|
<table cellpadding="2" cellspacing="4" border="0" >
|
||||||
|
<tr>
|
||||||
|
<td ><b>User Id</b></td>
|
||||||
|
<td ></td>
|
||||||
|
</tr>
|
||||||
|
<xsl:variable name = "themount" ><xsl:value-of select="@mount" /></xsl:variable>
|
||||||
|
<xsl:for-each select="User">
|
||||||
|
<tr>
|
||||||
|
<td><xsl:value-of select="username" /></td>
|
||||||
|
<td><a class="nav2" href="manageauth.xsl?mount={$themount}&username={username}&action=delete">delete</a></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
<table cellpadding="2" cellspacing="4" border="0" >
|
||||||
|
<tr>
|
||||||
|
<td ><b>User Id</b></td>
|
||||||
|
<td ><b>Password</b></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td ><input type="text" name="username" /></td>
|
||||||
|
<td ><input type="text" name="password" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2"><input type="Submit" name="Submit" value="Add New User" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<input type="hidden" name="mount" value="{@mount}"/>
|
||||||
|
<input type="hidden" name="action" value="add"/>
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
63
docker-icecast/etc/icecast2/admin/moveclients.xsl
Normal file
63
docker-icecast/etc/icecast2/admin/moveclients.xsl
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<xsl:variable name = "currentmount" ><xsl:value-of select="current_source" /></xsl:variable>
|
||||||
|
<h1>Moving Listeners From (<xsl:value-of select="current_source" />)</h1>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<h3>Move to which mountpoint ?</h3>
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<table border="0" cellpadding="1" cellspacing="5" >
|
||||||
|
<tr>
|
||||||
|
<td>Move from (<xsl:copy-of select="$currentmount" />) to (<xsl:value-of select="@mount" />)</td>
|
||||||
|
<td><xsl:value-of select="listeners" /> Listeners</td>
|
||||||
|
<td><a class="nav2" href="moveclients.xsl?mount={$currentmount}&destination={@mount}">Move Clients</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
56
docker-icecast/etc/icecast2/admin/response.xsl
Normal file
56
docker-icecast/etc/icecast2/admin/response.xsl
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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 = "/iceresponse" >
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<img align="left" src="/icecast.png" /><h2><center>Icecast2 Admin</center></h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a> |
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a> |
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a> |
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<h1>Icecast Server Response</h1>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<h3>Response</h3>
|
||||||
|
<xsl:for-each select="/iceresponse">
|
||||||
|
Message : <xsl:value-of select="message" /><br></br>
|
||||||
|
Return Code: <xsl:value-of select="return" /><br></br>
|
||||||
|
</xsl:for-each>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
124
docker-icecast/etc/icecast2/admin/stats.xsl
Normal file
124
docker-icecast/etc/icecast2/admin/stats.xsl
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
<!--header menu -->
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<!--end header menu -->
|
||||||
|
|
||||||
|
<!--global server stats-->
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<h3>Global Server Stats</h3>
|
||||||
|
<table border="0" cellpadding="4">
|
||||||
|
<xsl:for-each select="/icestats">
|
||||||
|
<xsl:for-each select="*">
|
||||||
|
<xsl:if test = "name()!='source'">
|
||||||
|
<tr>
|
||||||
|
<td width="130"><xsl:value-of select="name()" /></td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="." /></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<!--end global server stats-->
|
||||||
|
|
||||||
|
<!--mount point stats-->
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<xsl:if test = "listeners!=''">
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<div class="streamheader">
|
||||||
|
<table cellspacing="0" cellpadding="0" >
|
||||||
|
<colgroup align="left" />
|
||||||
|
<colgroup align="right" width="300" />
|
||||||
|
<tr>
|
||||||
|
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="authenticator">
|
||||||
|
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td align="right">
|
||||||
|
<a href="{@mount}.m3u">M3U</a>
|
||||||
|
<a href="{@mount}.xspf">XSPF</a></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</tr></table>
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="5" bgcolor="444444">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav2" href="listclients.xsl?mount={@mount}">List Clients</a>
|
||||||
|
<a class="nav2" href="moveclients.xsl?mount={@mount}">Move MountPoints</a>
|
||||||
|
<a class="nav2" href="updatemetadata.xsl?mount={@mount}">Update Metadata</a>
|
||||||
|
<a class="nav2" href="killsource.xsl?mount={@mount}">Kill Source</a>
|
||||||
|
<xsl:if test="authenticator"><a class="nav2" href="manageauth.xsl?mount={@mount}">Manage Authentication</a></xsl:if>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table cellpadding="5" cellspacing="0" border="0">
|
||||||
|
<xsl:for-each select="*">
|
||||||
|
<tr>
|
||||||
|
<td width="130"><xsl:value-of select="name()" /></td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="." /></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
|
||||||
|
|
||||||
|
<!--end mount point stats-->
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
67
docker-icecast/etc/icecast2/admin/updatemetadata.xsl
Normal file
67
docker-icecast/etc/icecast2/admin/updatemetadata.xsl
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Admin</h2>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" cellpadding="1" cellspacing="3">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a class="nav" href="stats.xsl">Admin Home</a>
|
||||||
|
<a class="nav" href="listmounts.xsl">List Mountpoints</a>
|
||||||
|
<a class="nav" href="moveclients.xsl">Move Listeners</a>
|
||||||
|
<a class="nav" href="/status.xsl">Index</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<h1>Update Metadata</h1>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<h3>
|
||||||
|
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||||
|
(<xsl:value-of select="@mount" />)</h3>
|
||||||
|
|
||||||
|
<form method="GET" action="/admin/metadata.xsl">
|
||||||
|
<table border="0" cellpadding="4">
|
||||||
|
<tr><td>Metadata : <input type="text" name="song"/></td></tr>
|
||||||
|
<tr><td><input type="Submit" value="Update"/></td></tr>
|
||||||
|
</table>
|
||||||
|
<input type="hidden" name="mount" value="{@mount}"/>
|
||||||
|
<input type="hidden" name="mode" value="updinfo"/>
|
||||||
|
<input type="hidden" name="charset" value="UTF-8"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
74
docker-icecast/etc/icecast2/admin/xspf.xsl
Normal file
74
docker-icecast/etc/icecast2/admin/xspf.xsl
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<!--
|
||||||
|
XSPF xslt stylesheet for Icecast 2.3.2 and above
|
||||||
|
Copyright (C) 2007 Thomas B. Ruecker, tbr@ruecker-itk.de
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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="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">
|
||||||
|
|
||||||
|
<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="server_url"><info><xsl:value-of select="server_url" /></info></xsl:if>
|
||||||
|
|
||||||
|
</track>
|
||||||
|
|
||||||
|
</xsl:for-each>
|
||||||
|
</trackList>
|
||||||
|
</playlist>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
||||||
43
docker-icecast/etc/icecast2/icecast.xml
Normal file
43
docker-icecast/etc/icecast2/icecast.xml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<icecast>
|
||||||
|
<limits>
|
||||||
|
<clients>1000</clients>
|
||||||
|
<sources>42</sources>
|
||||||
|
<threadpool>5</threadpool>
|
||||||
|
<queue-size>524288</queue-size>
|
||||||
|
<client-timeout>30</client-timeout>
|
||||||
|
<header-timeout>15</header-timeout>
|
||||||
|
<source-timeout>10</source-timeout>
|
||||||
|
<burst-on-connect>1</burst-on-connect>
|
||||||
|
<burst-size>65535</burst-size>
|
||||||
|
</limits>
|
||||||
|
|
||||||
|
<authentication>
|
||||||
|
<source-password>RDzNlgqmj67vk</source-password>
|
||||||
|
<relay-password>9PmUbI1mLne9o</relay-password>
|
||||||
|
<admin-user>admin</admin-user>
|
||||||
|
<admin-password>CrVuP5evoJZ0.</admin-password>
|
||||||
|
</authentication>
|
||||||
|
|
||||||
|
<hostname>radio.deepsouthsounds.com</hostname>
|
||||||
|
<listen-socket>
|
||||||
|
<port>8351</port>
|
||||||
|
<shoutcast-mount>/dss</shoutcast-mount>
|
||||||
|
</listen-socket>
|
||||||
|
<fileserve>1</fileserve>
|
||||||
|
<paths>
|
||||||
|
<basedir>/usr/share/icecast2</basedir>
|
||||||
|
<logdir>/var/log/icecast2</logdir>
|
||||||
|
<webroot>/usr/share/icecast2/web</webroot>
|
||||||
|
<adminroot>/usr/share/icecast2/admin</adminroot>
|
||||||
|
<alias source="/" destination="/status.xsl"/>
|
||||||
|
</paths>
|
||||||
|
<logging>
|
||||||
|
<accesslog>access.log</accesslog>
|
||||||
|
<errorlog>error.log</errorlog>
|
||||||
|
<loglevel>3</loglevel>
|
||||||
|
<logsize>10000</logsize>
|
||||||
|
</logging>
|
||||||
|
<security>
|
||||||
|
<chroot>0</chroot>
|
||||||
|
</security>
|
||||||
|
</icecast>
|
||||||
57
docker-icecast/etc/icecast2/web/auth.xsl
Normal file
57
docker-icecast/etc/icecast2/web/auth.xsl
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<table border="0" width="100%%">
|
||||||
|
<tr>
|
||||||
|
<td width="50"></td>
|
||||||
|
<td>
|
||||||
|
<h2>Authorization Page</h2>
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="listeners">
|
||||||
|
<xsl:if test="authenticator">
|
||||||
|
<xsl:if test="server_name"><xsl:value-of select="server_name" /> </xsl:if>
|
||||||
|
<h3>(<xsl:value-of select="@mount" />)</h3>
|
||||||
|
<form method="GET" action="/admin/buildm3u">
|
||||||
|
<table border="0" cellpadding="4">
|
||||||
|
<tr><td>Username : <input type="text" name="username"/></td></tr>
|
||||||
|
<tr><td>Password : <input type="password" name="password"/></td></tr>
|
||||||
|
<tr><td><input type="Submit" value="Login"/></td></tr>
|
||||||
|
</table>
|
||||||
|
<input type="hidden" name="mount" value="{@mount}"/>
|
||||||
|
</form>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<br></br>
|
||||||
|
<br></br>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br></br><br></br>
|
||||||
|
</td>
|
||||||
|
<td width="25"></td></tr>
|
||||||
|
</table>
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
91
docker-icecast/etc/icecast2/web/server_version.xsl
Normal file
91
docker-icecast/etc/icecast2/web/server_version.xsl
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Server Information</h2>
|
||||||
|
<br />
|
||||||
|
<!--index header menu -->
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#656565">
|
||||||
|
<a class="nav" href="admin/">Administration</a>
|
||||||
|
<a class="nav" href="status.xsl">Server Status</a>
|
||||||
|
<a class="nav" href="server_version.xsl">Version</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<!--end index header menu -->
|
||||||
|
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<h3>Server Information</h3>
|
||||||
|
<table border="0" cellpadding="4">
|
||||||
|
<xsl:for-each select="/icestats">
|
||||||
|
<tr>
|
||||||
|
<td width="130">Location</td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="location" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Admin</td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="admin" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Host</td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="host" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Version</td>
|
||||||
|
<td class="streamdata"><xsl:value-of select="server_id" /></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:for-each>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Download</td>
|
||||||
|
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/download.php">icecast.org</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Subversion</td>
|
||||||
|
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/svn.php">click here</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Documentation</td>
|
||||||
|
<td class="streamdata"><a class="nav" target="_blank" href="http://icecast.org/docs.php">click here</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Stream Directory </td>
|
||||||
|
<td class="streamdata"><a class="nav" target="_blank" href="http://dir.xiph.org/index.php">dir.xiph.org</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td width="130">Community</td>
|
||||||
|
<td class="streamdata"><a class="nav" target="_blank" href="http://forum.icecast.org/">forum.icecast.org</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
122
docker-icecast/etc/icecast2/web/status.xsl
Normal file
122
docker-icecast/etc/icecast2/web/status.xsl
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||||
|
<xsl:output omit-xml-declaration="no" method="html" 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>
|
||||||
|
<head>
|
||||||
|
<title>Icecast Streaming Media Server</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
</head>
|
||||||
|
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
|
||||||
|
<h2>Icecast2 Status</h2>
|
||||||
|
<br />
|
||||||
|
<!--index header menu -->
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#656565">
|
||||||
|
<a class="nav" href="admin/">Administration</a>
|
||||||
|
<a class="nav" href="status.xsl">Server Status</a>
|
||||||
|
<a class="nav" href="server_version.xsl">Version</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<!--end index header menu -->
|
||||||
|
<!--mount point stats-->
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="listeners">
|
||||||
|
<div class="roundcont">
|
||||||
|
<div class="roundtop">
|
||||||
|
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
<div class="newscontent">
|
||||||
|
<div class="streamheader">
|
||||||
|
<table cellspacing="0" cellpadding="0">
|
||||||
|
<colgroup align="left" />
|
||||||
|
<colgroup align="right" width="300" />
|
||||||
|
<tr>
|
||||||
|
<td><h3>Mount Point <xsl:value-of select="@mount" /></h3></td>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="authenticator">
|
||||||
|
<td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<td align="right"> <a href="{@mount}.m3u">M3U</a> <a href="{@mount}.xspf">XSPF</a></td>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</tr></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table border="0" cellpadding="4">
|
||||||
|
<xsl:if test="server_name">
|
||||||
|
<tr><td>Stream Title:</td><td class="streamdata"> <xsl:value-of select="server_name" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="server_description">
|
||||||
|
<tr><td>Stream Description:</td><td class="streamdata"> <xsl:value-of select="server_description" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="server_type">
|
||||||
|
<tr><td>Content Type:</td><td class="streamdata"><xsl:value-of select="server_type" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="stream_start">
|
||||||
|
<tr><td>Mount started:</td><td class="streamdata"><xsl:value-of select="stream_start" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="bitrate">
|
||||||
|
<tr><td>Bitrate:</td><td class="streamdata"> <xsl:value-of select="bitrate" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="quality">
|
||||||
|
<tr><td>Quality:</td><td class="streamdata"> <xsl:value-of select="quality" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="video_quality">
|
||||||
|
<tr><td>Video Quality:</td><td class="streamdata"> <xsl:value-of select="video_quality" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="frame_size">
|
||||||
|
<tr><td>Framesize:</td><td class="streamdata"> <xsl:value-of select="frame_size" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="frame_rate">
|
||||||
|
<tr><td>Framerate:</td><td class="streamdata"> <xsl:value-of select="frame_rate" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="listeners">
|
||||||
|
<tr><td>Current Listeners:</td><td class="streamdata"> <xsl:value-of select="listeners" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="listener_peak">
|
||||||
|
<tr><td>Peak Listeners:</td><td class="streamdata"> <xsl:value-of select="listener_peak" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="genre">
|
||||||
|
<tr><td>Stream Genre:</td><td class="streamdata"> <xsl:value-of select="genre" /></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="server_url">
|
||||||
|
<tr><td>Stream URL:</td><td class="streamdata"> <a target="_blank" href="{server_url}"><xsl:value-of select="server_url" /></a></td></tr>
|
||||||
|
</xsl:if>
|
||||||
|
<tr><td>Current Song:</td><td class="streamdata">
|
||||||
|
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="roundbottom">
|
||||||
|
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
|
||||||
|
|
||||||
|
|
||||||
|
<div class="poster">Support icecast development at <a class="nav" target="_blank" href="http://www.icecast.org">www.icecast.org</a></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
12
docker-icecast/etc/icecast2/web/status2.xsl
Normal file
12
docker-icecast/etc/icecast2/web/status2.xsl
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<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" >
|
||||||
|
<pre>
|
||||||
|
MountPoint,Connections,Stream Name,Current Listeners,Description,Currently Playing,Stream URL
|
||||||
|
Global,Client:<xsl:value-of select="connections" /> Source: <xsl:value-of select="source_connections" />,,<xsl:value-of select="listeners" />,,
|
||||||
|
<xsl:for-each select="source">
|
||||||
|
<xsl:value-of select="@mount" />,,<xsl:value-of select="name" />,<xsl:value-of select="listeners" />,<xsl:value-of select="description" />,<xsl:value-of select="artist" /> - <xsl:value-of select="title" />,<xsl:value-of select="url" />
|
||||||
|
</xsl:for-each>
|
||||||
|
</pre>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
250
docker-icecast/etc/icecast2/web/style.css
Normal file
250
docker-icecast/etc/icecast2/web/style.css
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
This file styles the bar that goes across the top of all Xiph.Org
|
||||||
|
pages.
|
||||||
|
|
||||||
|
The style that comes from this was first (to my knowledge) at
|
||||||
|
http://alistapart.com/stories/practicalcss/ in the
|
||||||
|
"Splitting the Difference" section.
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/* This effect doesn't work at all if all content is pinched in a bit. */
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin-left: 50px;
|
||||||
|
margin-right: 25px;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xiphnav {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: .25em;
|
||||||
|
margin-bottom: .5em;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
color: #000;
|
||||||
|
background: #aaa;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 3em;
|
||||||
|
color: #fff;
|
||||||
|
padding: 10px 0px 10px 80px;
|
||||||
|
margin-top:3px;
|
||||||
|
background: transparent url(/icecast.png) no-repeat scroll left center
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 100%;
|
||||||
|
color: #fff;
|
||||||
|
margin-top:3px;
|
||||||
|
}
|
||||||
|
.nav {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 110%;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.nav:hover {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.xiphnav_a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.news {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.newsheader {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 110%;
|
||||||
|
color: #f8ef64;
|
||||||
|
background: #444;
|
||||||
|
}
|
||||||
|
.streamtd {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 85%;
|
||||||
|
color: #fff;
|
||||||
|
padding:15px;
|
||||||
|
}
|
||||||
|
.streamtd_alt {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 85%;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.streamtd_alt_2 {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: underline;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 85%;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.roundcont {
|
||||||
|
width: 90%;
|
||||||
|
background-color: #656565;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.roundcont a {
|
||||||
|
margin: 0px 10px;
|
||||||
|
}
|
||||||
|
.newscontent {
|
||||||
|
margin: 0 20px;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 110%;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.newscontent h3 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-bottom: 1px groove #ACACAC;
|
||||||
|
}
|
||||||
|
.newscontent h4 {
|
||||||
|
margin: 10px 0px;
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 110%;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.newscontent p {
|
||||||
|
margin: 0 0;
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: none;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
.newscontent td {
|
||||||
|
margin: 0 0;
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: none;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
.newscontent td.streamdata {
|
||||||
|
margin: 0 0;
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: none;
|
||||||
|
font-size: 90%;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.streamheader table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-bottom: 1px groove #ACACAC;
|
||||||
|
}
|
||||||
|
.streamheader td {
|
||||||
|
margin: 0px;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
padding: 10 5 10 5;
|
||||||
|
border: 0px solid white;
|
||||||
|
}
|
||||||
|
.streamheader h3 {
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
.streamheader a {
|
||||||
|
padding: 8px 5px 3px 30px;
|
||||||
|
text-decoration: none;
|
||||||
|
background: transparent url("/tunein.png") no-repeat left center;
|
||||||
|
}
|
||||||
|
.streamheader a.auth {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
padding-left: 32px;
|
||||||
|
background: transparent url("/key.png") no-repeat left center;
|
||||||
|
}
|
||||||
|
.newscontent a {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0px;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.newscontent a:hover {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.newscontent a.nav2 {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 2px 9px;
|
||||||
|
background: #444;
|
||||||
|
color: #f8ef64;
|
||||||
|
}
|
||||||
|
.newscontent a.nav2:hover {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
text-decoration: none;
|
||||||
|
background: #777;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.poster {
|
||||||
|
font-family: Verdana, sans-serif;
|
||||||
|
margin: 50px 120px 20px 0px;
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 100%;
|
||||||
|
color: #f8ef64;
|
||||||
|
padding: 5px;
|
||||||
|
border-top: 1px groove #ACACAC;
|
||||||
|
}
|
||||||
|
.roundcont p {
|
||||||
|
margin: 10px 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roundtop {
|
||||||
|
background: url(/corner_topright.jpg) no-repeat top right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roundbottom {
|
||||||
|
background: url(/corner_bottomright.jpg) no-repeat top right;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.corner {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
border: none;
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
33
docker-icecast/etc/supervisord.conf
Normal file
33
docker-icecast/etc/supervisord.conf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
[unix_http_server]
|
||||||
|
file=/tmp/supervisor.sock
|
||||||
|
|
||||||
|
[supervisord]
|
||||||
|
logfile=/tmp/supervisord.log
|
||||||
|
logfile_maxbytes=50MB
|
||||||
|
logfile_backups=10
|
||||||
|
loglevel=info
|
||||||
|
pidfile=/tmp/supervisord.pid
|
||||||
|
nodaemon=false
|
||||||
|
minfds=1024
|
||||||
|
minprocs=200
|
||||||
|
user=icecast2
|
||||||
|
|
||||||
|
[rpcinterface:supervisor]
|
||||||
|
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
|
||||||
|
|
||||||
|
[supervisorctl]
|
||||||
|
serverurl=unix:///tmp/supervisor.sock
|
||||||
|
|
||||||
|
[program:icecast2]
|
||||||
|
user=icecast2
|
||||||
|
command=icecast2 -n -c /etc/icecast2/icecast.xml
|
||||||
|
stopsignal=6
|
||||||
|
stdout_events_enabled=true
|
||||||
|
stderr_events_enabled=true
|
||||||
|
autorestart=true
|
||||||
|
|
||||||
|
[eventlistener:stdout]
|
||||||
|
command=supervisor_stdout
|
||||||
|
buffer_size=100
|
||||||
|
events=PROCESS_LOG
|
||||||
|
result_hander=supervisor_stdout:event_handler
|
||||||
12
docker-icecast/examples/docker-compose.yml
Normal file
12
docker-icecast/examples/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
icecast:
|
||||||
|
image: moul/icecast:latest
|
||||||
|
volumes:
|
||||||
|
- logs:/var/log/icecast2
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
environment:
|
||||||
|
- ICECAST_SOURCE_PASSWORD=changeme
|
||||||
|
- ICECAST_ADMIN_PASSWORD=changeme
|
||||||
|
- ICECAST_PASSWORD=changeme
|
||||||
|
- ICECAST_RELAY_PASSWORD=changeme
|
||||||
|
ports:
|
||||||
|
- 8000:8000
|
||||||
25
docker-icecast/start.sh
Normal file
25
docker-icecast/start.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
env
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [ -n "$ICECAST_SOURCE_PASSWORD" ]; then
|
||||||
|
sed -i "s/<source-password>[^<]*<\/source-password>/<source-password>$ICECAST_SOURCE_PASSWORD<\/source-password>/g" /etc/icecast2/icecast.xml
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$ICECAST_RELAY_PASSWORD" ]; then
|
||||||
|
sed -i "s/<relay-password>[^<]*<\/relay-password>/<relay-password>$ICECAST_RELAY_PASSWORD<\/relay-password>/g" /etc/icecast2/icecast.xml
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$ICECAST_ADMIN_PASSWORD" ]; then
|
||||||
|
sed -i "s/<admin-password>[^<]*<\/admin-password>/<admin-password>$ICECAST_ADMIN_PASSWORD<\/admin-password>/g" /etc/icecast2/icecast.xml
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$ICECAST_PASSWORD" ]; then
|
||||||
|
sed -i "s/<password>[^<]*<\/password>/<password>$ICECAST_PASSWORD<\/password>/g" /etc/icecast2/icecast.xml
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat /etc/icecast2/icecast.xml
|
||||||
|
|
||||||
|
supervisord -n -c /etc/supervisord.conf
|
||||||
23
elkarbackup/docker-compose.yml
Normal file
23
elkarbackup/docker-compose.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: changeme
|
||||||
|
#volumes:
|
||||||
|
# - /srv/mysql:/var/lib/mysql
|
||||||
|
|
||||||
|
elkarbackup:
|
||||||
|
image: elkarbackup/elkarbackup
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
links:
|
||||||
|
- db
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
#volumes:
|
||||||
|
# - /srv/elkarbackup/config:/etc/elkarbackup
|
||||||
|
# - /srv/elkarbackup/data:/var/spool/elkarbackup
|
||||||
|
environment:
|
||||||
|
EB_DB_PASSWORD: topSecret
|
||||||
21
pgadmin4/Dockerfile
Normal file
21
pgadmin4/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM ubuntu
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get -qy update && apt-get -qy dist-upgrade \
|
||||||
|
&& apt-get -qy install --no-install-recommends python3 python3-pip libpq5 libpq-dev build-essential libpython3-all-dev git python-setuptools \
|
||||||
|
&& pip3 install --upgrade pip \
|
||||||
|
&& pip install setuptools \
|
||||||
|
&& git clone git://git.postgresql.org/git/pgadmin4.git \
|
||||||
|
# && rm -rf pgadmin4/.git \
|
||||||
|
&& pip install -r pgadmin4/requirements.txt \
|
||||||
|
&& apt-get -qy purge libpq-dev build-essential libpython3-all-dev git \
|
||||||
|
&& apt-get -qy --purge autoremove && apt-get -qy clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
|
||||||
|
&& rm -rf /usr/share/doc /usr/share/doc-base /usr/share/man /usr/share/locale /usr/share/zoneinfo
|
||||||
|
|
||||||
|
EXPOSE 5050
|
||||||
|
|
||||||
|
ADD run_pgadmin4.sh /
|
||||||
|
RUN chmod +x /run_pgadmin4.sh
|
||||||
|
ENTRYPOINT ["./run_pgadmin4.sh"]
|
||||||
21
pgadmin4/LICENSE.md
Normal file
21
pgadmin4/LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 Fergal Moran
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
8
pgadmin4/README.md
Normal file
8
pgadmin4/README.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Docker container for pgadmin4
|
||||||
|
|
||||||
|
Create a folder for settings and run the container
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir -p ~/pgadmin-data
|
||||||
|
docker run -it --rm -v ~/pgadmin-data:/pgadmin-data --net=host fergalmoran/pgadmin4:latest
|
||||||
|
```
|
||||||
27
pgadmin4/run_pgadmin4.sh
Normal file
27
pgadmin4/run_pgadmin4.sh
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export USER_ID=${DATA_USER_ID:-1000}
|
||||||
|
export GROUP_ID=${DATA_GROUP_ID:-1000}
|
||||||
|
|
||||||
|
#Link configuration volume
|
||||||
|
mkdir -p /pgadmin-data
|
||||||
|
ln -s /pgadmin-data /root/.pgadmin
|
||||||
|
chmod a+x /root
|
||||||
|
|
||||||
|
#Create unprivileged user
|
||||||
|
groupadd -g $GROUP_ID -o pgadmin
|
||||||
|
useradd --shell /usr/sbin/nologin -u $USER_ID -o -c "" -g $GROUP_ID pgadmin --home /pgadmin-data
|
||||||
|
chown pgadmin:pgadmin /pgadmin-data
|
||||||
|
|
||||||
|
#Create persistent config file on volume
|
||||||
|
if [ ! -f /pgadmin-data/config_local.py ]; then
|
||||||
|
cat /pgadmin4/web/config.py \
|
||||||
|
| sed "s/DEFAULT_SERVER = 'localhost'/DEFAULT_SERVER = '0.0.0.0'/" \
|
||||||
|
> /pgadmin-data/config_local.py
|
||||||
|
chown pgadmin:pgadmin /pgadmin-data/config_local.py
|
||||||
|
fi
|
||||||
|
ln -s /pgadmin-data/config_local.py /pgadmin4/web/config_local.py
|
||||||
|
|
||||||
|
|
||||||
|
#Run unprivileged
|
||||||
|
chroot --userspec pgadmin:pgadmin / python3 pgadmin4/web/pgAdmin4.py
|
||||||
|
|
||||||
12
sql-server/Dockerfile
Normal file
12
sql-server/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM ubuntu:16.04
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y curl apt-transport-https sudo
|
||||||
|
|
||||||
|
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||||
|
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list > /etc/apt/sources.list.d/mssql-server.list
|
||||||
|
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/msprod.list
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y mssql-server mssql-tools
|
||||||
|
|
||||||
|
|
||||||
26
transmission/Dockerfile
Normal file
26
transmission/Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
FROM lsiobase/alpine.armhf:3.7
|
||||||
|
LABEL maintainer="Ferg@lMoran.me"
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
echo "**** install packages ****" && \
|
||||||
|
apk add --no-cache \
|
||||||
|
curl \
|
||||||
|
jq \
|
||||||
|
openssh \
|
||||||
|
openssl \
|
||||||
|
p7zip \
|
||||||
|
rsync \
|
||||||
|
tar \
|
||||||
|
transmission-cli \
|
||||||
|
transmission-daemon \
|
||||||
|
unrar \
|
||||||
|
unzip
|
||||||
|
|
||||||
|
# copy local files
|
||||||
|
COPY root/ /
|
||||||
|
|
||||||
|
RUN rc-update add sshd
|
||||||
|
# ports and volumes
|
||||||
|
EXPOSE 9091 30006 22
|
||||||
|
VOLUME /config /watch
|
||||||
|
|
||||||
11
tvheadend/start.sh
Executable file
11
tvheadend/start.sh
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
docker run \
|
||||||
|
-e PUID=1000 \
|
||||||
|
-e PGID=1000 \
|
||||||
|
-e TZ=Europe/London \
|
||||||
|
-p 9981:9981 \
|
||||||
|
-p 9982:9982 \
|
||||||
|
-v /mnt/niles/kubes/configs/tvheadend:/config \
|
||||||
|
-v /mnt/niles/kubes/configs/tvheadend/recordings:/recordings \
|
||||||
|
linuxserver/tvheadend
|
||||||
|
|
||||||
Reference in New Issue
Block a user