From 710291e38961d4ebb7afac8e04fd13b4572cfd89 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Fri, 28 Feb 2014 11:00:16 -0800 Subject: [PATCH] ngircd: Add an ngIRCd image This doesn't support SSL yet, but I'll look into that later. --- README.md | 1 + build.sh | 1 + ngircd/Dockerfile.template | 48 +++++++++++++++++++ ngircd/README.md | 10 ++++ .../setup-ngircd-config-from-environment.sh | 40 ++++++++++++++++ 5 files changed, 100 insertions(+) create mode 100644 ngircd/Dockerfile.template create mode 100644 ngircd/README.md create mode 100755 ngircd/setup-ngircd-config-from-environment.sh diff --git a/README.md b/README.md index a3b55df..5030c60 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ The dependency graph is: | |-- nginx-proxy (SSL/TLS proxying via SNI) | |-- kibana (adds Kibana) | `-- kibana-azure (adds Azure's Kibana) + |-- ngircd (adds ngIRCd) |-- postgresql (adds PostgreSQL) |-- redis (adds Redis) |-- salt-minion (adds a Salt Stack minion) diff --git a/build.sh b/build.sh index 3d9768c..b240fd1 100755 --- a/build.sh +++ b/build.sh @@ -55,6 +55,7 @@ REPOS="${REPOS:- memcached nginx nginx-proxy + ngircd package-cache postgresql redis diff --git a/ngircd/Dockerfile.template b/ngircd/Dockerfile.template new file mode 100644 index 0000000..ff97fa3 --- /dev/null +++ b/ngircd/Dockerfile.template @@ -0,0 +1,48 @@ +# Copyright (C) 2014 W. Trevor King +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +FROM ${NAMESPACE}/gentoo-syslog:${TAG} +MAINTAINER ${MAINTAINER} +#VOLUME ["${PORTAGE}:/usr/portage:ro", "${PORTAGE}/distfiles:/usr/portage/distfiles:rw"] +RUN echo 'net-irc/ngircd ~amd64' >> /etc/portage/package.accept_keywords +RUN emerge -v net-irc/ngircd +RUN eselect news read new +RUN rc-update add ngircd default + +RUN sed -i 's/;Listen = 127.0.0.1,192.168.0.1/Listen = ::,0.0.0.0/' /etc/ngircd/ngircd.conf +RUN sed -i 's/;PAM = yes/PAM = no/' /etc/ngircd/ngircd.conf +RUN sed -i 's/;SyslogFacility = local1/SyslogFacility = daemon/' /etc/ngircd/ngircd.conf +RUN sed -i 's|^\([[:space:]]*\)\(need net\)$|\1\2\n\1use logger|' /etc/init.d/ngircd +ADD setup-ngircd-config-from-environment.sh /usr/bin/setup-ngircd-config-from-environment +RUN sed -i 's/Name = irc.example.net/Name = ${HOSTNAME}/' /etc/ngircd/ngircd.conf +RUN sed -i 's/;AdminInfo1 = Description/AdminInfo1 = ${DESCRIPTION}/' /etc/ngircd/ngircd.conf +RUN sed -i 's/;AdminInfo2 = Location/AdminInfo2 = ${LOCATION}/' /etc/ngircd/ngircd.conf +RUN sed -i 's/;AdminEMail = admin@irc.server/AdminEMail = ${EMAIL}/' /etc/ngircd/ngircd.conf +RUN sed -i 's/Info = Server Info Text/Info = ${INFO}/' /etc/ngircd/ngircd.conf + +# Container networking happens automatically +RUN sed -i 's/need net$/use net/' /etc/init.d/* + +CMD setup-ngircd-config-from-environment && rc default && tail -F /var/log/messages +EXPOSE 6667 diff --git a/ngircd/README.md b/ngircd/README.md new file mode 100644 index 0000000..054159e --- /dev/null +++ b/ngircd/README.md @@ -0,0 +1,10 @@ +Run this [ngIRCd][] image with: + + $ docker run -d --name ngircd-0 --hostname irc.example.net \ + > -e DESCRIPTION="My IRC server" \ + > -e LOCATION="My attic" \ + > -e EMAIL="admin@example.net" \ + > -e INFO="testing, testing" \ + > -p 6667:6667 wking/ngircd + +[ngIRCd]: http://ngircd.barton.de/ diff --git a/ngircd/setup-ngircd-config-from-environment.sh b/ngircd/setup-ngircd-config-from-environment.sh new file mode 100755 index 0000000..6c23f3d --- /dev/null +++ b/ngircd/setup-ngircd-config-from-environment.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Copyright (C) 2014 W. Trevor King +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# usage: C1_PORT=tcp://192.168.0.1:12345/ C1_NAME=a.com \ +# C2_PORT=tcp://192.168.0.2:54321/ C2_NAME=b.net \ +# setup-ngircd-config-from-environment + +HOSTNAME=$(hostname -f) \ + envsubst ' + ${HOSTNAME} + ${DESCRIPTION} + ${LOCATION} + ${EMAIL} + ${INFO} + ' \ + < /etc/ngircd/ngircd.conf > /tmp/ngircd.conf && +mv /tmp/ngircd.conf /etc/ngircd/ngircd.conf -- 2.26.2