aboutsummaryrefslogtreecommitdiffstats
path: root/bin/fripost-panel
diff options
context:
space:
mode:
Diffstat (limited to 'bin/fripost-panel')
-rwxr-xr-xbin/fripost-panel54
1 files changed, 54 insertions, 0 deletions
diff --git a/bin/fripost-panel b/bin/fripost-panel
new file mode 100755
index 0000000..0046a4d
--- /dev/null
+++ b/bin/fripost-panel
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Start/stop/restart the web panel
+#
+# Also, keep renewing/recreating kerberos tickets for the web
+# application.
+
+PANEL_DIR=/opt/fripost-panel
+SOCKET_DIR=/var/run/fcgi
+USER=www-data
+PRINCIPAL=AdminWebPanel/fripost.org@FRIPOST.ORG
+KEYTAB=/etc/fripost-panel/keytab
+CGI=./cgi-bin/index.fcgi
+
+if [ $(id -u) -ne 0 ]; then
+ echo "Error: You are not root"
+ exit 1
+fi
+
+KSTART="k5start -b -f ${KEYTAB} -S ldap -I $(hostname --fqdn) -u ${PRINCIPAL} -q -K 60"
+
+start () {
+ test -x "${PANEL_DIR}/cgi-bin/index.fcgi" || exit 0
+
+ pgrep -U "${USER}" -G "${USER}" -fx "/usr/bin/perl ${CGI}" >/dev/null && return 0
+ pgrep -U "${USER}" -G "${USER}" -fx "${KSTART}" >/dev/null || sudo -u "${USER}" ${KSTART} || exit 1
+
+ export FCGI_SOCKET_PATH="${SOCKET_DIR}/fripost-panel.socket"
+ export FCGI_LISTEN_QUEUE=128
+ start-stop-daemon --start --background \
+ --chuid "${USER}:${USER}" \
+ -d "${PANEL_DIR}" \
+ -m -p "${SOCKET_DIR}/fripost-panel.pid" \
+ --exec ${CGI}
+}
+
+stop () {
+ pkill -U "${USER}" -G "${USER}" -fx "${KSTART}" || exit 1
+ start-stop-daemon --stop -u "${USER}" \
+ --chuid "${USER}:${USER}" \
+ -p "${SOCKET_DIR}/fripost-panel.pid" \
+ --retry=TERM/5/KILL/1
+}
+
+cd "${PANEL_DIR}" || exit 1
+case "${1}" in
+ start) start ;;
+ stop) stop ;;
+ restart) stop && start ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}" >&2
+ exit 1
+ ;;
+esac