summaryrefslogtreecommitdiff
path: root/www-apps/nextcloud-notify_push/files/nextcloud-notify_push-r2.init
blob: 6ca27efe5f5c82ab18bb40d6683b18ec01aecf7b (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
129
130
131
132
133
134
135
#!/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
		command_args="${command_args} --database-url \"$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
		command_args="${command_args} --database-prefix \"$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
		command_args="${command_args} --redis-url \"$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}"
		command_args="${command_args} --socket-path \"${SOCKET_PATH}\""
	elif [ -n "${PORT}" ] ; then
		command_args="${command_args} -p ${PORT}"
	fi

	if [ -n "${NEXTCLOUD_URL}" ] ; then
		command_args="${command_args} --nextcloud-url \"$NEXTCLOUD_URL\""
	elif [ -z "${NOTIFY_PUSH_NEXTCLOUD_CONFIGFILE}" ] && [ -z "${NEXTCLOUD_URL}" ] ; then
		has_errors=yes
		eerror "NEXTCLOUD_URL not set!"
	fi

	# Optional options
	if [ -n "${ALLOW_SELF_SIGNED}" ] ; then
		command_args="${command_args} --allow-self-signed"
	fi

	if [ -n "${BIND}" ] ; then
		command_args="${command_args} --bind \"${BIND}\""
	fi

	if [ -n "${LOG}" ] ; then
		command_args="${command_args} --log-level \"${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
		command_args="${command_args} --metrics-port \"${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}"
		command_args="${command_args} --metrics-socket-path \"${METRICS_SOCKET_PATH}\""
	fi

	if [ -n "${SOCKET_PERMISSIONS}" ] ; then
		command_args="${command_args} --socket-permissions \"${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
}