173 lines
5.2 KiB
Bash
173 lines
5.2 KiB
Bash
#!/bin/sh
|
|
|
|
ROOTER=/usr/lib/rooter
|
|
|
|
log() {
|
|
logger -t "sms process" "$@"
|
|
}
|
|
|
|
CURRMODEM=$1
|
|
|
|
log "SMS Supported Modem$CURRMODEM"
|
|
|
|
COMMPORT="/dev/ttyUSB"$(uci get modem.modem$CURRMODEM.commport)
|
|
|
|
LOCKDIR="/tmp/smslock$CURRMODEM"
|
|
PIDFILE="${LOCKDIR}/PID"
|
|
rm -rf "${LOCKDIR}"
|
|
|
|
idV=$(uci -q get modem.modem$CURRMODEM.idV)
|
|
idP=$(uci -q get modem.modem$CURRMODEM.idP)
|
|
MODEMID="$idV${idP:0:3}"
|
|
|
|
ATCMDD="AT+CMGF=0"
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
sleep 1
|
|
ATCMDD="AT+CPMS=\"SM\",\"SM\",\"SM\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
MAXED=$(echo "$OX" | cut -d, -f2 | grep -o "[0-9]\{1,3\}")
|
|
if [ "$MAXED" == "0" -a "$MODEMID" != "119968a" ]; then
|
|
ATCMDD="AT+CPMS=\"ME\",\"ME\",\"ME\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
uci set modem.modem$CURRMODEM.smsloc="ME"
|
|
SMSLOC="ME"
|
|
MEM3="ME"
|
|
else
|
|
uci set modem.modem$CURRMODEM.smsloc="SM"
|
|
SMSLOC="SM"
|
|
MEM3="SM"
|
|
fi
|
|
sleep 1
|
|
uci set modem.modem$CURRMODEM.smsnum=999
|
|
uci commit modem
|
|
ATCMDD="AT+CPMS=\"ME\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
MESC=$(echo "$OX" | grep -o "+CPMS:.*" | awk -F, '{print $1}' | grep -o "[0-9]\{1,3\}")
|
|
METC=$(echo "$OX" | grep -o "+CPMS:.*" | awk -F, '{print $2}' | grep -o "[0-9]\{1,3\}")
|
|
MESLOT="0"
|
|
MESCc=""
|
|
if [ "x$MESC" = "x" ]; then
|
|
MESC="0"
|
|
fi
|
|
if [ "x$METC" = "x" ]; then
|
|
METC="0"
|
|
MESC="0"
|
|
SMSLOC="SM"
|
|
fi
|
|
uci set modem.sms.slots=$MESC
|
|
uci commit modem
|
|
sleep 1
|
|
|
|
rm -f /tmp/smsresult$CURRMODEM".at"
|
|
> /tmp/smsslots$CURRMODEM
|
|
HH=$(date +%H)
|
|
|
|
while true; do
|
|
SLEEP="20"
|
|
while true; do
|
|
if mkdir "${LOCKDIR}" &>/dev/null; then
|
|
echo "$$" > "${PIDFILE}"
|
|
if [ "$METC" != "0" ]; then
|
|
ATCMDD="AT+CPMS=\"ME\",\"$SMSLOC\",\"$MEM3\""
|
|
SX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
USED=$(echo "$SX" | cut -d, -f1 | grep -o "[0-9]\{1,3\}")
|
|
MESCc="$USED"
|
|
if [ -n "$MESCc" -a "$MESCc" != "$MESC" ]; then
|
|
MESC=$MESCc
|
|
uci set modem.sms.slots=$MESC
|
|
uci commit modem
|
|
fi
|
|
MAXED=$(echo "$SX" | cut -d, -f2 | grep -o "[0-9]\{1,3\}")
|
|
fi
|
|
if [ $SMSLOC == "SM" ]; then
|
|
ATCMDD="AT+CPMS=\"SM\",\"$SMSLOC\",\"$MEM3\""
|
|
SX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
USED=$(echo "$SX" | cut -d, -f1 | grep -o "[0-9]\{1,3\}")
|
|
MAXED=$(echo "$SX" | cut -d, -f2 | grep -o "[0-9]\{1,3\}")
|
|
if [ $USED == $MAXED -a $MEM3 == "SM" ]; then
|
|
ATCMDD="AT+CPMS=\"SM\",\"SM\",\"ME\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
MEM3="ME"
|
|
else
|
|
if [ $USED != $MAXED -a $MEM3 == "ME" ]; then
|
|
ATCMDD="AT+CPMS=\"SM\",\"SM\",\"SM\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
MEM3="SM"
|
|
fi
|
|
fi
|
|
fi
|
|
if [ $MAXED -eq 0 ]; then
|
|
SLEEP="900"
|
|
fi
|
|
if [ $USED -eq $(uci get modem.modem$CURRMODEM.smsnum) ] && [ $HH -eq $(date +%H) ]; then
|
|
if [ $MEM3 == "SM" -a $USED -lt $MAXED -a $MESC -gt 0 -a $(uci -q get modem.sms.menable) == 1 ]; then
|
|
ATCMDD="AT+CPMS=\"ME\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
ATCMDD="AT+CMGR=$MESLOT"
|
|
OX=$OX$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
ATCMDD="AT+CPMS=\"SM\""
|
|
OX=$OX$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
Rstat=$(echo "$OX" | grep -o "+CMGR:[^,]\+" | grep -o "[0-3]")
|
|
PDU=$(echo "$OX" | grep -o "[0-9A-F]\{30,\}")
|
|
PDUL=$(echo "$OX" | grep -o "+CMGR:.*" | grep -o ",[0-9]\{1,\}" | grep -o "[0-9]\{1,3\}")
|
|
if [ -n "$PDU" -a -n "$PDUL" -a -n "$Rstat" ]; then
|
|
if [ ${#PDUL} -eq 2 ]; then
|
|
PDUL="0$PDUL"
|
|
fi
|
|
ATCMDD="$PDUL,SM,$Rstat,$PDU"
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "smswrite.gcom" "$CURRMODEM" "$ATCMDD")
|
|
MREF=$(echo "$OX" | grep -o "[0-9]\{1,3\}")
|
|
if [ ${#MREF} -gt 0 ]; then
|
|
echo "$MREF" >> /tmp/smsslots$CURRMODEM
|
|
ATCMDD="AT+CPMS=\"ME\";+CMGD=$MESLOT;+CPMS=\"SM\""
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
fi
|
|
MESC=$(($MESC - 1))
|
|
uci set modem.sms.slots=$MESC
|
|
uci commit modem
|
|
SLEEP="5"
|
|
fi
|
|
MESLOT=$(($MESLOT + 1))
|
|
if [ $MESLOT -gt $METC -o $MESC == "0" ]; then
|
|
MESLOT="0"
|
|
fi
|
|
fi
|
|
else
|
|
log "Reread SMS Messages on Modem $CURRMODEM"
|
|
echo "$SX" > /tmp/smstemp$CURRMODEM
|
|
ATCMDD="AT+CMGL=4"
|
|
SX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "run-at.gcom" "$CURRMODEM" "$ATCMDD")
|
|
SX=$(echo "$SX" | sed -e "s/+CMGL:/+CMGL: /g")
|
|
echo "$SX" >> /tmp/smstemp$CURRMODEM
|
|
uci set modem.modem$CURRMODEM.smsnum=$USED
|
|
uci commit modem
|
|
mv /tmp/smstemp$CURRMODEM /tmp/smsresult$CURRMODEM.at
|
|
lua /usr/lib/sms/smsread.lua $CURRMODEM
|
|
HH=$(date +%H)
|
|
SLEEP="5"
|
|
fi
|
|
break
|
|
else
|
|
OTHERPID="$(cat "${PIDFILE}")"
|
|
if [ $? = 0 ]; then
|
|
if ! kill -0 $OTHERPID &>/dev/null; then
|
|
rm -rf "${LOCKDIR}"
|
|
fi
|
|
fi
|
|
sleep 1
|
|
fi
|
|
done
|
|
rm -rf "${LOCKDIR}"
|
|
n=1
|
|
until [ $n -ge $SLEEP ]
|
|
do
|
|
sleep 1
|
|
if [ -e /tmp/smswakeup$CURRMODEM ]; then
|
|
rm /tmp/smswakeup$CURRMODEM
|
|
n=$(( $n + $SLEEP ))
|
|
else
|
|
n=$(( $n + 1 ))
|
|
fi
|
|
done
|
|
done
|