#!/bin/sh

FLOWEYE="/usr/ramdisk/bin/floweye"


lib_bridge_list()
{
	# id bps_in bps_out tmp1 tmp2 name
	${FLOWEYE} bridge list format=long | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",",  $1;
		printf "\"name\":\"%s\"", $6;
		printf "}";
		if ( dot == "" ) dot = ",";
	}END{
		printf "]";
	}'
}


lib_interface_list()
{
	# name mode zone
	${FLOWEYE} if list | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"name\":\"%s\",", $1;
		printf "\"zone\":\"%s\"", $3;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_switch_port_list()
{
    ${FLOWEYE} switch list port=1 | awk \
    'BEGIN{
        dot = "";
        printf "[";
    }{
        if(NR == 1) next;
        if($1 == "S0/CPU" || $1 == "S1/CPU") next;

		printf "%s\"%s\"", dot, $1;
		if(dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_wangroup_list()
{
	# id name
	${FLOWEYE} wangroup list | awk -v empty=${1} \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		if(empty != "allow" && $3 == 0) next;

		col = 1;
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"type\":\"wg\",";
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_proxy_list()
{
	[ "${1}" != "" ] && _type=${1}
	[ "${CGI_type}" != "" ] && _type=${CGI_type}

	# type id name
	${FLOWEYE} nat listproxy type=${_type} | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"type\":\"%s\",", $1;
		printf "\"id\":\"%s\",", $2;
		printf "\"name\":\"%s\"", $3;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_plink_list()
{
	# name id
	${FLOWEYE} policy listlink | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $2;
		printf "\"name\":\"%s\"", $1;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_dnsgrp_list()
{
	# type id name num
	${FLOWEYE} dns listgrp | awk  \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"type\":\"%s\",",  $1;
		printf "\"id\":\"%s\",", $2;
		printf "\"name\":\"%s\"", $3;
		printf "}";
		if ( dot == "" ) dot = ",";
	}END{
		printf "]";
	}'
}


lib_urlfilter_list()
{
	# type id name
	${FLOWEYE} urlfilter listext | awk  \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if ( dot == "" ) dot = ",";
	}END{
		printf "]";
	}'
}


lib_iptable_list()
{
	# id name
	${FLOWEYE} table list | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_rtptime_list()
{
	# id name
	${FLOWEYE} rtptime list | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_ippool_list()
{
	temppoolid=`${FLOWEYE} pppoeippool stat | grep "^temppoolid="  | cut -d"=" -f2`

	# id name
	${FLOWEYE} pppoeippool list | awk \
	-v temppoolid="${temppoolid}" \
	'BEGIN{
		printf "[";
	}{
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\",", $2;
		printf "\"pid\":\"%s\"", $3;
		printf "},";
	}END{
		printf "{\"id\":\"%s\",\"name\":\"TempAccounts\",\"pid\":\"0\"}", temppoolid;
		printf "]";
	}'
}


lib_qtde_list()
{
	${NTMEYE} qtde list show_malc=1 | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\",", $2;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_radsvr_list()
{
	# id ip name
	${FLOWEYE} radsvr list | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $3;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}


lib_apptree_list()
{
	${FLOWEYE} app showtree all | awk \
	-v lang="${PALANG}" -v showany="${CGI_showany}" -v showtype="${CGI_showtype}" \
	'BEGIN{
		dot = "";
		pro_any = lang == "" ? "Э" : "any";
		pro_unk = lang == "" ? "δ֪Э" : "unknown";

		printf "[";

		if(showany == "") {
			dot = ",";
			printf "{";
			printf "\"pid\":\"1044\",";
			printf "\"id\":\"2000\",";
			printf "\"field\":\"any\",";
			printf "\"title\":\"%s\",", pro_any;
			printf "\"type\":\"sysapp\"";
			printf "}";
			printf "%s{", dot;
			printf "\"pid\":\"1044\",";
			printf "\"id\":\"2001\",";
			printf "\"field\":\"default\",";
			printf "\"title\":\"%s\",", pro_unk;
			printf "\"type\":\"sysapp\"";
			printf "}";
		}
	}{
		if($3 == "unknown" || $3 == "default") next;
		if(showtype != "" && $5 != showtype) next;

		title = lang == "" ? $4 : $3;

		printf "%s{", dot;
		if(dot == "") dot = ",";

		printf "\"pid\":\"%s\",", $1;
		printf "\"id\":\"%s\",", $2;
		printf "\"field\":\"%s\",", $3;
		printf "\"title\":\"%s\",", title;

		if($5 == "sysgrp" || $5 == "usragp") {
			printf "\"type\":\"%s\",", $5;
			printf "\"children\":[]";
		} else
			printf "\"type\":\"%s\"", $5;

		printf "}";
	}END{
		printf "]";
	}'
}


lib_datapie_list()
{
	# id name
	${FLOWEYE} policy listbwo | awk \
	'BEGIN{
		dot = "";
		printf "[";
	}{
		printf "%s", dot;
		printf "{";
		printf "\"id\":\"%s\",", $1;
		printf "\"name\":\"%s\"", $2;
		printf "}";
		if (dot == "") dot = ",";
	}END{
		printf "]";
	}'
}



lib_isp_list()
{
	isntm=`${NTMEYE} worker stat 2>&1 /dev/null`

	if [ $? -ne 0 ]; then
		printf "{\"isp\":[],\"country\":[]}"
		return
	fi

	printf "{"
	printf "\"isp\":["
	
	${FLOWEYE} ipdb list type=isp | awk \
	'BEGIN{
		dot = "";
	}{
		printf "%s\"%s\"", dot, $1;
		if ( dot == "") dot = ",";
	}'
	
	printf "],\"country\":["

	${FLOWEYE} ipdb list type=country | awk \
	'BEGIN{
		dot = "";
	}{
		printf "%s\"%s\"", dot, $1;
		if ( dot == "") dot = ",";
	}'

	printf "]}"
}


lib_threat_list()
{
	isntm=`${NTMEYE} worker stat 2>&1 /dev/null`

	if [ $? -ne 0 ]; then
		printf "[]"
		return
	fi

	${FLOWEYE} ntmmalicious list | awk \
    'BEGIN{
        dot = "";
        printf "[";
    }{
        col=1;
        printf "%s", dot;
        printf "{";
        printf "\"from\":\"%s\",", $(col++);

        if($1 == "custom") {
            printf "\"id\":\"%s\",", $(col++);
            printf "\"vid\":\"%s\",", $(col++);
            printf "\"name\":\"%s\",", $(col++);
            printf "\"enable\":\"%s\",", $(col++);
            printf "\"type\":\"%s\",", $(col++);
            printf "\"extable\":\"%s\",", $(col++);
            printf "\"total\":\"%s\",", $(col++);
            printf "\"lasttime\":\"%s\",", $(col++);
            printf "\"edittime\":\"%s\"", $(col++);
        } else {
            printf "\"id\":\"%s\",", $(col++);
            printf "\"name\":\"%s\",", $(col++);
            printf "\"cname\":\"%s\",", $(col++);
            printf "\"vendor\":\"%s\",", $(col++);
            printf "\"enable\":\"%s\",", $(col++);
            printf "\"total\":\"%s\",", $(col++);
            printf "\"lasttime\":\"%s\",", $(col++);
            printf "\"edittime\":\"%s\"", $(col++);
        }

        printf "}";
        if(dot == "") dot = ",";
    }END{
        printf "]";
    }'
}


lib_tun_list()
{
	${NTMEYE} tundata list showagp=1 | grep -v "can" | sort -nk1 | awk \
	'BEGIN{
		printf "[";
		printf "{";
		printf "\"id\":0";
		printf ",\"name\":\"-\"";
		printf "}";
	}{
		if (NF != 2) next;

		printf ",{";
		printf "\"id\":%s", $1;
		printf ",\"name\":\"%s\"", $2;
		printf "}";
	}END{
		printf "]";
	}'
}
