aboutsummaryrefslogtreecommitdiff
path: root/utils/smstools3/files
diff options
context:
space:
mode:
authorHarald Geyer <harald@ccbib.org>2017-05-14 17:13:17 +0000
committerHarald Geyer <harald@ccbib.org>2018-03-06 14:17:14 +0000
commit0cc76f89ae4b843c280d1b9ede26db08c24888c5 (patch)
treed5bdc8828568f0b9080a5a314414892a5a3969f9 /utils/smstools3/files
parent4b0ed514de30717548f85541c36c7600c58aeb09 (diff)
smstools3: Move init script to use procd
* properly install config file * prevent smsd from starting right after installation to prevent loss of data (make default device unavailable by turning configuration into comments) * move init script to procd * update init script priority to sane value * log to syslog - at the moment via stdout and procd this is a workaround to force smsd to stay in the foreground * the init script can't do a modem reset anymore use an alarmhandler script instead * add a local patch to make all processes terminate if the main process dies * take over the package as new maintainer Signed-off-by: Harald Geyer <harald@ccbib.org>
Diffstat (limited to 'utils/smstools3/files')
-rw-r--r--utils/smstools3/files/smstools3.conf16
-rw-r--r--utils/smstools3/files/smstools3.init133
2 files changed, 19 insertions, 130 deletions
diff --git a/utils/smstools3/files/smstools3.conf b/utils/smstools3/files/smstools3.conf
index c8732e353..da5a36a3d 100644
--- a/utils/smstools3/files/smstools3.conf
+++ b/utils/smstools3/files/smstools3.conf
@@ -10,11 +10,15 @@ failed = /var/spool/sms/failed
sent = /var/spool/sms/sent
receive_before_send = no
autosplit = 3
+logfile = 1
+loglevel = 5
-[GSM1]
-init = AT+CPMS="ME","ME","ME"
-device = /dev/ttyUSB0
-incoming = yes
-pin = 0000
-baudrate = 9600
+# Uncomment (and edit) this section to allow smsd to start:
+#
+#[GSM1]
+#init = AT+CPMS="ME","ME","ME"
+#device = /dev/ttyUSB0
+#incoming = yes
+#pin = 0000
+#baudrate = 115200
diff --git a/utils/smstools3/files/smstools3.init b/utils/smstools3/files/smstools3.init
index 7c60ceaf8..b46fa5a28 100644
--- a/utils/smstools3/files/smstools3.init
+++ b/utils/smstools3/files/smstools3.init
@@ -1,43 +1,21 @@
#!/bin/sh /etc/rc.common
-# Copyright (C) 2014 OpenWrt.org
-# smsd initscript openwrt mod
+# Copyright (C) 2014-2018 OpenWrt.org
-START=99
-STOP=99
+START=94
-EXTRA_COMMANDS="status"
-EXTRA_HELP=" status View pid and service status "
-
-# Set USER and GROUP, if necessary:
-USER=""
-GROUP=""
+USE_PROCD=1
# 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/bin/smsd
-# A program which turns power off for couple of seconds:
-RESETMODEMS=/usr/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
-
+start_service() {
echo "Creating minimum spool directories"
mkdir -p $WRT_SPOOL
mkdir -p $WRT_SPOOL/sms
@@ -47,106 +25,13 @@ start() {
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
-}
-
+ procd_open_instance
-status() {
- PID=$(cat $PIDFILE)
+ procd_set_param command $DAEMON -n MAINPROCESS -p$PIDFILE -i$INFOFILE
+ procd_set_param respawn
+ procd_set_param stdout 1
- test -e $PIDFILE
- if [ $? == 0 ]; then
- echo $NAME " running! pid $PID"
- else
- echo $NAME " not running !!!"
- fi
+ procd_close_instance
}
-reset() {
- $0 stop
- [ -f "$RESETMODEMS" ] && "$RESETMODEMS"
- sleep 30
- $0 start
-}