#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"		#ʧ
	LANG002="Success"	#ɹ
	LANG003="Del_User_App"	#ɾԶЭ
	LANG004="Edit_User_App"		#༭ԶЭ
	LANG005="Load_Port_Fail"	#ض˿ʧ
	LANG006="Clear_Port_Fail"	#˿ʧ
	LANG007="Add_User_App"		#ԶЭ
	LANG008="Add_App_Fail"		#ԶЭʧ
	LANG009="UDP_PORT_EXISTS"	#UDP˿ͬж˿ظ
	LANG010="TCP_PORT_EXISTS"	#TCP˿ͬж˿ظ
    LANG011="Error"
fi


load_user_app_list()
{
    printf "["

    ${FLOWEYE} app showtree all | grep -i "${CGI_keyword}" | while read pid id appname appcname type
    do
        [ "${type}" != "usrapp" ] && continue

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

        ${FLOWEYE} app get ${appname} | awk -F"=" \
        'BEGIN{
            dot = "";
            printf "{";
        }{
            printf "%s\"%s\":\"%s\"", dot, $1, $2;
            if (dot == "") dot = ",";
        }END{
            printf "}";
        }'
    done

    printf "]"
}


load_user_app_dict()
{
    ${FLOWEYE} app showtree all | awk \
    'BEGIN{
        printf "{";   
    }{
        if($5 != "usrapp") next;
        printf "%s\"%s\":\"%s\"", dot, $3, $4;
        if(dot == "") dot = ",";
    }END{
        printf "}";
    }'
}


add_user_app()
{
    cmdargs=""
    portargs=""

    if [ "${CGI_tports}" != "" ]; then
        exists=`${FLOWEYE} port test ${CGI_tports}`
        [ "${exists}" = "EXIST" ] && retjson 1 "${LANG010:=TCP˿ͬж˿ظ}"
        cmdargs="${cmdargs} tports=${CGI_tports}"
        portargs="${portargs} tcp=${CGI_tports}"
    fi

    if [ "${CGI_uports}" != "" ]; then
        exists=`${FLOWEYE} port test ${CGI_uports}`
        [ "${exists}" = "EXIST" ] && retjson 1 "${LANG009:=UDP˿ͬж˿ظ}"
        cmdargs="${cmdargs} uports=${CGI_uports}"
        portargs="${portargs} udp=${CGI_uports}"
    fi

    errmsg=`${FLOWEYE} app add name=${CGI_name} cname=${CGI_cname} nodettl=${CGI_nodettl} ${cmdargs}`
    [ $? -ne 0 ] && retjson 1 "${LANG008:=ԶЭʧ}:${errmsg}"
    sync_floweye "app add name=${CGI_name} cname=${CGI_cname} nodettl=${CGI_nodettl} ${cmdargs}"

    if [ "${portargs}" != "" ]; then
        errmsg=`${FLOWEYE} port load ${CGI_name} ${portargs}`
        [ $? -ne 0 ] && retjson 1 "${LANG005:=ض˿ʧ}:${errmsg}"
        sync_floweye "port load ${CGI_name} ${portargs}"
    fi

    WEB_LOGGER "${LANG007:=ԶЭ}" name=${CGI_name} cname=${CGI_cname} nodettl=${CGI_nodettl} ${cmdargs}
    retjson 0 "${LANG002:=ɹ}"
}


edit_user_app()
{
    if [ "${CGI_tports}" = "" -a "${CGI_uports}" = "" ]; then
        errmsg=`${FLOWEYE} port clear ${CGI_name}`
        sync_floweye "port clear ${CGI_name}"
        [ $? -ne 0 ] && retjson 1 "${LANG006:=˿ʧ}:${errmsg}"
    else
        args=""
        [ "${CGI_tports}" != "" ] && args="tcp=${CGI_tports}"
        [ "${CGI_uports}" != "" ] && args="${args} udp=${CGI_uports}"
        errmsg=`${FLOWEYE} port load ${CGI_name} ${args}`
        sync_floweye "port load ${CGI_name} ${args}"
        [ $? -ne 0 ] && retjson 1 "${LANG005:=ض˿ʧ}:${errmsg}"
    fi

    if [ "${CGI_nodettl}" != "" ]; then
        cmdargs="app set ${CGI_name} nodettl=${CGI_nodettl}"
        errmsg=`${FLOWEYE} ${cmdargs}`
        [ $? -ne 0 ] && retjson 1 "${LANG011:=ýڵڳִ}${errmsg}"
        sync_floweye ${cmdargs}
    fi

    WEB_LOGGER "${LANG004:=༭ԶЭ}" "name=${CGI_name}"
    retjson 0 "${LANG002:=ɹ}"
}


rmv_user_app()
{
    for app in ${CGI_data}
    do
        errmsg=`${FLOWEYE} app remove ${app}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
    done

    sync_floweye "app remove ${app}"
    WEB_LOGGER "${LANG003:=ɾԶЭ}" ${CGI_data}
    retjson 0 "${LANG002:=ɹ}"
}


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

    "load_user_app_dict")
        retjson 0 "OK" "`load_user_app_dict`"
        ;;

    "add_user_app")
        action_check
        add_user_app
        ;;

    "edit_user_app")
        action_check
        edit_user_app
        ;;

    "rmv_user_app")
        action_check
        rmv_user_app
        ;;

    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
