diff options
author | Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> | 2016-09-08 12:17:21 +0100 |
---|---|---|
committer | Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk> | 2016-11-17 10:28:43 +0000 |
commit | a6715c17ffb1c50e1325ebbfac45abe7c512a0c5 (patch) | |
tree | 86c6fb8dc4df5fafa9d107fe0c263c0ea6a0a7c7 /net/znc/files | |
parent | b791b2aa9c0bf21f9f4b99a5eb1279fbe7019aa8 (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.init | 55 |
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 } - |