You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/www-apps/nextcloud-notify_push/files/nextcloud-notify_push-r1.init

129 lines
3.4 KiB

#!/sbin/openrc-run
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# shellcheck disable=SC2034
: "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE:=}"
: "${NOTIFY_PUSH_PIDFILE:=/run/${SVCNAME}.pid}"
: "${NOTIFY_PUSH_SSDARGS:=--wait 1000}"
: "${NOTIFY_PUSH_TERMTIMEOUT:=TERM/30/KILL/5}"
: "${NOTIFY_PUSH_USER:=nobody}"
: "${NOTIFY_PUSH_GROUP:=nobody}"
command="/usr/bin/nextcloud-notify_push"
command_args="${NOTIFY_PUSH_OPTS}"
command_background="yes"
command_user="${NOTIFY_PUSH_USER}:${NOTIFY_PUSH_GROUP}"
pidfile="${NOTIFY_PUSH_PIDFILE}"
retry="${NOTIFY_PUSH_TERMTIMEOUT}"
start_stop_daemon_args="${NOTIFY_PUSH_SSDARGS}"
description="Push daemon for Nextcloud clients"
depend() {
use dns
}
start_pre() {
local has_errors=
if [ -n "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] ; then
if ! su -s /bin/sh -c "test -r \"${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}\"" ${NOTIFY_PUSH_USER} 1>/dev/null 2>&1 ; then
eerror "Config file \"${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}\" does not exist or is not accessible for user \"${NOTIFY_PUSH_USER}\"!"
return 1
fi
command_args="${command_args} \"${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}\""
fi
# Required options when no config file was specified
if [ -n "${DATABASE_URL}" ] ; then
export DATABASE_URL
elif [ -z "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] && [ -z "${DATABASE_URL}" ] ; then
has_errors=yes
eerror "DATABASE_URL not set!"
fi
if [ -n "${DATABASE_PREFIX}" ] ; then
export DATABASE_PREFIX
elif [ -z "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] && [ -z "${DATABASE_PREFIX}" ] ; then
has_errors=yes
eerror "DATABASE_PREFIX not set!"
fi
if [ -n "${REDIS_URL}" ] ; then
export REDIS_URL
elif [ -z "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] && [ -z "${REDIS_URL}" ] ; then
has_errors=yes
eerror "REDIS_URL not set!"
fi
if [ -z "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] && [ -z "${SOCKET_PATH}" ] && [ -z "${PORT}" ] ; then
has_errors=yes
eerror "Neither SOCKET_PATH nor PORT is set!"
elif [ -n "${SOCKET_PATH}" ] ; then
checkpath -q -d -o ${NOTIFY_PUSH_USER}:${NOTIFY_PUSH_GROUP} -m 0770 "$(dirname "${SOCKET_PATH}")"
service_set_value SOCKET_PATH "${SOCKET_PATH}"
export SOCKET_PATH
elif [ -n "${PORT}" ] ; then
export PORT
fi
# Optional options
if [ -n "${ALLOW_SELF_SIGNED}" ] ; then
export ALLOW_SELF_SIGNED
fi
if [ -n "${BIND}" ] ; then
export BIND
fi
if [ -n "${LOG}" ] ; then
export LOG
fi
# shellcheck disable=SC2154
if [ -n "${LOGFILE}" ] ; then
checkpath -q -f -o ${NOTIFY_PUSH_USER}:adm -m 0644 "${LOGFILE}"
output_log="${LOGFILE}"
error_log="${LOGFILE}"
fi
if [ -n "${METRICS_PORT}" ] ; then
export METRICS_PORT
fi
if [ -n "${METRICS_SOCKET_PATH}" ] ; then
checkpath -q -d -o ${NOTIFY_PUSH_USER}:${NOTIFY_PUSH_GROUP} -m 0770 "$(dirname "${METRICS_SOCKET_PATH}")"
service_set_value METRICS_SOCKET_PATH "${METRICS_SOCKET_PATH}"
export METRICS_SOCKET_PATH
fi
if [ -n "${SOCKET_PERMISSIONS}" ] ; then
export SOCKET_PERMISSIONS
fi
if [ -n "${has_errors}" ] ; then
eerror ""
eerror "Either set the variable above or specify NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE"
eerror "in /etc/conf.d/${SVCNAME}!"
return 1
fi
}
stop_post() {
local old_socket=
for old_socket in SOCKET_PATH METRICS_SOCKET_PATH ; do
old_socket=$(service_get_value ${old_socket})
[ -n "${old_socket}" ] || continue
[ -e "${old_socket}" ] || continue
ebegin "Cleaning up stale socket \"${old_socket}\""
rm "${old_socket}"
eend $?
done
return 0
}