1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2014 OpenWrt.org
3 # smsd initscript openwrt mod
8 EXTRA_COMMANDS
="status"
9 EXTRA_HELP
=" status View pid and service status "
11 # Set USER and GROUP, if necessary:
15 # If an unpriviledged user is selected, make sure that next two
16 # files are writable by that user:
17 PIDFILE
="/var/run/smsd.pid"
18 INFOFILE
="/var/run/smsd.working"
19 # Logfile can also be defined in here:
20 LOGFILE
="/var/log/smsd.log"
22 DAEMON
=/usr
/local
/bin
/smsd
23 # A program which turns power off for couple of seconds:
24 RESETMODEMS
=/usr
/local
/bin
/smsd_resetmodems
28 # Set/edit this before starting service !!!!!
31 # Maximum time to stop smsd, after that it gets killed hardly:
39 test -x $DAEMON ||
exit 0
41 echo "Creating minimum spool directories"
43 mkdir
-p $WRT_SPOOL/sms
44 mkdir
-p $WRT_SPOOL/sms
/incoming
45 mkdir
-p $WRT_SPOOL/sms
/outgoing
46 mkdir
-p $WRT_SPOOL/sms
/checked
47 mkdir
-p $WRT_SPOOL/sms
/failed
48 mkdir
-p $WRT_SPOOL/sms
/sent
50 echo -n "Starting SMS Daemon: "
52 ARGS
="-n MAINPROCESS -p$PIDFILE -i$INFOFILE"
53 [ "x$USER" != x
] && ARGS
="$ARGS -u$USER"
54 [ "x$GROUP" != x
] && ARGS
="$ARGS -g$GROUP"
55 [ "x$LOGFILE" != x
] && ARGS
="$ARGS -l$LOGFILE"
56 PID
=`cat $PIDFILE 2>/dev/null`
57 if [ "x$PID" != x
]; then
58 if kill -0 $PID 2>/dev
/null
; then
59 MSG
=" already running ($PID)."
64 if [ "x$PID" = x
]; then
65 if ps
$PSOPT |
grep $NAME |
grep -v grep >/dev
/null
; then
66 MSG
=" already running."
70 PIDS
=`ps $PSOPT | grep $NAME | grep -v grep`
71 [ "x$PIDS" = x
] && MSG
=" failed."
78 if ps
$PSOPT |
grep $NAME |
grep -v grep >/dev
/null
; then
79 PID
=`cat $PIDFILE 2>/dev/null`
80 if [ "x$PID" != x
]; then
81 P
=`kill -0 $PID 2>/dev/null`
82 [ "x$P" != x
] && PID
=""
84 if [ "x$PID" != x
]; then
87 kill `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev
/null
2>&1
90 if ps
$PSOPT |
grep $NAME |
grep -v grep >/dev
/null
; then
91 echo "Allowing $NAME to terminate gracefully within $MAXWAIT seconds"
95 while ps
$PSOPT |
grep $NAME |
grep -v grep >/dev
/null
; do
96 if [ $infofound -lt 1 ]; then
97 if [ -f $INFOFILE ]; then
99 if [ $dots -gt 0 ]; then
103 $ECHO -n "$NAME is currently "
105 echo "Time counting is now disabled and we will wait until this job is complete."
108 [ $infofound -lt 1 ] && seconds
=`expr $seconds + 1`
110 dots
=`expr $dots + 1`
111 if [ "$seconds" -ge $MAXWAIT ]; then
112 if [ $dots -gt 0 ]; then
116 echo "Timeout occured, killing $NAME hardly."
117 kill -9 `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev
/null
2>&1
118 [ -f $PIDFILE ] && rm $PIDFILE
123 [ $dots -gt 0 ] && echo ""
124 #echo "$NAME is stopped."
140 echo $NAME " running! pid $PID"
142 echo $NAME " not running !!!"
148 [ -f "$RESETMODEMS" ] && "$RESETMODEMS"