#!/bin/sh

. ../common/ajax_common


list_bypass()
{
    ${FLOWEYE} bypass list | grep -i "${CGI_keyword}" | awk \
    'BEGIN{
        dot = "";
        printf "[";
    }{
        col = 1;

        printf "%s{", dot;
        printf "\"ip\":\"%s\"", $(col++);
        printf ",\"ttl\":\"%s\"", $(col++);
        printf ",\"ltime\":\"%s\"", $(col++);
        printf ",\"last_timeout\":\"%s\"", $(col++);
        printf ",\"timeout_cnt\":\"%s\"", $(col++);
        printf ",\"active\":\"%s\"", $(col++);
        printf "}";
        if(dot == "") dot = ",";      
    }END{
        printf "]";
    }'
}


add_bypass()
{
    [ "${CGI_ip}" = "" ] && retjson 1 "INV_IP"
    [ "${CGI_ttl}" = "" ] && retjson 1 "INV_TTL"

    cmdargs="ip=${CGI_ip} ttl=${CGI_ttl}"
    errmsg=`${FLOWEYE} bypass add ${cmdargs}`

    if [ $? -ne 0 ]; then
        retjson 1 "ʧ:${errmsg}"
    else
        sync_floweye "bypass add ${cmdargs}"
        WEB_LOGGER "bypass" "${cmdargs}"
        retjson 0 "ɹ"
    fi
}


edit_bypass()
{
    [ "${CGI_ip}" = "" ] && retjson 1 "INV_IP"
    [ "${CGI_ttl}" = "" ] && retjson 1 "INV_TTL"

    cmdargs="ip=${CGI_ip} ttl=${CGI_ttl}"
    errmsg=`${FLOWEYE} bypass set ${cmdargs}`

    if [ $? -ne 0 ]; then
        retjson 1 "ʧ:${errmsg}"
    else
        sync_floweye "bypass set ${cmdargs}"
        WEB_LOGGER "༭bypass" "${cmdargs}"
        retjson 0 "ɹ"
    fi
}


rmv_bypass()
{
    [ "${CGI_ip}" = "" ] && retjson 1 "INV_IP"

    errmsg=`${FLOWEYE} bypass remove ip=${CGI_ip}`

    if [ $? -ne 0 ]; then
        retjson 1 "ʧ:${errmsg}"
    else
        sync_floweye "bypass remove ip=${CGI_ip}"
        WEB_LOGGER "ɾbypass" "${cmdargs}"
        retjson 0 "ɹ"
    fi
}


btnrmv_bypass()
{
    for ip in ${CGI_items}
    do
        errmsg=`${FLOWEYE} bypass remove ip=${ip}`
        [ $? -ne 0 ] && retjson 1 "ʧ:${errmsg}"
        sync_floweye "bypass remove ip=${ip}"
    done

    WEB_LOGGER "ɾbypass"
    retjson 0 "ɹ"
}


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

    "add_bypass")
        action_check
        add_bypass
        ;;

    "edit_bypass")
        action_check
        edit_bypass
        ;;

    "rmv_bypass")
        action_check
        rmv_bypass
        ;;

    "btnrmv_bypass")
        action_check
        btnrmv_bypass
        ;;
    
    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
