#!/bin/sh

. ../common/ajax_common


load_sac_stat()
{
    ${FLOWEYE} sac stat | awk -F "=" \
    'BEGIN{
        printf "{";
        dot = "";
    }{
        printf "%s\"%s\":\"%s\"", dot, $1, $2;
        if ( dot == "" ) dot = ",";
    }END{
        printf "}";
    }'
}


sac_user_chart()
{
    now=$(( (`date +%s`) * 1000))

    ${FLOWEYE} sacsta list | awk -v ip=${CGI_ip}  -v now=${now} \
    '{
        if($2 != ip) next;
        split($18, rate, "/");
        printf "{"
        split($16, rssi, "-");
        printf "\"inbps\":{\"x\":%s,\"y\":%s},", now, $10;
        printf "\"outbps\":{\"x\":%s,\"y\":%s},", now, $11;
        printf "\"rate_in\":{\"x\":%s,\"y\":%s},", now, rate[1];
        printf "\"rate_out\":{\"x\":%s,\"y\":%s},", now, rate[2];
        printf "\"rssi\":{\"x\":%s,\"y\":%s}", now, rssi[2];
        printf "}";
    }'
}


set_sac_enable()
{
    [ "${CGI_enable}" != "1" -a "${CGI_enable}" != "0"] && retjson 1 "INV_ENABLE"

    errmsg=`${FLOWEYE} sac config enable=${CGI_enable}`

    if [ $? -ne 0 ]; then
        retjson 1 "ʧ:${errmsg}"
    else
        WEB_LOGGER "SACģ" "sac enable=${CGI_enable}"
        retjson 0 "ɹ"
    fi
}


load_saclog_list()
{
    CGI_keyword=`gb2312toutf8 ${CGI_keyword}`
    result=`${FLOWEYE} saclog list | grep -v -w 'birth' | grep -i "${CGI_keyword}" | sort -n -r -k 1`

    if [ "${result}" = "" ]; then
        printf "{\"data\":[],\"total\":0}"
        return
    fi

    [ "${CGI_page}" = "" ] && CGI_page=1
    [ "${CGI_limit}" = "" ] && CGI_limit=100

    row=0
    end=$((${CGI_page} * ${CGI_limit}))
    start=$((${end} - ${CGI_limit}))

    dot=""
    printf "{\"data\":["

    while read birth apid apname mac level event logmsg
    do
        [ "${CGI_event}" != "" -a "${CGI_event}" != "${event}" ] && continue

        row=$((${row}+1))
        [ ${row} -le ${start} -o ${row} -gt ${end} ] && continue

        apname=`utf8togb2312 "${apname}"`
        logmsg=`utf8togb2312 "${logmsg}"`

        printf "${dot}"
        printf "{"
        printf "\"birth\":%d," ${birth}
        printf "\"apid\":\"%s\"," ${apid}
        printf "\"apname\":\"%s\"," ${apname}
        printf "\"level\":%d," ${level}
        printf "\"event\":%d," ${event}
        printf "\"logmsg\":\"%s\"," ${logmsg}
        printf "\"mac\":\"%s\"" ${mac}
        printf "}"

        [ "${dot}" = "" ] && dot=","

    done << EOF
    ${result}
EOF

	printf "],\"total\":${row}}"
}


export_sac_log()
{
    ostype=`uname`
    file_name="SAC־.log"
    file_path="${WEB_DOWNLOAD}/${file_name}"

    mkdir -p ${WEB_DOWNLOAD}

    while read birth obj apname mac level event logmsg
    do
        if [ "${ostype}" = "Linux" ]; then
            time=`date -d @${birth} +"%Y/%m/%d %H:%M:%S"`
        else
            time=`date -r ${birth} +"%Y-%m-%d %H:%M:%S"`
        fi

        event=`echo ${event} | awk \
        'BEGIN{
            hold_cmd[1] = "SSID";
            hold_cmd[2] = "ɾSSID";
            hold_cmd[3] = "޸SSID";
            hold_cmd[4] = "޸Ƶ";
            hold_cmd[5] = "AP";
            hold_cmd[6] = "";
            hold_cmd[7] = "";
            hold_cmd[8] = "ص";
            hold_cmd[9] = "";
            hold_cmd[10] = "δ֪";
            hold_cmd[11] = "";
            hold_cmd[12] = "ʱ";
        }{
            printf hold_cmd[$1];
        }'`

        apname=`utf8togb2312 "${apname}"`
        logmsg=`utf8togb2312 "${logmsg}"`
        printf "[${time}]\t apname=${apname}\t mac=${mac}\t event=${event}\t	msg=${logmsg}\n" >> ${file_path}

    done << EOF
    `${FLOWEYE} saclog list`
EOF
    WEB_LOGGER "SAC־"
    retjson 0 "OK" "\"${file_name}\""
}


case "${CGI_action}" in
    "load_sac_stat")
        retjson 0 "OK" "`load_sac_stat`"
        ;;

    "load_saclog_list")
        retjson 0 "OK" "`load_saclog_list`"
        ;;

    "sac_user_chart")
        retjson 0 "OK" "`sac_user_chart`"
        ;;

    "set_sac_enable")
        action_check
        set_sac_enable
        ;;

    "get_task_stat")
        . ./ajax_sac_object_lib
        retjson 0 "OK" "`get_task_stat`"
        ;;

    "export_sac_log")
        action_check
        export_sac_log
        ;;

    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
