diff options
Diffstat (limited to 'app-admin/webmin/files/init.d.webmin')
-rw-r--r-- | app-admin/webmin/files/init.d.webmin | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/app-admin/webmin/files/init.d.webmin b/app-admin/webmin/files/init.d.webmin new file mode 100644 index 0000000..a1a431d --- /dev/null +++ b/app-admin/webmin/files/init.d.webmin @@ -0,0 +1,86 @@ +#!/sbin/openrc-run +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + + +# We do not give a choice to user for configuring these 'cause it will mess up +# Webmin's configuration +WEBMIN_EXE="%exe%" +WEBMIN_PID="%pid%" +WEBMIN_CONF="%conf%" +WEBMIN_CONFIG="%config%" + +extra_started_commands="reload" + +depend() { + use net logger +} + +checkconfig() { + # Check if Webmin setup has been done + if [ ! -f ${WEBMIN_CONFIG} ]; then + eerror "Error in Webmin's configuration. The ${WEBMIN_CONFIG} is not present." + eerror "Please run 'emerge --config app-admin/webmin' to fix this." + return 1 + fi + + # Check if ssl cert is present + local key ssl + key=`grep "^keyfile=" ${WEBMIN_CONF} | sed -e 's/keyfile=//g'` + ssl=`grep "^ssl=" ${WEBMIN_CONF} | sed -e 's/ssl=//g'` + + if [ ! -f "${key}" ] ; then + if [ "${ssl}" = "0" ]; then + ewarn "Your SSL certificate is not present." + ewarn "Please either fix the path in the 'keyfile=' option of your ${WEBMIN_CONF}" + ewarn "OR run 'emerge --config app-admin/webmin'" + else + eerror "Error in Webmin's configuration. No SSL certificate is present." + eerror "Please either fix the path in the 'keyfile=' option of your ${WEBMIN_CONF}" + eerror "OR change the 'ssl=' option of your ${WEBMIN_CONF} to 'ssl=0'" + eerror "OR run 'emerge --config app-admin/webmin'" + return 1 + fi + fi + + return 0 +} + +reload() { + if [ ! -f "${WEBMIN_PID}" ]; then + eerror "Webmin is not running" + return 1 + fi + + checkconfig || return 1 + + ebegin "Reloading Webmin's configuration files" + start-stop-daemon --signal USR1 --pidfile "$WEBMIN_PID" + eend $? +} + +start() { + checkconfig || return 1 + ebegin "Starting Webmin" + + start-stop-daemon --start --background --interpreted \ + --env LANG= \ + --env PERLLIB="%perllib%" \ + --exec "$WEBMIN_EXE" \ + --pidfile "$WEBMIN_PID" \ + -- "$WEBMIN_CONF" + eend $? + # Leave time to spawn, so no stop is received while spawning + sleep 3 +} + +stop() { + ebegin "Stopping Webmin" + start-stop-daemon --stop --interpreted --quiet \ + --exec "$WEBMIN_EXE" \ + --pidfile "$WEBMIN_PID" + eend $? + # Leave time to stop because of the scripts that use this + sleep 3 +} |