#!/bin/sh

. ../common/ajax_common

if [ "${PALANG}" = "en" ]; then
	LANG001="Error"		#ʧ
	LANG002="Success"	#ɹ
	LANG003="Add_Group_URL"	#Ⱥ
	LANG004="Del_Group_URL"	#ɾȺ
	LANG005="Del_Group_URL"	#ɾȺ
	LANG006="Add_Group_URL"	#Ⱥ
	LANG007="Import_Group_URL"	#Ⱥ
	LANG008="Delete_Group_URL"	#Ⱥɾ
	LANG009="Delete_Group_URL"	#ɾȺ
	LANG010="num"	#ɾ
fi


list_dnsgrp()
{
    # type id name num summary
    ${FLOWEYE} dns listgrp | grep -i "${CGI_keyword}" | awk \
    'BEGIN{
        dot = "";
        printf "[";
    }{
        if($1 == "sys") next;
        col = 1;
        printf "%s{", dot;
        printf "\"type\":\"%s\",", $1;
        printf "\"id\":\"%s\",", $2;
        printf "\"name\":\"%s\",", $3;
        printf "\"num\":\"%s\"", $4;
        printf "}";
        if(dot == "") dot = ",";
    }END{
        printf "]";
    }'
}


get_dnsgrp()
{
    if [ "${CGI_id}" = "" ]; then
        printf "{\"total\":0,\"data\":[]}"
        return 
    fi

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

    ${FLOWEYE} dns dumpgrp ${CGI_id} | grep -i "${CGI_keyword}" | awk \
    -v end=${end} -v start=${start} -v id=${CGI_id} \
    'BEGIN{
        dot = "";
        row = 0;
        printf "{\"data\":[";
    }{
        row++;
        if(row > end || row < start) next;

        printf "%s", dot;
        printf "{";
        printf "\"row\":\"%s\",", row;
        printf "\"id\":\"%s\",", id;
        printf "\"name\":\"%s\"", $1;
        printf "}";
        if(dot == "") dot = ",";
    }END{
        printf "],\"total\":\"%s\"}", row;
    }'
}


add_dnsgrp()
{
    errmsg=`${FLOWEYE} dns addgrp ${CGI_name}`

    if [ "$?" != "0" ]; then
        retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "dns addgrp ${CGI_name}"
        WEB_LOGGER "${LANG003:=Ⱥ}" "dnsgrp=${CGI_name}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}


rmv_dnsgrp()
{
    errmsg=`${FLOWEYE} dns rmvgrp ${CGI_id}`

    if [ "$?" != "0" ]; then
        retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "dns rmvgrp ${CGI_id}"
        WEB_LOGGER "${LANG004:=ɾȺ}" "dnsgrp=${CGI_name}"
        retjson 0 "${LANG002:=ɹ}"
    fi
}


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

    WEB_LOGGER "${LANG005:=ɾȺ}" "items=${CGI_items}"
	retjson 0 "${LANG002:=ɹ}"
}


add_grpurl()
{
    if [ "${CGI_url}" != "" ] ;then
        errmsg=`${FLOWEYE} dns add ${CGI_id} "${CGI_url}"`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"
        sync_floweye "dns add ${CGI_id} ${CGI_url}"
        WEB_LOGGER "${LANG006:=Ⱥ}" "dnsgrp=${CGI_name} url=${CGI_url}"
    fi

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

        errmsg=`${FLOWEYE} dns loadfile ${CGI_id} ${ttfile}`
        [ $? -ne 0 ] && retjson 1 "${LANG001:=ʧ}${errmsg}"

        rm -rf "${CGI_file}"
        rm -rf "${ttfile}"
        
        WEB_LOGGER "${LANG007:=Ⱥ}" "dnsgrp=${CGI_name} url=${CGI_url}"
    fi

	retjson 0 "${LANG002:=ɹ}"
}


rmv_grpurl()
{
    errmsg=`${FLOWEYE} dns remove ${CGI_id} "${CGI_name}"`

    if [ "$?" != "0" ]; then
		retjson 1 "${LANG001:=ʧ}${errmsg}"
    else
        sync_floweye "dns remove ${CGI_id} ${CGI_name}"
        WEB_LOGGER "${LANG008:=Ⱥɾ}" "dnsgrp=${CGI_id} url=${CGI_name}"
		retjson 0 "${LANG002:=ɹ}"
    fi
}


btnrmv_grpurl()
{
    num=0

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

    WEB_LOGGER "${LANG009:=ɾȺ}" "${LANG010:=ɾ}=${num}"
	retjson 0 "${LANG002:=ɹ}"
}


export_dnsgrp()
{
    file_name="URLGroup_${CGI_name}.txt"
    file_path="${WEB_DOWNLOAD}/${file_name}"

    mkdir -p ${WEB_DOWNLOAD}
    ${FLOWEYE} dns dumpgrp ${CGI_id} > ${file_path}

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


case "${CGI_action}" in
    "list_dnsgrp")
        retjson 0 "OK" "`list_dnsgrp`"
        ;;
    
    "get_dnsgrp")
        retjson 0 "OK" "`get_dnsgrp`"
        ;;
    
    "add_dnsgrp")
        action_check
        add_dnsgrp
        ;;

    "rmv_dnsgrp")
        action_check
        rmv_dnsgrp
        ;;

    "btnrmv_dnsgrp")
        action_check
        btnrmv_dnsgrp
        ;;

    "add_grpurl")
        action_check
        add_grpurl
        ;;
    
    "rmv_grpurl")
        action_check
        rmv_grpurl
        ;;

    "btnrmv_grpurl")
        action_check
        btnrmv_grpurl
        ;;

    "export_dnsgrp")
        action_check
        export_dnsgrp
        ;;

    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
