#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"			            	    #ʧ
	LANG002="Success"		            	    #ɹ
    LANG003="Set_Attackprotection"         	    #ù
    LANG004="Set_Attackprotection_Policy"	    #ù
    LANG005="Delete_Attackprotection_Policy"	#ɾ
    LANG006="Disable_Attackprotection_Policy"	#ù
    LANG007="Enable_Attackprotection_Policy"	#ù
    LANG008="Delete_Attackprotection_Policy"	#ɾ
    LANG009="Disable_Attackprotection_Policy"	#ù
    LANG010="Enable_Attackprotection_Policy"	#ù
fi


load_attackpro_stat()
{
    printf "`${FLOWEYE} ddos list pktchk=1 json=1`" 
}

set_attackpro_stat()
{
    errmsg=`${FLOWEYE} ddos config hugeicmp=${CGI_hugeicmp} arpflood=${CGI_arpflood} pingofdeath=${CGI_pingofdeath} tcpflag=${CGI_tcpflag} action=${CGI_operation}`
    [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}:${errmsg}"
    WEB_LOGGER "${LANG003:=ù}" "hugeicmp=${CGI_hugeicmp} arpflood=${CGI_arpflood} pingofdeath=${CGI_pingofdeath} tcpflag=${CGI_tcpflag} action=${CGI_operation}"
    retjson 0 "${LANG002:=ɹ}"
}

load_policy()
{
    
    result=`${FLOWEYE} ddos list | grep "${CGI_keyword}"`
    printf "["
    printf "%s" "$result" 
    printf "]"
}

get_policy()
{
    ${FLOWEYE} ddos get id=${CGI_id} | sed 's/%/%%/g' | awk -F "=" \
    'BEGIN{
        dot = "";
        printf "{";
    }{
        printf "%s", dot;
        printf "\"%s\":\"%s\"", $1, $2;
        if (dot == "") dot = ",";
    }END{
        printf "}";
    }'
}


add_policy()
{
    
    if [ "${CGI_action_}" = "edit_policy" ]; then
        cmdargs="set id=${CGI_oldid} newid=${CGI_id} enable=${CGI_enable}"
    else
        cmdargs="add id=${CGI_id} enable=${CGI_enable}"
    fi

    [ "${CGI_vlan}"  = "" ] && CGI_vlan="0"
    CGI_desc=`echo ${CGI_desc} | sed -r 's/ /\%20/g'`

    cmdargs="${cmdargs} desc=${CGI_desc} vlan=${CGI_vlan} inip=${CGI_submit_srcip} outip=${CGI_submit_dstip} inport=${CGI_inport} outport=${CGI_outport}"
	cmdargs="${cmdargs} floodtype=${CGI_floodtype} detect_src=${CGI_detect_src} detect_dst=${CGI_detect_dst} detect_all=${CGI_detect_all} action=${CGI_operation}"
    
	errmsg=`${FLOWEYE} ddos ${cmdargs}`

    if [ $? -ne 0 ]; then
        retjson 1 "${LANG001:=ʧ}:${errmsg}"
    else
        sync_floweye "ddos ${action} ${cmdargs}"
        WEB_LOGGER "${LANG004:=ù}" "${cmdargs}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}

remove_policy(){
     [ "${CGI_id}" = "" ] && retjson 1 "INV_ID"

    cmdargs="remove id=${CGI_id}"
    errmsg=`${FLOWEYE} ddos ${cmdargs}`

    if [ $? -ne 0 ]; then
        retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "ddos ${cmdargs}"
        WEB_LOGGER "${LANG005:=ɾ}" "${cmdargs}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}

disable_policy(){
    [ "${CGI_id}" = "" ] && retjson 1 "INV_ID"

    errmsg=`${FLOWEYE} ddos disable id=${CGI_id}`

    if [ $? -ne 0 ]; then
        retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "ddos disable id=${CGI_id}"
        WEB_LOGGER "${LANG006:=ù}" "id=${CGI_id}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}

enable_policy(){
    [ "${CGI_id}" = "" ] && retjson 1 "INV_ID"

    errmsg=`${FLOWEYE} ddos enable id=${CGI_id}`

    if [ $? -ne 0 ]; then
        retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "ddos enable id=${CGI_id}"
        WEB_LOGGER "${LANG007:=ù}" "id=${CGI_id}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}

btndisable_policy()
{
    for id in `echo ${CGI_items} | tr ";" " "`
    do
        errmsg=`${FLOWEYE} ddos disable id=${id}`
        [ $? -ne 0 ] && retjson 1 "${errmsg}"
        sync_floweye "ddos disable id=${id}"
    done

    WEB_LOGGER "${LANG009:=ù}" "ids=${CGI_items}"
    retjson 0 "${LANG002:=ɹ}"
}


btnenable_policy()
{
    for id in `echo ${CGI_items} | tr ";" " "`
    do
        errmsg=`${FLOWEYE} ddos enable id=${id}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
        sync_floweye "ddos enable id=${id}"
    done

    WEB_LOGGER "${LANG010:=ù}" "ids=${CGI_items}"
    retjson 0 "ɹ"
}


btnremove_policy()
{
    for id in `echo ${CGI_items} | tr ";" " "`
    do
        errmsg=`${FLOWEYE} ddos remove id=${id}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
        sync_floweye "ddos remove id=${id}"
    done

    WEB_LOGGER "${LANG008:=ɾ}" "ids=${CGI_items}"
	retjson 0 "${LANG002:=ɹ}"
}


load_addpolicy_env()
{
    . ../common/ajax_object_lib

    printf "{"
    printf "\"interface_list\":`lib_interface_list`"

    if [ "${CGI_id}" != "" ]; then
        printf ",\"policy\":`get_policy`"
    fi

    printf "}"
}

load_log(){

    
    result=`${FLOWEYE} ddos list ${CGI_state}=1 | grep "${CGI_keyword}"`
    printf "["
    printf "%s" "$result"  
    printf "]"

}


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

    "set_attackpro_stat")
        action_check
        set_attackpro_stat
        ;;

    "load_policy")
        retjson 0 "OK" "`load_policy`"
        ;;

    "add_policy")
        action_check
        add_policy
        ;;

    "remove_policy")
        action_check
        remove_policy
        ;;

    "disable_policy")
        action_check
        disable_policy
        ;;

    "enable_policy")
        action_check
        enable_policy
        ;;

    "btnremove_policy")
        action_check
        btnremove_policy
        ;;

    "btndisable_policy")
        action_check
        btndisable_policy
        ;;

    "btnenable_policy")
        action_check
        btnenable_policy
        ;;

    "load_addpolicy_env")
        retjson 0 "OK" "`load_addpolicy_env`"
        ;;

    "load_log")
        retjson 0 "OK" "`load_log`"
        ;;
    
    *)
        retjson 1 "UNKNOW_ACTION"
        ;;

esac
