ngircd: Add an ngIRCd image
authorW. Trevor King <wking@tremily.us>
Fri, 28 Feb 2014 19:00:16 +0000 (11:00 -0800)
committerW. Trevor King <wking@tremily.us>
Fri, 28 Feb 2014 19:00:16 +0000 (11:00 -0800)
This doesn't support SSL yet, but I'll look into that later.

README.md
build.sh
ngircd/Dockerfile.template [new file with mode: 0644]
ngircd/README.md [new file with mode: 0644]
ngircd/setup-ngircd-config-from-environment.sh [new file with mode: 0755]

index a3b55df855b714e67354c399f7cc87cae153431f..5030c60da4358d9584b72fb6cf0cf956f71895cc 100644 (file)
--- 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)
index 3d9768c6285ffd54664ade55f0330e851760ae97..b240fd14b6e949e7e1b99ccbbac0f4d85d5ea7e7 100755 (executable)
--- 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 (file)
index 0000000..ff97fa3
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (C) 2014 W. Trevor King <wking@tremily.us>
+#
+# 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 (file)
index 0000000..054159e
--- /dev/null
@@ -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 (executable)
index 0000000..6c23f3d
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# Copyright (C) 2014 W. Trevor King <wking@tremily.us>
+#
+# 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