#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"		#ʧ
	LANG002="Success"	#ɹ
	LANG003="Add_App_Node"		#Զڵ
	LANG004="Delete_App_Node"	#ɾԶڵ
	LANG005="Delete_App_Node"	#ɾԶЭڵ
	LANG006="num"	#ɾ
	LANG007="Import_App_Node"	#Эڵ
fi


load_user_node()
{
    [ "${CGI_page}" = "" ] && CGI_page=1
    [ "${CGI_limit}" = "" ] && CGI_limit=100
    [ "${CGI_appname}" = "any" ] && CGI_appname=""
    [ "${CGI_appname}" != "" ] && CGI_type=""

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

	${FLOWEYE} usernode list | grep -i "${CGI_keyword}" | awk \
    -v appname="${CGI_appname}" -v type=${CGI_type} \
    -v start=${start} -v end=${end} \
	'BEGIN{
        row = 0;
        dot = "";
        printf "{\"data\":[";
	}{
        if(appname != "" && $1 != appname) next;
        if(type != "" && $4 != type) next;

		row++;
		if( row > end  || row < start ) next;

		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"appname\":\"%s\",", $(col++);
		printf "\"ip\":\"%s\",", $(col++);
		printf "\"port\":\"%s\",", $(col++);
		printf "\"type\":\"%s\",", $(col++);
		printf "\"appcname\":\"%s\"", $(col++);
		printf "}";
		if(dot == "") dot = ",";
	}END{
        printf "],\"total\":%s}", row;
	}'
}


add_user_node()
{
    for item in ${CGI_items}
    do
        ip=`echo ${item} | cut -d":" -f1`
        port=`echo ${item} | cut -d":" -f2`
        errmsg=`${FLOWEYE} usernode add ip=${ip} port=${port} app=${CGI_appname}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
        sync_floweye "usernode add ip=${ip} port=${port} app=${CGI_appname}"
    done

    WEB_LOGGER "${LANG003:=Զڵ}" app=${CGI_appname}
	retjson 0 "${LANG002:=ɹ}"
}


rmv_user_node()
{
    errmsg=`${FLOWEYE} usernode remove ip=${CGI_ip} port=${CGI_port}`
    
    if [ $? -ne 0 ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "usernode remove ip=${CGI_ip} port=${CGI_port}"
        WEB_LOGGER "${LANG004:=ɾԶڵ}" ip=${CGI_ip} port=${CGI_port} app=${CGI_appname}
		retjson 0 "${LANG002:=ɹ}"
    fi
}


btn_rmv_user_node()
{
    num=0
    for item in `echo ${CGI_items} | tr ";" " "`
    do
        ip=`echo ${item} | cut -d":" -f1`
        port=`echo ${item} | cut -d":" -f2`
        errmsg=`${FLOWEYE} usernode remove ip=${ip} port=${port}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
        sync_floweye "usernode remove ip=${ip} port=${port}"
        num=$((${num}+1))
    done

    WEB_LOGGER "${LANG005:=ɾԶЭڵ}" "${LANG006:=ɾ}=${num}"
    retjson 0 "${LANG002:=ɹ}"
}


import_user_node()
{
    [ ! -f "${CGI_file}" ] && retjson 1 "INV_FILE"

    ttfile="${TMPDIR}/`date +%s`.$$"
    cat ${CGI_file} | tr -ds '\r' '' > ${ttfile}

    while read ip port
    do
        errmsg=`${FLOWEYE} usernode add ip=${ip} port=${port} app=${CGI_appname}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
    done <<EOF
`cat ${ttfile}`
EOF

    rm -rf "${CGI_file}"
    rm -rf "${ttfile}"

    WEB_LOGGER "${LANG007:=Эڵ}" "app=${CGI_appname}"
    retjson 0 "${LANG002:=ɹ}"
}


export_user_node()
{
    [ "${CGI_appname}" = "" ] && retjson 1 "INV_APP"

	file_name="APPNode_${CGI_appname}.conf"
	file_path="${WEB_DOWNLOAD}/${file_name}"

	mkdir -p ${WEB_DOWNLOAD}

    ${FLOWEYE} usernode list | grep "^${CGI_appname} " | cut -d" " -f2,3 > ${file_path}

	retjson 0 "OK" "\"${file_name}\""
}


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

    "add_user_node")
        action_check
        add_user_node
        ;;

    "rmv_user_node")
        action_check
        rmv_user_node
        ;;

    "btn_rmv_user_node")
        action_check
        btn_rmv_user_node
        ;;

    "import_user_node")
        action_check
        import_user_node
        ;;

    "export_user_node")
        action_check
        export_user_node
        ;;

    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
