changeset 1060:89ba3e75ca96

irc/irccd: initial import, closes #1709
author David Demelier <markand@malikania.fr>
date Mon, 02 Sep 2019 21:10:00 +0200
parents 52644ad26941
children 52b36e54f1b7
files Docs/uids.md irc/irccd/irccd irc/irccd/irccd-post.sh irc/irccd/irccd.sh irc/irccd/irccd.sha1
diffstat 5 files changed, 245 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Docs/uids.md	Mon Sep 02 21:10:00 2019 +0200
+++ b/Docs/uids.md	Mon Sep 02 21:10:00 2019 +0200
@@ -19,3 +19,4 @@
 | mpd (106)           | mpd (106)           | audio/mpd        |
 | avahi (107)         | avahi (107)         | dns/avahi        |
 | avahi-autoipd (108) | avahi-autoipd (108) | dns/avahi        |
+| irccd (109)         | irccd (109)         | irc/irccd        |
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/irc/irccd/irccd	Mon Sep 02 21:10:00 2019 +0200
@@ -0,0 +1,87 @@
+#!/bin/busybox sh
+#
+# /etc/rc.d/irccd -- run control script for irccd
+#
+# Copyright (c) 2019 David Demelier <markand@malikania.fr>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+if [ -f /etc/rc.conf ]; then
+	. /etc/rc.conf
+fi
+
+# TODO: change IRCCD_ARGS once this issue is fixed:
+# https://redmine.malikania.fr/issues/2263
+: ${IRCCD_CMD:=/bin/irccd}
+: ${IRCCD_ARGS:=-c /etc/irccd.conf}
+: ${IRCCD_PID:=/var/run/irccd/irccd.pid}
+: ${IRCCD_USER:=irccd}
+: ${IRCCD_GROUP:=irccd}
+
+irccd_start()
+{
+	if [ -s $IRCCD_PID ]; then
+		echo "irccd is already running with pid: $(cat $IRCCD_PID)"
+	else
+		echo "Starting irccd: $IRCCD_CMD $IRCCD_ARGS"
+		start-stop-daemon \
+			-Sbvp $IRCCD_PID \
+			-c ${IRCCD_USER}:${IRCCD_GROUP} \
+			-m $IRCCD_PID \
+			-x $IRCCD_CMD -- $IRCCD_ARGS
+	fi
+}
+
+irccd_status()
+{
+	if [ -s $IRCCD_PID ]; then
+		echo "irccd is running with pid: $(cat $IRCCD_PID)"
+	else
+		echo "irccd is not running"
+	fi
+}
+
+irccd_stop()
+{
+	if [ -s $IRCCD_PID ]; then
+		echo "Stopping irccd."
+		start-stop-daemon -Kqp $IRCCD_PID
+		rm -f $IRCCD_PID
+	fi
+}
+
+irccd_restart()
+{
+	irccd_stop
+	sleep 3
+	irccd_start
+}
+
+case $1 in
+start)
+	irccd_start
+	;;
+status)
+	irccd_status
+	;;
+stop)
+	irccd_stop
+	;;
+restart)
+	irccd_restart
+	;;
+*)
+	echo "usage: $(basename $0) restart|start|status|stop"
+	;;
+esac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/irc/irccd/irccd-post.sh	Mon Sep 02 21:10:00 2019 +0200
@@ -0,0 +1,20 @@
+#!/bin/busybox sh
+#
+# Copyright (c) 2019 David Demelier <markand@malikania.fr>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+if [ "$1" = "post-install" ]; then
+	install -dm0755 -o irccd -girccd /var/run/irccd
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/irc/irccd/irccd.sh	Mon Sep 02 21:10:00 2019 +0200
@@ -0,0 +1,136 @@
+#!/bin/busybox sh
+#
+# Copyright (c) 2019 David Demelier <markand@malikania.fr>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+PKGNAME=irccd
+PKGVERSION=3.0.1
+PKGREVISION=1
+PKGLICENSE="ISC"
+PKGSUMMARY="an IRC bot written in C++17"
+PKGDOWNLOAD="http://releases.malikania.fr/$PKGNAME/$PKGVERSION/$PKGNAME-$PKGVERSION.tar.xz"
+PKGDEPENDS="cmake:build doxygen:build boost"
+PKGUIDS="irccd:109"
+PKGGIDS="irccd:109"
+PKGOPTIONS="ASK
+            AUTH
+            HANGMAN
+            HISTORY
+            JAVASCRIPT
+            JOKE
+            LIBEDIT
+            LINKS
+            LOGGER
+            PLUGIN
+            ROULETTE
+            SSL
+            TICTACTOE"
+PKGPROTECT="etc/irccd.conf
+            etc/irccdctl.conf
+            etc/rc.d/irccd"
+
+: ${CC:=clang}
+: ${CFLAGS:=-O2}
+: ${CXX:=clang++}
+: ${CXXFLAGS:=-O2}
+: ${ASK:=yes}
+: ${AUTH:=yes}
+: ${HANGMAN:=yes}
+: ${HISTORY:=yes}
+: ${JAVASCRIPT:=yes}
+: ${JOKE:=yes}
+: ${LIBEDIT:=yes}
+: ${LINKS:=yes}
+: ${LOGGER:=yes}
+: ${PLUGIN:=yes}
+: ${ROULETTE:=yes}
+: ${SSL:=yes}
+: ${TICTACTOE:=yes}
+
+for var in AUTH HANGMAN HISTORY JOKE LINKS LOGGER PLUGIN ROULETTE TICTACTOE; do
+	option=$(echo $var | tr '[A-Z]' '[a-z]')
+
+	eval enabled=\$$var
+
+	if [ "$enabled" = "yes" ]; then
+		# The plugin links require uriparser.
+		if [ "$var" = "LINKS" ]; then
+			PKGDEPENDS="uriparser $PKGDEPENDS"
+		fi
+
+		eval with_$option="-DIRCCD_WITH_PLUGIN_$var=On"
+	else
+		eval with_$option="-DIRCCD_WITH_PLUGIN_$var=Off"
+	fi
+done
+
+if [ "$JAVASCRIPT" = "yes" ]; then
+	with_javascript="-DIRCCD_WITH_JS=On"
+else
+	with_javascript="-DIRCCD_WITH_JS=Off"
+fi
+
+if [ "$LIBEDIT" = "yes" ]; then
+	PKGDEPENDS="libedit $PKGDEPENDS"
+	with_libedit="-DIRCCD_WITH_LIBEDIT=On"
+else
+	with_libedit="-DIRCCD_WITH_LIBEDIT=Off"
+fi
+
+if [ "$SSL" = "yes" ]; then
+	PKGDEPENDS="libressl $PKGDEPENDS"
+	with_ssl="-DIRCCD_WITH_SSL=On"
+else
+	with_ssl="-DIRCCD_WITH_SSL=Off"
+fi
+
+build()
+{
+	rm -rf $PKGNAME-$PKGVERSION
+	tar xvf $PKGNAME-$PKGVERSION.tar.xz
+	cd $PKGNAME-$PKGVERSION
+
+	mkdir build && cd build
+	cmake .. \
+		-DBUILD_SHARED_LIBS=On \
+		-DCMAKE_BUILD_TYPE=Release \
+		-DCMAKE_CXX_COMPILER="$CXX" \
+		-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+		-DCMAKE_C_COMPILER="$CC" \
+		-DCMAKE_C_FLAGS="$CFLAGS" \
+		-DCMAKE_INSTALL_PREFIX= \
+		-DIRCCD_WITH_SYSTEMD=Off \
+		$with_ask \
+		$with_hangman \
+		$with_history \
+		$with_javascript \
+		$with_joke \
+		$with_libedit \
+		$with_links \
+		$with_logger \
+		$with_plugin \
+		$with_roulette \
+		$with_ssl \
+		$with_tictactoe
+	make VERBOSE=1
+	make install DESTDIR=$DESTDIR
+	cd ..
+	install -Dm0644 ../irccd $DESTDIR/etc/rc.d/irccd
+	mv $DESTDIR/etc/irccd.conf.sample $DESTDIR/etc/irccd.conf
+	mv $DESTDIR/etc/irccdctl.conf.sample $DESTDIR/etc/irccdctl.conf
+
+	cd ..
+	rm -rf $PKGNAME-$PKGVERSION
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/irc/irccd/irccd.sha1	Mon Sep 02 21:10:00 2019 +0200
@@ -0,0 +1,1 @@
+4656ab300f577d517b49cfe0aca631f35d95a29f  irccd-3.0.1.tar.xz