/* Handle AJAX */ if ($_GET['action']) { if ($_GET['action'] == "kill") { $port = $_GET['port']; $remipp = $_GET['remipp']; if (!empty($port) and !empty($remipp)) { $retval = openvpn_kill_client($port, $remipp); echo htmlentities("|{$port}|{$remipp}|{$retval}|"); } else { echo gettext("invalid input"); } exit; } } $servers = openvpn_get_active_servers(); $sk_servers = openvpn_get_active_servers("p2p"); $clients = openvpn_get_active_clients(); include "head.inc"; ?> <form action="status_openvpn.php" method="get" name="iform"> <script type="text/javascript"> //<![CDATA[ function killClient(mport, remipp) { var busy = function(index,icon) { $(icon).bind("onclick",""); $(icon).attr('src',$(icon).attr('src').replace("\.gif", "_d.gif")); $(icon).css("cursor","wait"); } $('img[name="i:' + mport + ":" + remipp + '"]').each(busy);
function printPanel() { $servers = openvpn_get_active_servers(); $sk_servers = openvpn_get_active_servers("p2p"); $clients = openvpn_get_active_clients(); $opstring = ""; foreach ($servers as $server) { $opstring .= "<div class=\"widget panel panel-default\">"; $opstring .= "<div class=\"panel-heading\"><h2 class=\"panel-title\">" . htmlspecialchars($server['name']) . "</h2></div>"; $opstring .= "<div class=\"table-responsive\">"; $opstring .= "<table class=\"table table-striped table-hover table-condensed sortable-theme-bootstrap\" data-sortable>"; $opstring .= "<thead>"; $opstring .= "<tr>"; $opstring .= "<th>" . gettext('Name/Time') . "</th>"; $opstring .= "<th>" . gettext('Real/Virtual IP') . "</th>"; $opstring .= "<th></th>"; $opstring .= "</tr>"; $opstring .= "</thead>"; $opstring .= "<tbody>"; $rowIndex = 0; foreach ($server['conns'] as $conn) { $evenRowClass = $rowIndex % 2 ? " listMReven" : " listMRodd"; $rowIndex++; $opstring .= "<tr name=\"" . "r:" . $server['mgmt'] . ":" . $conn['remote_host'] . "\" class=\"" . $evenRowClass . "\">"; $opstring .= "<td>"; $opstring .= $conn['common_name']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $conn['remote_host']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= "<i class=\"fa fa-times-circle\" "; $opstring .= "onclick=\"killClient('" . $server['mgmt'] . "', '" . $conn['remote_host'] . "');\" "; $opstring .= "style=\"cursor:pointer;\" "; $opstring .= "name=\"" . "i:" . $server['mgmt'] . ":" . $conn['remote_host'] . "\" "; $opstring .= "title=\"" . sprintf(gettext('Kill client connection from %s'), $conn['remote_host']) . "\">"; $opstring .= "</i>"; $opstring .= "</td>"; $opstring .= "</tr>"; $opstring .= "<tr name=\"" . "r:" . $server['mgmt'] . ":" . $conn['remote_host'] . "\" class=\"" . $evenRowClass . "\">"; $opstring .= "<td>"; $opstring .= $conn['connect_time']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $conn['virtual_addr']; $opstring .= "</td>"; $opstring .= "<td></td>"; $opstring .= "</tr>"; } $opstring .= "</tbody>"; $opstring .= "</table>"; $opstring .= "</div>"; $opstring .= "</div>"; } print $opstring; if (!empty($sk_servers)) { $opstring = ""; $opstring .= "<div class=\"widget panel panel-default\">"; $opstring .= "<div class=\"panel-heading\"><h2 class=\"panel-title\">" . gettext("Peer to Peer Server Instance Statistics") . "</h2></div>"; $opstring .= "<div class=\"table-responsive\">"; $opstring .= "<table class=\"table table-striped table-hover table-condensed sortable-theme-bootstrap\" data-sortable>"; $opstring .= "<thead>"; $opstring .= "<tr>"; $opstring .= "<th>" . gettext('Name/Time') . "</th>"; $opstring .= "<th>" . gettext('Remote/Virtual IP') . "</th>"; $opstring .= "<th></th>"; $opstring .= "</tr>"; $opstring .= "</thead>"; $opstring .= "<tbody>"; foreach ($sk_servers as $sk_server) { $opstring .= "<tr name=\"r:" . $sk_server['port'] . ":" . $sk_server['remote_host'] . "\">"; $opstring .= "<td>"; $opstring .= $sk_server['name']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $sk_server['remote_host']; $opstring .= "</td>"; $opstring .= "<td>"; if ($sk_server['status'] == "up") { /* tunnel is up */ $opstring .= "<i class=\"fa fa-arrow-up text-success\"></i>"; } else { /* tunnel is down */ $opstring .= "<i class=\"fa fa-arrow-down text-danger\"></i>"; } $opstring .= "</td>"; $opstring .= "</tr>"; $opstring .= "<tr name=\"r:" . $sk_server['port'] . ":" . $sk_server['remote_host'] . "\">"; $opstring .= "<td>"; $opstring .= $sk_server['connect_time']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $sk_server['virtual_addr']; $opstring .= "</td>"; $opstring .= "<td></td>"; $opstring .= "</tr>"; } $opstring .= "</tbody>"; $opstring .= "</table>"; $opstring .= "</div>"; $opstring .= "</div>"; print $opstring; } if (!empty($clients)) { $opstring = ""; $opstring .= "<div class=\"widget panel panel-default\">"; $opstring .= "<div class=\"panel-heading\"><h2 class=\"panel-title\">" . gettext("Client Instance Statistics") . "</h2></div>"; $opstring .= "<div class=\"table-responsive\">"; $opstring .= "<table class=\"table table-striped table-hover table-condensed sortable-theme-bootstrap\" data-sortable>"; $opstring .= "<thead>"; $opstring .= "<tr>"; $opstring .= "<th>" . gettext('Name/Time') . "</th>"; $opstring .= "<th>" . gettext('Remote/Virtual IP') . "</th>"; $opstring .= "<th></th>"; $opstring .= "</tr>"; $opstring .= "</thead>"; $opstring .= "<tbody>"; foreach ($clients as $client) { $opstring .= "<tr name=\"r:" . $client['port'] . ":" . $client['remote_host'] . "\">"; $opstring .= "<td>"; $opstring .= $client['name']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $client['remote_host']; $opstring .= "</td>"; $opstring .= "<td>"; if ($client['status'] == "up") { /* tunnel is up */ $opstring .= "<i class=\"fa fa-arrow-up text-success\"></i>"; } else { /* tunnel is down */ $opstring .= "<i class=\"fa fa-arrow-down text-danger\"></i>"; } $opstring .= "</td>"; $opstring .= "</tr>"; $opstring .= "<tr name=\"r:" . $client['port'] . ":" . $client['remote_host'] . "\">"; $opstring .= "<td>"; $opstring .= $client['connect_time']; $opstring .= "</td>"; $opstring .= "<td>"; $opstring .= $client['virtual_addr']; $opstring .= "</td>"; $opstring .= "<td></td>"; $opstring .= "</tr>"; } $opstring .= "</tbody>"; $opstring .= "</table>"; $opstring .= "</div>"; $opstring .= "</div>"; print $opstring; } if (empty($clients) && empty($servers) && empty($sk_servers)) { print gettext("No OpenVPN instances defined"); } }