.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
$nocsrf = true;
require_once("guiconfig.inc");
require_once("pfsense-utils.inc");
require_once("functions.inc");
require_once("/usr/local/www/widgets/include/gateways.inc");
if (!function_exists('compose_table_body_contents')) {
function compose_table_body_contents($widgetkey) {
global $user_settings;
$rtnstr = '';
$a_gateways = return_gateways_array();
$gateways_status = array();
$gateways_status = return_gateways_status(true);
if (isset($user_settings["widgets"][$widgetkey]["display_type"])) {
$display_type = $user_settings["widgets"][$widgetkey]["display_type"];
} else {
$display_type = "gw_ip";
}
$hiddengateways = explode(",", $user_settings["widgets"][$widgetkey]["gatewaysfilter"]);
$gw_displayed = false;
foreach ($a_gateways as $gname => $gateway) {
if (in_array($gname, $hiddengateways)) {
continue;
}
$gw_displayed = true;
$rtnstr .= "
\n";
$rtnstr .= "\n";
$rtnstr .= htmlspecialchars($gateway['name']) . " ";
$rtnstr .= '';
$monitor_address = "";
$monitor_address_disp = "";
if ($display_type == "monitor_ip" || $display_type == "both_ip") {
$monitor_address = $gateway['monitor'];
if ($monitor_address != "" && $display_type == "both_ip") {
$monitor_address_disp = " (" . $monitor_address . ")";
} else {
$monitor_address_disp = $monitor_address;
}
}
$if_gw = '';
// If the user asked to display Gateway IP or both IPs, or asked for just monitor IP but the monitor IP is blank
// then find the gateway IP (which is also the monitor IP if the monitor IP was not explicitly set).
if ($display_type == "gw_ip" || $display_type == "both_ip" || ($display_type == "monitor_ip" && $monitor_address == "")) {
if (is_ipaddr($gateway['gateway'])) {
$if_gw = htmlspecialchars($gateway['gateway']);
} else {
if ($gateway['ipprotocol'] == "inet") {
$if_gw = htmlspecialchars(get_interface_gateway($gateway['friendlyiface']));
}
if ($gateway['ipprotocol'] == "inet6") {
$if_gw = htmlspecialchars(get_interface_gateway_v6($gateway['friendlyiface']));
}
}
if ($if_gw == "") {
$if_gw = "~";
}
}
if ($monitor_address == $if_gw) {
$monitor_address_disp = "";
}
$rtnstr .= $if_gw . $monitor_address_disp;
unset ($if_gw);
unset ($monitor_address);
unset ($monitor_address_disp);
$counter++;
$rtnstr .= "";
$rtnstr .= " \n";
$rtnstr .= " | \n";
if ($gateways_status[$gname]) {
if (stristr($gateways_status[$gname]['status'], "force_down")) {
$online = gettext("Offline (forced)");
$bgcolor = "danger"; // lightcoral
} elseif (stristr($gateways_status[$gname]['status'], "down")) {
$online = gettext("Offline");
$bgcolor = "danger"; // lightcoral
} elseif (stristr($gateways_status[$gname]['status'], "highloss")) {
$online = gettext("Packetloss");
$bgcolor = "danger"; // lightcoral
} elseif (stristr($gateways_status[$gname]['status'], "loss")) {
$online = gettext("Packetloss");
$bgcolor = "warning"; // khaki
} elseif (stristr($gateways_status[$gname]['status'], "highdelay")) {
$online = gettext("Latency");
$bgcolor = "danger"; // lightcoral
} elseif (stristr($gateways_status[$gname]['status'], "delay")) {
$online = gettext("Latency");
$bgcolor = "warning"; // khaki
} elseif ($gateways_status[$gname]['status'] == "none") {
if ($gateways_status[$gname]['monitor_disable'] || ($gateways_status[$gname]['monitorip'] == "none")) {
$online = gettext("Online
(unmonitored)");
} else {
$online = gettext("Online");
}
$bgcolor = "success"; // lightgreen
} elseif ($gateways_status[$gname]['status'] == "") {
$online = gettext("Pending");
$bgcolor = "info"; // lightgray
}
} else {
$online = gettext("Unknown");
$bgcolor = "info"; // lightblue
}
$rtnstr .= "" . ($gateways_status[$gname] ? ($gateways_status[$gname]['delay'] ? htmlspecialchars(number_format((float)rtrim($gateways_status[$gname]['delay'], "ms"), 1)) . "ms" : '') : gettext("Pending")) . " | \n";
$rtnstr .= "" . ($gateways_status[$gname] ? ($gateways_status[$gname]['stddev'] ? htmlspecialchars(number_format((float)rtrim($gateways_status[$gname]['stddev'], "ms"), 1)) . "ms" : '') : gettext("Pending")) . " | \n";
$rtnstr .= "" . ($gateways_status[$gname] ? htmlspecialchars($gateways_status[$gname]['loss']) : gettext("Pending")) . " | \n";
$rtnstr .= '' . $online . " | \n";
$rtnstr .= "
\n";
}
if (!$gw_displayed) {
$rtnstr .= '';
$rtnstr .= '';
if (count($a_gateways)) {
$rtnstr .= gettext('All gateways are hidden.');
} else {
$rtnstr .= gettext('No gateways found.');
}
$rtnstr .= ' | ';
$rtnstr .= '
';
}
return($rtnstr);
}
}
// Compose the table contents and pass it back to the ajax caller
if ($_REQUEST && $_REQUEST['ajax']) {
print(compose_table_body_contents($_REQUEST['widgetkey']));
exit;
}
if ($_POST['widgetkey']) {
set_customwidgettitle($user_settings);
if (!is_array($user_settings["widgets"][$_POST['widgetkey']])) {
$user_settings["widgets"][$_POST['widgetkey']] = array();
}
if (isset($_POST["display_type"])) {
$user_settings["widgets"][$_POST['widgetkey']]["display_type"] = $_POST["display_type"];
}
$validNames = array();
$a_gateways = return_gateways_array();
foreach ($a_gateways as $gname => $gateway) {
array_push($validNames, $gname);
}
if (is_array($_POST['show'])) {
$user_settings["widgets"][$_POST['widgetkey']]["gatewaysfilter"] = implode(',', array_diff($validNames, $_POST['show']));
} else {
$user_settings["widgets"][$_POST['widgetkey']]["gatewaysfilter"] = implode(',', $validNames);
}
save_widget_settings($_SESSION['Username'], $user_settings["widgets"], gettext("Updated gateways widget settings via dashboard."));
header("Location: /");
exit(0);
}
$widgetperiod = isset($config['widgets']['period']) ? $config['widgets']['period'] * 1000 : 10000;
$widgetkey_nodash = str_replace("-", "", $widgetkey);
?>
=gettext("Name")?> |
RTT |
RTTsd |
=gettext("Loss")?> |
=gettext("Status")?> |