summaryrefslogtreecommitdiff
path: root/www-apps/nextcloud-notify_push/files/nextcloud-notify_push-r1.init
blob: fa111e3ca4a919bff9b9fcd61d308d493e27bd15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/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
}