packages/net/sslh/files/sslh.init
jow 6f14dcb279 [PATCH] corrected test syntax in sslh init script
Signed-off-by: Matthias Buecher <mail@maddes.net>


git-svn-id: svn://svn.openwrt.org/openwrt/packages@17108 3c298f89-4303-0410-b956-a3cf2f4a3e73
2009-08-03 20:26:28 +00:00

82 lines
1.8 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2009 OpenWrt.org
NAME=sslh
PROG=/usr/sbin/sslh
START=95
PIDCOUNT=0
sslh_start()
{
local section="$1"
# check if section is enabled (default)
local enabled
config_get_bool enabled "${section}" enable 1
[ "${enabled}" -eq 0 ] && return 1
# increase pid file count to handle multiple instances correctly
PIDCOUNT="$(( ${PIDCOUNT} + 1 ))"
# prepare parameters (initialise with pid file)
local args="-P /var/run/${NAME}.${PIDCOUNT}.pid"
local val
# A) listen parameter
config_get val "${section}" listen
[ ! -z "${val}" ] && append args "-p ${val}"
# B) ssh parameter
config_get val "${section}" ssh
[ ! -z "${val}" ] && append args "-s ${val}"
# C) ssl parameter
config_get val "${section}" ssl
[ ! -z "${val}" ] && append args "-l ${val}"
# D) timeout (for ssh, then ssl is assumed)
config_get val "${section}" timeout
[ ! -z "${val}" ] && append args "-t ${val}"
# E) verbose parameter
local verbosed
config_get_bool verbosed "${section}" verbose 0
[ "${verbosed}" -ne 0 ] && append args "-v"
# execute program and return its exit code
[ "${verbosed}" -ne 0 ] && echo "${NAME}: section ${section} starting ${PROG} ${args}"
${PROG} ${args}
return $?
}
start()
{
config_load "${NAME}"
config_foreach sslh_start sslh
}
stop()
{
local pidfile
local rc=0
# killing all known processes
for pidfile in `ls /var/run/${NAME}.*.pid`
do
start-stop-daemon -K -s KILL -p "${pidfile}" -n "${NAME}"
[ $? -ne 0 ] && rc=1
rm -f "${pidfile}"
done
# kill orphaned processes
if [ ${rc} -ne 0 ]
then
echo "${NAME}: inconsistency in pid files killing all orphaned processes"
for pid in `pidof sslh`
do
# check if correct program
ps | grep "${pid}" | grep "${PROG}" >/dev/null
[ $? -ne 0 ] && continue
# kill process
echo "Killing ${pid}..."
kill -s KILL ${pid}
done
fi
}