diff options
author | Harald Geyer <harald@ccbib.org> | 2017-05-14 17:13:17 +0000 |
---|---|---|
committer | Harald Geyer <harald@ccbib.org> | 2018-03-06 14:17:14 +0000 |
commit | 0cc76f89ae4b843c280d1b9ede26db08c24888c5 (patch) | |
tree | d5bdc8828568f0b9080a5a314414892a5a3969f9 /utils/smstools3/files | |
parent | 4b0ed514de30717548f85541c36c7600c58aeb09 (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.conf | 16 | ||||
-rw-r--r-- | utils/smstools3/files/smstools3.init | 133 |
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 -} |