summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-13 20:38:34 -0400
committerJune McEnroe <june@causal.agency>2020-08-14 16:00:34 -0400
commit2050d668af9e9eb2f20aa42c2f27eb0e3c7d182d (patch)
treea3876e8d6d2fb1311fdb594e9fd3153dbfae0cda
parentAdd prospective manual page for spawn (diff)
downloadcatsit-2050d668af9e9eb2f20aa42c2f27eb0e3c7d182d.tar.gz
catsit-2050d668af9e9eb2f20aa42c2f27eb0e3c7d182d.zip
Add tentative implementation of spawn(8)
-rw-r--r--spawn.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/spawn.sh b/spawn.sh
new file mode 100644
index 0000000..052a7fd
--- /dev/null
+++ b/spawn.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -eu
+
+die() {
+	echo "${0}:" "$@" >&2
+	exit 1
+}
+
+: ${SPAWND_PIPE:=/var/run/spawnd.pipe}
+
+while getopts 'c:' opt; do
+	case "${opt}" in
+		(c) SPAWND_PIPE=$OPTARG;;
+		(?) exit 1;;
+	esac
+done
+shift $((OPTIND - 1))
+
+if ! [ -p "${SPAWND_PIPE}" ]; then
+	die "${SPAWND_PIPE} is not a named pipe"
+fi
+
+[ $# -lt 1 ] && die 'action required'
+[ $# -lt 2 ] && die 'service name required'
+
+action=$(echo "${1}" | tr 'A-Z' 'a-z')
+for valid in start stop restart status $(kill -l | tr 'A-Z' 'a-z'); do
+	[ "${action}" = "${valid}" ] && break
+done
+if [ "${action}" != "${valid}" ]; then
+	die "${action} is not a valid action or signal"
+fi
+
+echo "$@" > "${SPAWND_PIPE}"
class='logheader'>2019-10-27Only increment consumer after successful sendJune McEnroe 2019-10-27Set SO_REUSEADDR on bindsJune McEnroe 2019-10-27Output ring info on SIGINFOJune McEnroe 2019-10-27Improve client/server error messagesJune McEnroe 2019-10-27Add reload cmd to rc scriptJune McEnroe Using daemon(8) makes this way more awkward than it should be. 2019-10-27Reload certificate on SIGUSR1June McEnroe 2019-10-27Drop clients on zero-length readsJune McEnroe 2019-10-27Explicitly tls_handshake new clientsJune McEnroe This prevents a client connecting, sending nothing, and getting blocked in tls_read immediately. 2019-10-26Document rationaleJune McEnroe 2019-10-26Handle nick collisionJune McEnroe 2019-10-26Wait for AUTHENTICATE + from serverJune McEnroe 2019-10-26Respond to PING with same parameterJune McEnroe 2019-10-26Add undocumented flag to disable verificationJune McEnroe 2019-10-26Do not require RPL_ISUPPORT for stateReadyJune McEnroe 2019-10-26Implement graceful shutdownJune McEnroe 2019-10-26Require PASS before USERJune McEnroe Prevent creating a ring consumer without authentication. 2019-10-26Track channel topicsJune McEnroe 2019-10-26Set AWAY when no clients are connectedJune McEnroe 2019-10-26Add flags to request TOPIC and NAMES on client connectJune McEnroe 2019-10-26OopsJune McEnroe 2019-10-26Disconnect client on unknown commandJune McEnroe During registration, no other commands should be sent. Afterwards, only intercepted commands will get parsed. 2019-10-26Allow reading sensitive information from filesJune McEnroe 2019-10-26Add rc scriptJune McEnroe 2019-10-25Add install and uninstall targetsJune McEnroe 2019-10-25Expand documentationJune McEnroe 2019-10-25Add AGPLv3 notice on client registrationJune McEnroe OwO 2019-10-25Rename project pounceJune McEnroe