aboutsummaryrefslogtreecommitdiff
path: root/net/znc/files
diff options
context:
space:
mode:
authorKevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>2016-09-08 12:17:21 +0100
committerKevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>2016-11-17 10:28:43 +0000
commita6715c17ffb1c50e1325ebbfac45abe7c512a0c5 (patch)
tree86c6fb8dc4df5fafa9d107fe0c263c0ea6a0a7c7 /net/znc/files
parentb791b2aa9c0bf21f9f4b99a5eb1279fbe7019aa8 (diff)
znc: run as user znc & use procd
Create & run znc as a specific user rather than nobody. Converted to use procd, removing dependencies on znc's 'droproot' module & 'su' Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Diffstat (limited to 'net/znc/files')
-rw-r--r--net/znc/files/znc.init55
1 files changed, 19 insertions, 36 deletions
diff --git a/net/znc/files/znc.init b/net/znc/files/znc.init
index 91f3ecaa7..0277afff6 100644
--- a/net/znc/files/znc.init
+++ b/net/znc/files/znc.init
@@ -3,6 +3,8 @@
START=60
+USE_PROCD=1
+
ZNC_CONFIG_PATH=/tmp/etc/znc
PID_FILE=${ZNC_CONFIG_PATH}/znc.pid
ZNC_CONFIG=${ZNC_CONFIG_PATH}/configs/znc.conf
@@ -12,7 +14,6 @@ DISABLED=
RUNAS_USER=
RUNAS_GROUP=
-RUNAS_SHELL=
add_param() {
echo "$1 = $2" >> $ZNC_CONFIG
@@ -59,9 +60,8 @@ znc_global() {
config_get znc_config_path "$znc" znc_config_path
- config_get RUNAS_USER "$znc" runas_user
- config_get RUNAS_GROUP "$znc" runas_group
- config_get RUNAS_SHELL "$znc" runas_shell
+ config_get RUNAS_USER "$znc" runas_user znc
+ config_get RUNAS_GROUP "$znc" runas_group znc
if [ "${znc_config_path}" ]
then
@@ -90,8 +90,6 @@ znc_global() {
config_list_foreach "$znc" listener "add_param Listener"
config_list_foreach "$znc" module "add_param LoadModule"
-
- add_param LoadModule "droproot ${RUNAS_USER:-nobody} ${RUNAS_GROUP:-nogroup}"
fi
}
@@ -156,45 +154,30 @@ add_user() {
echo "</User>" >> $ZNC_CONFIG
}
-
-start() {
+start_service() {
config_load znc
config_foreach znc_global znc
- if [ "$DISABLED" -eq 1 ]; then
- return 0
- fi
+ [ "$DISABLED" -eq 0 ] || return 0
if [ "$EXTERNAL_CONFIG" -eq 0 ]
then
config_foreach add_listener listener
config_foreach add_user user
- chown -hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} ${ZNC_CONFIG_PATH}
- fi
-
- if [ "$EXTERNAL_CONFIG" -eq 1 -a "$RUNAS_USER" ]
- then
- local SU=$(which su)
- if [ "$SU" ]
- then
- chown -hR ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} ${ZNC_CONFIG_PATH}
- $SU ${RUNAS_SHELL:+s $RUNAS_SHELL} -c "/usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &" $RUNAS_USER
- else
- logger -s -t ZNC -p daemon.err "Could not run ZNC as user $RUNAS_USER: su not found."
- exit 1
- fi
- else
- /usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &
fi
-}
-stop() {
- if [ -f "$PID_FILE" ]
- then
- kill $(cat "$PID_FILE")
- else
- killall znc
- fi
+ chown -hR ${RUNAS_USER}:${RUNAS_GROUP} ${ZNC_CONFIG_PATH} || {
+ logger -s -t ZNC -p daemon.err "Invalid UID/GID. Aborting startup"
+ exit 1
+ }
+
+ procd_open_instance
+ procd_set_param file /etc/config/znc
+ [ "$EXTERNAL_CONFIG" -eq 1 ] && procd_set_param file "${ZNC_CONFIG}/configs/znc.conf"
+ procd_set_param command /usr/bin/znc
+ procd_append_param command -f -d$ZNC_CONFIG_PATH
+ procd_set_param user ${RUNAS_USER}
+ procd_set_param respawn
+ procd_close_instance
}
-