mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 18:41:15 +08:00
93 lines
3.2 KiB
Bash
Executable File
93 lines
3.2 KiB
Bash
Executable File
#!/bin/ash
|
|
DIR="/var/spool/smscontrol"
|
|
ENABLED=$(uci get smscontrol.common.enabled)
|
|
|
|
if [ "$ENABLED" -eq "1" ]; then
|
|
case "$1" in
|
|
RECEIVED)
|
|
PASS=$(uci get smscontrol.common.pass)
|
|
[ -z "$PASS" ] && exit
|
|
PASSLENGTH=$(echo $PASS | wc -c)
|
|
MESSAGE=$(cat "$2")
|
|
FROM=$(echo "${MESSAGE}"|grep -e '^From\:'|cut -d' ' -f2)
|
|
DATE=$(echo "${MESSAGE}"|grep -e '^Received\:'|cut -d' ' -f2,3)
|
|
BODY=$(echo "${MESSAGE}"|sed -e '1,/^$/d')
|
|
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
|
|
CFG=$(uci add smscontrol_log event)
|
|
uci set smscontrol_log.$CFG.date="${DATE}"
|
|
uci set smscontrol_log.$CFG.type=SMS
|
|
uci set smscontrol_log.$CFG.from="${FROM}"
|
|
uci set smscontrol_log.$CFG.message="${BODY}"
|
|
uci commit smscontrol_log
|
|
fi
|
|
[ "$PASS;" != "${BODY::$PASSLENGTH}" ] && exit
|
|
ADMINPHONES=$(uci get smscontrol.common.whitelist)
|
|
COUNTPHONES=$(echo $ADMINPHONES | wc -w)
|
|
COUNT="0"
|
|
while [ "$COUNT" -ne "$COUNTPHONES" ]; do
|
|
COUNT=$(($COUNT + 1))
|
|
ADMPH=$(echo $ADMINPHONES | awk -v var=$COUNT -F ' ' '{print $var}')
|
|
if [ "$ADMPH" -eq "$FROM" ]; then
|
|
BODY=${BODY:$PASSLENGTH}
|
|
if [ "${BODY::4}" != "CLI\$" ]; then
|
|
$DIR/commands "$BODY" "$FROM" &
|
|
break
|
|
else
|
|
BODY=${BODY:4}
|
|
$DIR/cli "$BODY" "$FROM" &
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
;;
|
|
|
|
USSD)
|
|
;;
|
|
|
|
CALL)
|
|
MESSAGE=$(cat "$2")
|
|
FROM=$(echo "${MESSAGE}"|grep -e '^From\:'|cut -d' ' -f2)
|
|
|
|
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
|
|
CFG=$(uci add smscontrol_log event)
|
|
DATE=$(date +"%y-%m-%d %H:%M:%S")
|
|
uci set smscontrol_log.$CFG.date="${DATE}"
|
|
uci set smscontrol_log.$CFG.type=CALL
|
|
uci set smscontrol_log.$CFG.from="${FROM}"
|
|
uci commit smscontrol_log
|
|
fi
|
|
|
|
ADMINPHONES=$(uci get smscontrol.common.whitelist)
|
|
COUNTPHONES=$(echo $ADMINPHONES | wc -w)
|
|
COUNT="0"
|
|
while [ "$COUNT" -ne "$COUNTPHONES" ]; do
|
|
COUNT=$(($COUNT + 1))
|
|
ADMPH=$(echo $ADMINPHONES | awk -v var=$COUNT -F ' ' '{print $var}')
|
|
if [ "$ADMPH" -eq "$FROM" ]; then
|
|
$DIR/calls "$FROM" &
|
|
break
|
|
fi
|
|
done
|
|
;;
|
|
|
|
SENT)
|
|
if [[ "$(uci -q get smscontrol.common.smscontrol_log)" = "1" ]]; then
|
|
MESSAGE=$(cat "$2")
|
|
TO=$(echo "${MESSAGE}"|grep -e '^To\:'|cut -d' ' -f2)
|
|
BODY=$(echo "${MESSAGE}"|sed -e '1,/^$/d')
|
|
CFG=$(uci add smscontrol_log event)
|
|
DATE=$(date +"%y-%m-%d %H:%M:%S")
|
|
uci set smscontrol_log.$CFG.date="${DATE}"
|
|
uci set smscontrol_log.$CFG.type=SMS
|
|
uci set smscontrol_log.$CFG.to="${TO}"
|
|
uci set smscontrol_log.$CFG.message="${BODY}"
|
|
uci commit smscontrol_log
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
fi
|