#!/bin/sh /etc/rc.common START=71 BIN=serialclient DAEMON=/usr/bin/$BIN DESC=$BIN RUN_D=/var/run/rhctl option_cb() { local varname="$1" local value="$2" if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then CONFIG_OPTIONS="$CONFIG_OPTIONS $varname " fi } foreach_config_forced() { foreach_config $1 "$2" "forced" } foreach_config() { local cfg="$1" local name local option local value local args="" local forced=0 config_get name "$cfg" "name" if [ -n "$2" ] && [ "x$2" != "x$name" ]; then return fi if [ -n "$3" ] && [ "x$3" == "xforced" ]; then forced=1 fi for option in $CONFIG_OPTIONS do config_get value "$cfg" "$option" if [ "x$option" == "xdisabled" ]; then if [ $forced -eq 0 ] && [ -n "$value" ] && [ $value -eq 1 ]; then echo -n " $name(disabled)" return fi continue fi if [ "x$option" == "xname" ]; then continue fi option=`echo $option | tr '_' '-'` if [ -n "$value" ]; then args="$args --$option $value" fi done echo -n " $name" local status="OK" $DAEMON --write-pid "$RUN_D/$BIN.$name.pid" $args || status="failed" echo -n "($status)" } stop_client() { local name=$1 local pidfile=$RUN_D/$BIN.$name.pid echo -n " $name" local status="OK" if [ ! -f "$pidfile" ]; then status="tunnel not active" else kill `cat $pidfile` > /dev/null 2>&1 || status="failed" rm -f $pidfile fi echo -n "($status)" } start() { echo -n "Starting $DESC:" config_load "rhctl" if [ $# -gt 0 ]; then while [ $# -gt 0 ]; do config_foreach foreach_config_forced "serialclient" "$1" shift done else config_foreach foreach_config "serialclient" fi echo "." } stop() { echo -n "Stopping $DESC:" local name local pidfile if [ $# -gt 0 ]; then while [ $# -gt 0 ]; do stop_client $1 shift done else for pidfile in `ls $RUN_D/$BIN.*.pid 2> /dev/null`; do name=${pidfile%%.pid} name=${name##$RUN_D/$BIN.} stop_client $name done fi echo "." }