#!/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
