#!/bin/sh

FLOWEYE="/usr/ramdisk/bin/floweye"


saclib_apnew_ver()
{
    printf "{"

    for file in `find /usr/ramdisk/tmp/sac/new -type f`
    do
        err=`grep "404" ${file}`
        [ "${err}" != "" ] && continue
        . ${file}
        printf "${dot}\"${DEV_TYPE}\":\"${SFT_DATE}\""

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

    printf "}"
}


saclib_group_list()
{
    ${FLOWEYE} sacgrp list | awk \
    'BEGIN{
        dot = "";
        printf "[";
    }{
        if($1 == "-1") next;

        printf "%s", dot;
        printf "{";
        printf "\"grpid\":\"%s\",", $1;
        printf "\"tmplid\":\"%s\",", $2;
        printf "\"grpname\":\"%s\",", $3;
        printf "\"iprng\":\"%s\"", $4;
        printf "}";
        if(dot == "") dot = ",";
    }END{
        printf "]";
    }'
}


saclib_group_dict()
{
    ${FLOWEYE} sacgrp list | awk \
    'BEGIN{
        dot = "";
        printf "{";
    }{
        if($1 == "-1") next;

        printf "%s", dot;
        printf "\"g%s\":\"%s\"", $1, $2;

        if(dot == "") dot = ",";
    }END{
        printf "}";
    }'
}


saclib_tmpl_dict()
{
    ${FLOWEYE} sactmpl list | awk \
    'BEGIN{
        dot = "";
        printf "{";
    }{		
        printf "%s", dot;
        printf "\"t%s\":\"%s\"", $1, $2;

        if(dot == "") dot = ",";
    }END{
        printf "}";
    }'
}


get_task_stat()
{
    if [ "${CGI_taskid}" = "" ]; then
        printf "[]"
        return
    fi

    printf "["

    while read taskid taskbirth taskstat cmdstr apid apname cmdbirth cmdlives cmdstat reply others
    do
        [ "${taskid}" = "TASKID_NOTFOUND" ] && continue
        apname=`utf8togb2312 ${apname}`

        printf "${dot}"
        printf "{"
        printf "\"taskid\":\"${taskid}\","
        printf "\"taskbirth\":\"${taskbirth}\","
        printf "\"taskstat\":\"${taskstat}\","
        printf "\"cmdstr\":\"${cmdstr}\","
        printf "\"apid\":\"${apid}\","
        printf "\"apname\":\"${apname}\","
        printf "\"cmdbirth\":\"${cmdbirth}\","
        printf "\"cmdlives\":\"${cmdlives}\","
        printf "\"cmdstat\":\"${cmdstat}\","
        printf "\"reply\":\"${reply}\","
        printf "\"others\":\"${others}\""
        printf "}"
        [ "${dot}" = "" ] && dot=","
    done <<EOF
`${FLOWEYE} sactask get taskid=${CGI_taskid}`
EOF

    printf "]"
}


sac_crontab_hook()
{
    CMDSTR="$1"
    CONFDIR="${PGETC}/App/sac"
    CRONTAB_CONF="${CONFDIR}/crontab.conf"

    mkdir -p "${CONFDIR}"

    [ "${CGI_exectime}" = "" ] && retjson 1 "NO_TIME"

    start_range="`echo "${CGI_exectime}" | cut -d"-" -f1`"
    start_hour="`echo "${start_range}" | cut -d":" -f1`"
    start_min="`echo "${start_range}" | cut -d":" -f2`"

    end_range="`echo "${CGI_exectime}" | cut -d"-" -f2`"
    end_hour="`echo "${end_range}" | cut -d":" -f1`"
    end_min="`echo "${end_range}" | cut -d":" -f2`"

    start_crontab_id=`awk '{split($1, id, "="); print id[2]}' ${CRONTAB_CONF} | sort -nk1 | tail -1`

    if [ "${start_crontab_id}" = "" ]; then
        start_crontab_id=1
    else
        start_crontab_id=$((${start_crontab_id} + 1))
    fi

    end_crontab_id=$((${start_crontab_id} + 1))
    rmv_cmd="op=delwlan&ssidstr=,${CGI_ssidname}_${CGI_vlan}"

    echo "id=${start_crontab_id} month=day day= hour=${start_hour} min=${start_min} cmd=ssid_add cmdstr=\"${CMDSTR}\" apid=${CGI_apidstr} apmac=${CGI_apmac} birth=`date +%s`" >> ${CRONTAB_CONF}
    echo "id=${end_crontab_id} month=day day= hour=${end_hour} min=${end_min} cmd=ssid_rmv cmdstr=\"${rmv_cmd}\" apid=${CGI_apidstr} apmac=${CGI_apmac} birth=`date +%s`" >> ${CRONTAB_CONF}

    retjson 2 "ɹ"
}


sac_task_commit()
{
    CMDSTR="$1"

    [ "${CGI_addtype}" = "crontab" ] && sac_crontab_hook ${CMDSTR}

    errmsg=`${FLOWEYE} sactask add apidstr=${CGI_apidstr} cmdstr="${CMDSTR}" 2>/dev/null`

    [ $? -ne 0 ] && retjson 1 "ʧܣ${errmsg}"

    taskid=`echo ${errmsg} | cut -d'=' -f2`
    [ "${taskid}" = "" ] && retjson 1 "ʧܣδID"
    
    retjson 0 "OK" "${taskid}"
}


sac_debug_commit()
{
    CMDSTR="$1"

    [ "${CGI_addtype}" = "crontab" ] && sac_crontab_hook ${CMDSTR}

    errmsg=`${FLOWEYE} sactask add apidstr=${CGI_apidstr} debugstr="${CMDSTR}" >>/dev/null 2>&1`

    [ $? -ne 0 ] && retjson 1 "ʧܣ${errmsg}"

    retjson 0 "OK" "`echo ${errmsg} | cut -d'=' -f2`"
}
