. * 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); ?>
RTT RTTsd