Files
network_tools/var/www/cgi-bin/vpn-admin_board.cgi

795 lines
27 KiB
Bash
Executable File

#!/bin/bash
time_in=$(date +%s%N)
. /usr/local/lib/network.bash
#--------------------------------------------------------------------------------------------------------------------------
# Header Print
#--------------------------------------------------------------------------------------------------------------------------
Header_Print ()
{
case "${format}"
in
"html")
echo "Content-type: text/html"
echo ""
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">"
echo "<HTML>"
echo " <HEAD>"
echo " <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">"
echo " <META http-equiv=\"Refresh\" content=\"300\">"
echo " <META http-equiv=\"Pragma\" content=\"no-cache\">"
echo " <LINK REL=\"shortcut icon\" HREF=\"/favicon.ico\" TYPE=\"image/x-icon\">"
echo " <LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"/tdsots/default.css\">"
if [[ "${cmd_status}" == "" ]]
then
echo " <TITLE>Rx3 VPN Admin Board</Title>"
else
echo " <TITLE>Rx3 VPN Admin Board: ${cmd_status}</Title>"
fi
if [[ "${redirect}" != "" ]]
then
echo " <meta http-equiv=\"REFRESH\" content=\"1; URL=${redirect}\">"
fi
echo " </HEAD>"
echo " <BODY>"
;;
"csv")
echo "Content-type: text/csv"
echo ""
echo "SOF"
if [[ "${redirect}" != "" ]]
then
echo "CMD: ${cmd_status}"
fi
;;
"txt")
echo "Content-disposition: attachment; filename=${file_name}"
echo "Content-type: text/plain"
echo ""
;;
esac
}
#--------------------------------------------------------------------------------------------------------------------------
# Tailer
#--------------------------------------------------------------------------------------------------------------------------
Footer_Print ()
{
case "${format}"
in
"html")
echo " </BODY>"
echo ""
echo "</HTML>"
;;
"csv")
echo ""
echo "EOF"
;;
esac
}
#--------------------------------------------------------------------------------------------------------------------------
# Destination Status Board
#--------------------------------------------------------------------------------------------------------------------------
Destination_Status_Board ()
{
if [[ "${format}" == "html" ]]
then
echo " <P>"
echo " <BR>"
echo " </P>"
echo ""
echo " <H2>Destination Status Board</H2>"
echo ""
echo " <TABLE BORDER=\"1\" WIDTH=\"100%\">"
echo " <TR class=\"header\"><TD class=\"header\">#</TD><TD>Name</TD><TD>Type</TD><TD>Device</TD><TD>Address</TD><TD>Config</TD><TD>Table</TD><TD>Status</TD><TD>Bytes In</TD><TD>Bytes Out</TD><TD>UpTime</TD></TR>"
else
echo "TABLE: Destination_Status_Board"
echo "#;Name;Type;Device;Address;Config;Table;Status;Bytes In;Bytes Out;UpTime"
fi
for dst_id in ${NETWORK_DST_ID_LIST}
do
network_dst_tab_get ${dst_id}
if [[ ${dst_status} == 0 ]]
then
dst_ip="-"
fi
if [[ "${format}" == "html" ]]
then
echo -n "<TR><TD class="header">${dst_id}</TD><TD>${dst_name}</TD><TD>${NETWORK_DST_TYPE[${dst_type}]}</TD><TD>${dst_device}</TD><TD>${dst_ip}</TD><TD>${dst_config}</TD><TD>${dst_table}</TD><TD>"
if [[ "${dst_status}" == 1 ]]
then
echo -n "<IMG SRC=\"/icons/user-online.png\" TITLE=\"Up\" ALT=\"Up\"></TD>"
else
echo -n "<IMG SRC=\"/icons/user-busy.png\" TITLE=\"Down\" ALT=\"Down\"></TD>"
fi
echo "<TD>${dst_bytes_received:--}</TD><TD>${dst_bytes_sent:--}</TD><TD>${dst_uptime:--}</TD>"
else
echo "${dst_id};${dst_name};${NETWORK_DST_TYPE[${dst_type}]};${dst_device};${dst_ip};${dst_config};${dst_table};${dst_status};${dst_bytes_received};${dst_bytes_sent};${dst_uptime}"
fi
done
if [[ "${format}" == "html" ]]
then
echo " </TABLE>"
echo " <P>"
echo " <BR>"
echo " </P>"
echo ""
else
echo ""
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# Source Routing Board Line
#--------------------------------------------------------------------------------------------------------------------------
Source_Routing_Board_Line()
{
src_id=$1
network_src_tab_get ${src_id}
if [[ ( "${filter}" == "") || ( "${filter}" == "owner") || ( "${filter}" == "${src_owner}") ]]
then
if [[ ( "${admin}" == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
class="default"
else
if [[ "${filter}" == "owner" ]]
then
class="skip"
else
class="dark"
fi
fi
else
# filter == user not owner of this line
class="skip"
fi
if [[ "${class}" != "skip" ]]
then
host_name=${src_name}
if [[ "${format}" == "html" ]]
then
echo -n "<TR class="${class}"><TD class="header">${src_id}</TD>"
echo -n "<TD>${NETWORK_SRC_TYPE[${src_type}]}</TD><TD>${src_ip}</TD><TD>${host_name}</TD>"
echo -n "<TD>${src_device}</TD>"
case "${src_status:--}"
in
"0")
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Down\" ALT=\"Down\"></TD>"
;;
"1")
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Up\" ALT=\"Up\"></TD>"
;;
"2")
echo -n "<TD>-</TD>"
;;
esac
else
echo -n "${src_id};${NETWORK_SRC_TYPE[${src_type}]};${src_ip};${host_name};${src_device};${status};"
fi
for dst_id in ${NETWORK_DST_ID_LIST}
do
network_dst_tab_get ${dst_id}
if [[ "${format}" == "html" ]]
then
echo -n "<TD><TABLE class=\"${class}\" BORDER=\"0\" WIDTH=\"100%\"><TR><TD class=\"half\">"
if [[ "${dst_table}" == "${src_table}" ]]
then
echo -n "<IMG SRC=\"/icons/user-online.png\" TITLE=\"Up\" ALT=\"Up\"></TD><TD>&nbsp;"
else
echo -n "<IMG SRC=\"/icons/user-busy.png\" TITLE=\"Down\" ALT=\"Down\"></TD><TD>"
if [[ ( ${admin} == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
echo -n "<A HREF=\"?cmd=route_set&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;vpn=${dst_id}\"><IMG SRC=\"/icons/user-invisible.png\" TITLE=\"Activate\" ALT=\"Activate\"></A>"
else
echo -n "&nbsp;"
fi
fi
echo -n "</TD></TR></TABLE></TD>"
else
if [[ "${dst_table}" == "${src_table}" ]]
then
echo -n "1;"
else
echo -n "0;"
fi
fi
done
if [[ "${format}" == "html" ]]
then
if [[ "${port_range}" != "0" ]]
then
echo -n "<TD>${src_port_range}</TD><TD>${src_port_start:--}</TD><TD>${src_port_end:--}</TD>"
else
echo -n "<TD>${src_port_range}</TD><TD>-</TD><TD>-</TD>"
fi
echo "<TD><A HREF=\"?admin=${admin}&amp;filter=${src_owner}\">${src_owner}</A></TD><TD>${src_bytes_received:--}</TD><TD>${src_bytes_sent:--}</TD><TD>${src_uptime:--}</TD><TD>${src_last_seen:--}</TD></TR>"
else
echo "${src_port_range};${src_port_start};${src_port_end};${src_owner};${src_bytes_received};${src_bytes_sent};${src_uptime};${src_last_seen}"
fi
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# Source Routing Board
#--------------------------------------------------------------------------------------------------------------------------
Source_Routing_Board()
{
if [[ "${format}" == "html" ]]
then
echo " <P>"
echo " <BR>"
echo " </P>"
echo ""
echo " <H2>Source Routing Board</H2>"
echo ""
echo " <TABLE BORDER=\"1\" WIDTH=\"100%\">"
echo -n " <TR class="header"><TD class="header">#</TD><TD>Type</TD><TD>IP</TD><TD>Host Name</TD><TD>Device</TD><TD>Status</TD>"
else
echo "TABLE: Source_Routing_Board"
echo -n "#;Type;IP;Host Name;Status;Device;"
fi
for dst_id in ${NETWORK_DST_ID_LIST}
do
network_dst_tab_get ${dst_id}
if [[ "${format}" == "html" ]]
then
echo -n "<TD>${dst_name}</TD>"
else
echo -n "${dst_name};"
fi
done
if [[ "${format}" == "html" ]]
then
echo "<TD>Port Range</TD><TD>From Port</TD><TD>To Port</TD><TD>Owner</TD><TD>Bytes In</TD><TD>Bytes Out</TD><TD>UpTime</TD><TD>Last Seen</TD></TR>"
else
echo "Port Range;From Port;To Port;Owner;Bytes In;Bytes Out;UpTime;Last Seen"
fi
for src_id in ${NETWORK_SRC_ID_LIST}
do
Source_Routing_Board_Line ${src_id}
done
if [[ "${format}" == "html" ]]
then
echo " </TABLE>"
echo " <P>"
echo " <BR>"
echo " </P>"
else
echo ""
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# OpenVPN Board
#--------------------------------------------------------------------------------------------------------------------------
VPN_OpenVPN_Board()
{
if [[ "${format}" == "html" ]]
then
echo " <P>"
echo " <BR>"
echo " </P>"
echo ""
echo " <H2>OpenVPN Board</H2>"
echo ""
echo " <TABLE BORDER=\"1\" WIDTH=\"100%\">"
echo -n " <TR class="header"><TD class="header" ROWSPAN=3>#</TD><TD ROWSPAN=3>IP</TD><TD ROWSPAN=3>Host Name</TD><TD COLSPAN=4>Configuration</TD><TD COLSPAN=5>Certificates</TD></TR><TR class=\"header\"><TD COLSPAN=2>Default Route VPN</TD><TD COLSPAN=2>No Default Route VPN</TD><TD ROWSPAN=2>CA Certificate (.crt)</TD><TD ROWSPAN=2>TC Certificate (.key)</TD><TD ROWSPAN=2>Private Key (.key)</TD><TD ROWSPAN=2>Cerificate Signing Request (.csr)</TD><TD ROWSPAN=2>Public Certificate (.crt)</TD></TR><TR class=\"header\"><TD>External Crt</TD><TD>Inline Crt</TD><TD>External Crt</TD><TD>Inline Crt</TD></TR>"
else
echo "TABLE: OpenVPN_Board"
echo "#;IP;Host Name;Certificate"
fi
for src_id in ${NETWORK_SRC_ID_LIST}
do
network_src_tab_get ${src_id}
if [[ "${src_type}" == 1 ]]
then
if [[ ( "${filter}" == "") ||( "${filter}" == "owner") || ( "${filter}" == "${src_owner}") ]]
then
if [[ ( "${admin}" == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
class="default"
else
if [[ "${filter}" == "owner" ]]
then
class="skip"
else
class="dark"
fi
fi
else
# filter == user not owner of this line
class="skip"
fi
if [[ "${class}" != "skip" ]]
then
if [[ "${format}" == "html" ]]
then
echo -n "<TR class=\"${class}\"><TD class=\"header\">${src_id}</TD><TD>${src_ip}</TD><TD>${src_name}</TD>"
echo -n "<TD><A HREF=\"?cmd=config_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;defroute=true&amp;type=ext\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration Default Route External Certificates\" ALT=\"Configuration External Certificates\"></A></TD>"
if [[ ( "${admin}" == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
echo -n "<TD><A HREF=\"?cmd=config_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;defroute=true&amp;type=inline\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration Default Route Inline Certificates\" ALT=\"Configuration Inline Certificates\"></A></TD>"
else
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration Inline Certificates\" ALT=\"Configuration Inline Certificates\"></TD>"
fi
echo -n "<TD><A HREF=\"?cmd=config_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;defroute=false&amp;type=ext\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration NoDefault Route External Certificates\" ALT=\"Configuration External Certificates\"></A></TD>"
if [[ ( "${admin}" == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
echo -n "<TD><A HREF=\"?cmd=config_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;defroute=false&amp;type=inline\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration NoDefault Route Inline Certificates\" ALT=\"Configuration Inline Certificates\"></A></TD>"
else
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Configuration Inline Certificates\" ALT=\"Configuration Inline Certificates\"></TD>"
fi
else
echo -n "${src_id};${src_ip};${src_name}"
fi
if [[ "${format}" == "html" ]]
then
echo -n "<TD><A HREF=\"?cmd=cert_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;type=ca\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"CA Certificate\" ALT=\"CA Certificate\"></A></TD>"
if [[ ( "${admin}" == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
echo -n "<TD><A HREF=\"?cmd=cert_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;type=tc\" ><IMG SRC=\"/icons/user-online.png\" TITLE=\"TC Certificate\" ALT=\"TC Certificate\"></A></TD>"
if [[ -f /etc/openvpn/tls/certs/${src_name}.crt ]]
then
echo -n "<TD><A HREF=\"?cmd=cert_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;type=key\"><IMG SRC=\"/icons/user-online.png\" TITLE=\"Private Key\" ALT=\"Private Key\"></A></TD>"
echo -n "<TD><A HREF=\"?cmd=cert_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;type=csr\"><IMG SRC=\"/icons/user-online.png\" TITLE=\"Certificate Signing Request\" ALT=\"Certificat Signing Request\"></A></TD>"
echo -n "<TD><A HREF=\"?cmd=cert_download&amp;admin=${admin}&amp;filter=${filter}&amp;ip=${src_ip}&amp;type=crt\"><IMG SRC=\"/icons/user-online.png\" TITLE=\"Public Certificate\" ALT=\"Public Certificate\"></A></TD></TR>"
else
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Private Key\" ALT=\"Private Key\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Certificat Signing Request\" ALT=\"Certificat Signing Request\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Public Certificate\" ALT=\"Public Certificate\"></TD></TR>"
fi
else
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"TC Certificate\" ALT=\"TC Certificate\"></TD>"
if [[ -f /etc/openvpn/tls/certs/${src_name}.crt ]]
then
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Private Key\" ALT=\"Private Key\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Certificat Signing Request\" ALT=\"Certificat Signing Request\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-online.png\" TITLE=\"Public Certificate\" ALT=\"Public Certificate\"></TD></TR>"
else
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Private Key\" ALT=\"Private Key\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Certificat Signing Request\" ALT=\"Certificat Signing Request\"></TD>"
echo -n "<TD><IMG SRC=\"/icons/user-busy.png\" TITLE=\"Public Certificate\" ALT=\"Public Certificate\"></TD></TR>"
fi
fi
else
if [[ -f /etc/openvpn/tls/certs/${src_name}.crt ]]
then
echo ";1"
else
echo ";0"
fi
fi
fi
fi
done
if [[ "${format}" == "html" ]]
then
echo " </TABLE>"
echo " <P>"
echo " <BR>"
echo " </P>"
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# Main Board Print
#--------------------------------------------------------------------------------------------------------------------------
Main_Board_Print ()
{
if [[ "${format}" == "html" ]]
then
echo ""
if [[ "${admin}" == "true" ]]
then
admin_mode=" - Admin Mode"
else
admin_mode=""
fi
case "${filter}"
in
"owner")
filter_mode="My VPN"
;;
"")
filter_mode="All VPN"
;;
*)
filter_mode="${filter} VPN"
;;
esac
echo " <H1>VPN Admin Board: ${filter_mode}${admin_mode}</H1>"
echo " <P>"
echo " <BR>"
echo ""
echo " <b>Date: $(/bin/date)</b><br>"
echo " </P>"
echo " <HR>"
echo ""
fi
Destination_Status_Board
Source_Routing_Board
VPN_OpenVPN_Board
if [[ "${format}" == "html" ]]
then
echo " <P>"
echo " <BR>"
echo " <BR>"
echo -n " "
if [[ " ${ADMIN_USER_LIST} " == *" ${REMOTE_USER} "* ]]
then
if [[ "${admin}" == "true" ]]
then
echo -n "<A HREF=\"?filter=${filter}\">Non Admin Mode</A>"
else
echo -n "<A HREF=\"?admin=true&amp;filter=${filter}\">Admin Mode</A>"
fi
echo -n "&nbsp;&nbsp;&nbsp;"
fi
if [[ "${filter}" != "" ]]
then
echo -n "<A HREF=\"?admin=${admin}\">All VPN</A>"
fi
echo ""
echo " </P>"
time_out=$(date +%s%N)
elaps=$((${time_out} - ${time_in}))
elaps_sec=$((${elaps} / 1000000000))
elaps_mili=$(( ( ${elaps} / 1000000) - ( ${elaps_sec} * 1000)))
echo " <P>"
echo " <BR>"
echo " <BR>"
printf "Page generated in %d.%03d seconds" ${elaps_sec} ${elaps_mili}
echo " </P>"
echo ""
echo " <HR>"
echo ""
echo " <P>"
echo " <A HREF=\"/tdsots/admin/\">Rx3 Admin</A>"
echo " </P>"
echo ""
echo " <HR>"
echo ""
echo " <P>"
echo " <A HREF=\"http://www.hertgen.com/anybrowser/\"> <IMG SRC=\"/images/anyb09.png\" ALT=\"Best Viewed With Any Browser\"></A>"
echo " <A HREF=\"http://validator.w3.org/check?uri=referer\"><IMG SRC=\"/images/valid-html401.png\" ALT=\"Valid HTML 4.01!\"></A>"
echo " <A HREF=\"http://jigsaw.w3.org/css-validator/\"> <IMG SRC=\"/images/valid-css.png\" ALT=\"Valid CSS!\"></A>"
echo " </P>"
fi
}
#--------------------------------------------------------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------------------------------
# Args
#--------------------------------------------------------------------------------------------------------------------------
cmd=""
format=""
filter=""
ip=""
vpn=""
type=""
redirect=""
cmd_status=""
admin=""
if [[ "${QUERY_STRING}" != "" ]]
then
OIFS=${IFS}
IFS="\&"
set ${QUERY_STRING}
IFS=${OIFS}
i=$#
while [[ "${i}" != 0 ]]
do
var=${1/=*/}
arg=${1/*=/}
case "${var}"
in
"cmd")
cmd=${arg}
;;
"format")
format=${arg}
;;
"admin")
admin=${arg}
;;
"filter")
filter=${arg}
;;
"ip")
ip=${arg}
;;
"vpn")
vpn=${arg}
;;
"type")
type=${arg}
;;
"filename")
filename=${arg}
;;
"defroute")
defroute=${arg}
;;
esac
shift
i=$((i - 1))
done
fi
if [[ "${format}" == "" ]]
then
format="html"
fi
#--------------------------------------------------------------------------------------------------------------------------
# Command Handler
#--------------------------------------------------------------------------------------------------------------------------
network_tab_load
#network_tab_dump
if [[ ( ${admin} == "true") && ( " ${ADMIN_USER_LIST} " != *" ${REMOTE_USER} "*) ]]
then
cmd_status="${cmd}: Admin NOT_AUTHORIZED"
redirect="?filter=${filter}"
Header_Print
Footer_Print
else
case "${cmd}"
in
"")
Header_Print
Main_Board_Print
Footer_Print
;;
"route_set")
network_src_tab_ip_lookup "${ip}"
network_src_tab_get "${src_id}"
if [[ ( ${admin} == "true") || ( "${REMOTE_USER}" == "${src_owner}") ]]
then
sudo /usr/local/sbin/rx3_net_adm table_set ${ip} $((${vpn} + 3)) 1>&2
if [[ "$?" == 0 ]]
then
cmd_status="route_set: OK"
else
cmd_status="route_set: KO"
fi
else
cmd_status="route_set: NOT_AUTHORIZED [${REMOTE_USER}]/[${src_owner}]"
fi
redirect="?admin=${admin}&amp;filter=${filter}"
Header_Print
Footer_Print
;;
"cert_download")
network_src_tab_ip_lookup "${ip}"
network_src_tab_get "${src_id}"
if [[ ( ${admin} == "true") || ( "${REMOTE_USER}" == "${src_owner}") || ( "${type}" == "ca") || ( "${type}" == "crt") ]]
then
cmd_status="cert_download: OK"
format="txt"
case "${type}"
in
"ca")
file_name="ca.crt"
host_name=""
;;
"tc")
file_name="tc.key"
host_name=""
;;
*)
host_name=$(host ${ip} | sed -e 's/.*domain name pointer //' -e 's/.$//')
file_name="${host_name}.${type}"
;;
esac
Header_Print
sudo /usr/local/sbin/cert_dump ${type} ${host_name}
else
cmd_status="cert_download: NOT_AUTHORIZED"
redirect="?admin=${admin}&amp;filter=${filter}"
format="html"
Header_Print
Footer_Print
fi
;;
"config_download")
network_src_tab_ip_lookup "${ip}"
network_src_tab_get "${src_id}"
if [[ ( ${admin} == "true") || ( "${REMOTE_USER}" == "${src_owner}") || ( "${type}" == "ext") ]]
then
cmd_status="config_download: OK"
host_name=$(host ${ip} | sed -e 's/.*domain name pointer //' -e 's/.$//')
template_name="rx3-client.ovpn"
if [[ "${defroute}" == "false" ]]
then
defroute_pipe="sed s/#pull-filter/pull-filter/"
route_type="nodefroute"
else
defroute_pipe="cat"
route_type="defroute"
fi
format="txt"
if [[ "${type}" == "ext" ]]
then
file_name="${host_name}-${route_type}-external.ovpn"
Header_Print
sed </etc/openvpn/template/${template_name} -e "s/CLIENT_FQDN/${host_name}/g" | ${defroute_pipe}
else
file_name="${host_name}-${route_type}-inline.ovpn"
Header_Print
eval "echo \"$( sed </etc/openvpn/template/${template_name} -e "s/ca tls\/certs\/ca.crt/\$(echo \"<ca>\"; sudo \/usr\/local\/sbin\/cert_dump ca; echo \"<\/ca>\")/" -e "s/cert tls\/certs\/CLIENT_FQDN.crt/\$(echo \"<cert>\"; sudo \/usr\/local\/sbin\/cert_dump crt CLIENT_FQDN; echo \"<\/cert>\")/" -e "s/key tls\/private\/CLIENT_FQDN.key/\$(echo \"<key>\"; sudo \/usr\/local\/sbin\/cert_dump key CLIENT_FQDN; echo \"<\/key>\")/" -e "s/tls-crypt tls\/private\/tc.key/\$(echo \"<tls-crypt>\"; sudo \/usr\/local\/sbin\/cert_dump tc; echo \"<\/tls-crypt>\")/" -e "s/CLIENT_FQDN/${host_name}/g")\"" | ${defroute_pipe}
fi
else
cmd_status="config_download: NOT_AUTHORIZED"
redirect="?admin=${admin}&amp;filter=${filter}"
format="html"
Header_Print
Footer_Print
fi
;;
*)
cmd_status="${cmd}: UNKNOWN_CMD"
Header_Print
Footer_Print
;;
esac
fi