#!/bin/sh /etc/rc.common # Copyright (C) 2017 OpenWrt.org START=92 USE_PROCD=1 #PROCD_DEBUG=1 DAEMON=baresip DEFAULT=/etc/default/$DAEMON LOGGER="/usr/bin/logger -p user.err -s -t $DAEMON" OPTIONS= PROG=/usr/bin/$DAEMON TIMEOUT=30 [ -f $DEFAULT ] && . $DEFAULT start_service() { local dir= if [ "$ENABLE_BARESIP" != yes ]; then $LOGGER User configuration incomplete - not starting $DAEMON $LOGGER Check ENABLE_BARESIP in $DEFAULT exit 1 fi procd_open_instance procd_set_param command $PROG procd_append_param command \ -f /etc/$DAEMON \ $OPTIONS procd_set_param pidfile /var/run/${DAEMON}.pid # forward stderr to logd procd_set_param stderr 1 # forward stdout to logd #procd_set_param stdout 1 procd_set_param user $DAEMON procd_close_instance } stop_service() { local retval= local mypid= local timeout=$TIMEOUT pgrep $DAEMON &> /dev/null [ $? -ne 0 ] && exit 0 [ -f /var/run/${DAEMON}.pid ] retval=$? # init script could find itself in a scenario where baresip was started # very recently, so make it wait a while for a pid file to appear while [ $retval -ne 0 -a $timeout -gt 0 ]; do sleep 1 [ -f /var/run/${DAEMON}.pid ] retval=$? timeout=$(($timeout-1)) done [ $retval -eq 0 ] || { $LOGGER PID file does not exist exit 1 } mypid=$(cat /var/run/${DAEMON}.pid) [ "$mypid" -gt 1 ] 2> /dev/null || { $LOGGER PID file contains garbage exit 1 } timeout=$TIMEOUT kill $mypid 2>/dev/null pgrep $DAEMON | grep -w $mypid &>/dev/null retval=$? while [ $retval -eq 0 -a $timeout -gt 0 ]; do sleep 10 pgrep $DAEMON | grep -w $mypid &>/dev/null retval=$? [ $retval -eq 0 ] && kill $mypid 2>/dev/null timeout=$(($timeout-10)) done [ $retval -ne 1 ] && { $LOGGER Failed to stop $DAEMON exit 1 } }