#!/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_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()
{
	# id name
	${FLOWEYE} pppoeippool list | 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_isp_list()
{
	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 "]}"
}
