123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2014 OpenWrt.org
- # smsd initscript openwrt mod
- START=99
- STOP=99
- EXTRA_COMMANDS="status"
- EXTRA_HELP=" status View pid and service status "
- # Set USER and GROUP, if necessary:
- USER=""
- GROUP=""
- # If an unpriviledged user is selected, make sure that next two
- # files are writable by that user:
- PIDFILE="/var/run/smsd.pid"
- INFOFILE="/var/run/smsd.working"
- # Logfile can also be defined in here:
- LOGFILE="/var/log/smsd.log"
- DAEMON=/usr/local/bin/smsd
- # A program which turns power off for couple of seconds:
- RESETMODEMS=/usr/local/bin/smsd_resetmodems
- NAME=smsd
- PSOPT=""
- # Set/edit this before starting service !!!!!
- WRT_SPOOL=/var/spool
- # Maximum time to stop smsd, after that it gets killed hardly:
- MAXWAIT=45
- boot() {
- start
- }
- start() {
- test -x $DAEMON || exit 0
- echo "Creating minimum spool directories"
- mkdir -p $WRT_SPOOL
- mkdir -p $WRT_SPOOL/sms
- mkdir -p $WRT_SPOOL/sms/incoming
- mkdir -p $WRT_SPOOL/sms/outgoing
- mkdir -p $WRT_SPOOL/sms/checked
- mkdir -p $WRT_SPOOL/sms/failed
- mkdir -p $WRT_SPOOL/sms/sent
- echo -n "Starting SMS Daemon: "
- MSG="."
- ARGS="-n MAINPROCESS -p$PIDFILE -i$INFOFILE"
- [ "x$USER" != x ] && ARGS="$ARGS -u$USER"
- [ "x$GROUP" != x ] && ARGS="$ARGS -g$GROUP"
- [ "x$LOGFILE" != x ] && ARGS="$ARGS -l$LOGFILE"
- PID=`cat $PIDFILE 2>/dev/null`
- if [ "x$PID" != x ]; then
- if kill -0 $PID 2>/dev/null; then
- MSG=" already running ($PID)."
- else
- PID=""
- fi
- fi
- if [ "x$PID" = x ]; then
- if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
- MSG=" already running."
- else
- $DAEMON $ARGS
- sleep 1
- PIDS=`ps $PSOPT | grep $NAME | grep -v grep`
- [ "x$PIDS" = x ] && MSG=" failed."
- fi
- fi
- echo "$NAME$MSG"
- }
- stop() {
- if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
- PID=`cat $PIDFILE 2>/dev/null`
- if [ "x$PID" != x ]; then
- P=`kill -0 $PID 2>/dev/null`
- [ "x$P" != x ] && PID=""
- fi
- if [ "x$PID" != x ]; then
- kill $PID
- else
- kill `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
- fi
- sleep 1
- if ps $PSOPT | grep $NAME | grep -v grep >/dev/null; then
- echo "Allowing $NAME to terminate gracefully within $MAXWAIT seconds"
- infofound=0
- dots=0
- seconds=0
- while ps $PSOPT | grep $NAME | grep -v grep >/dev/null; do
- if [ $infofound -lt 1 ]; then
- if [ -f $INFOFILE ]; then
- infofound=1
- if [ $dots -gt 0 ]; then
- echo ""
- dots=0
- fi
- $ECHO -n "$NAME is currently "
- cat $INFOFILE
- echo "Time counting is now disabled and we will wait until this job is complete."
- fi
- fi
- [ $infofound -lt 1 ] && seconds=`expr $seconds + 1`
- echo -n "."
- dots=`expr $dots + 1`
- if [ "$seconds" -ge $MAXWAIT ]; then
- if [ $dots -gt 0 ]; then
- echo ""
- dots=0
- fi
- echo "Timeout occurred, killing $NAME hardly."
- kill -9 `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
- [ -f $PIDFILE ] && rm $PIDFILE
- seconds=0
- fi
- sleep 1
- done
- [ $dots -gt 0 ] && echo ""
- #echo "$NAME is stopped."
- fi
- fi
- }
- restart() {
- stop
- start
- }
- status() {
- PID=$(cat $PIDFILE)
- test -e $PIDFILE
- if [ $? == 0 ]; then
- echo $NAME " running! pid $PID"
- else
- echo $NAME " not running !!!"
- fi
- }
- reset() {
- $0 stop
- [ -f "$RESETMODEMS" ] && "$RESETMODEMS"
- sleep 30
- $0 start
- }
|