Initial commit

This commit is contained in:
Fergal Moran
2019-03-31 16:39:03 +01:00
commit f029ef1b76
35 changed files with 1663 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.env

12
Dockerfile.alpine.podnoms Normal file
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,2 @@
# docker.devbox
Docker image for development box

20
docker-icecast/Dockerfile Normal file
View 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
View 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
View File

@@ -0,0 +1,60 @@
# Icecast in Docker [![Build Status](https://travis-ci.org/moul/docker-icecast.svg?branch=master)](https://travis-ci.org/moul/docker-icecast)
Icecast2 Dockerfile
[![](http://dockeri.co/image/moul/icecast)](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)

View 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}&amp;id={ID}">Kick</a></td>
</tr>
</xsl:for-each>
</table>
<br />
<br />
</xsl:for-each>
<xsl:text disable-output-escaping="yes">&amp;</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>

View 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">&amp;</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>

View 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}&amp;username={username}&amp;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">&amp;</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>

View 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}&amp;destination={@mount}">Move Clients</a></td>
</tr>
</table>
<br />
<br />
</xsl:for-each>
<xsl:text disable-output-escaping="yes">&amp;</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>

View 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>

View 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">&amp;</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>

View 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">&amp;</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>

View 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>

View 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>

View 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">&amp;</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>

View 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>

View 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">&amp;</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>

View 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>

View 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;
}

View 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

View 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
View 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

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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