summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2010-09-09 21:25:49 +0000
committerErmal <eri@pfsense.org>2010-09-09 21:25:49 +0000
commit68f291ffe2e8e6e5d9470076365fd1127e7f3655 (patch)
tree307627a01569bddb17905ee3b9aced0a372fccc9
parent3d471a14d42f9a17b06eeac2708c29f959ca98d8 (diff)
downloadpfsense-68f291ffe2e8e6e5d9470076365fd1127e7f3655.zip
pfsense-68f291ffe2e8e6e5d9470076365fd1127e7f3655.tar.gz
Ticket #876. Show all gateways even though apinger is not monitoring them, for various reasons, this removes user confusion in the status pages.
-rw-r--r--etc/inc/filter.inc4
-rw-r--r--etc/inc/gwlb.inc28
-rw-r--r--usr/local/www/includes/functions.inc.php22
-rwxr-xr-xusr/local/www/status_gateways.php48
-rw-r--r--usr/local/www/widgets/widgets/gateways.widget.php60
5 files changed, 92 insertions, 70 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 94c96ff..382e42d 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -613,8 +613,8 @@ function filter_generate_gateways() {
} else
$routeto .= "( {$int} {$gatewayip} ) ";
$foundlb++;
- } else
- log_error("An error occurred while trying to find the interface got $gatewayip . The rule has not been added.");
+ } else
+ log_error("An error occurred while trying to find the interface got $gatewayip . The rule has not been added.");
}
$route = "";
if ($foundlb > 0) {
diff --git a/etc/inc/gwlb.inc b/etc/inc/gwlb.inc
index c53d5f1..959b200 100644
--- a/etc/inc/gwlb.inc
+++ b/etc/inc/gwlb.inc
@@ -150,16 +150,16 @@ EOD;
continue; //Skip this target
$apingercfg .= "target \"{$gateway['monitor']}\" {\n";
- $apingercfg .= " description \"{$gateway['name']}\"\n";
+ $apingercfg .= " description \"{$name}\"\n";
$apingercfg .= " srcip \"{$gwifip}\"\n";
$alarms = "";
$override = false;
if (!empty($gateway['lowloss'])) {
- $alarmscfg .= "alarm loss \"{$gateway['name']}loss\" {\n";
+ $alarmscfg .= "alarm loss \"{$name}loss\" {\n";
$alarmscfg .= "\tpercent_low {$gateway['losslow']}\n";
$alarmscfg .= "\tpercent_high {$gateway['losshigh']}\n";
$alarmscfg .= "}\n";
- $alarms .= "\"{$gateway['name']}loss\"";
+ $alarms .= "\"{$name}loss\"";
$override = true;
} else {
if ($override == true)
@@ -168,13 +168,13 @@ EOD;
$override = true;
}
if (!empty($gateway['latencylow'])) {
- $alarmscfg .= "alarm delay \"{$gateway['name']}delay\" {\n";
+ $alarmscfg .= "alarm delay \"{$name}delay\" {\n";
$alarmscfg .= "\tdelay_low {$gateway['latencylow']}ms\n";
$alarmscfg .= "\tdelay_high {$gateway['latencyhigh']}ms\n";
$alarmscfg .= "}\n";
if ($override == true)
$alarms .= ",";
- $alarms .= "\"{$gateway['name']}delay\"";
+ $alarms .= "\"{$name}delay\"";
$override = true;
} else {
if ($override == true)
@@ -183,12 +183,12 @@ EOD;
$override = true;
}
if (!empty($gateway['down'])) {
- $alarmscfg .= "alarm down \"{$gateway['name']}down\" {\n";
+ $alarmscfg .= "alarm down \"{$name}down\" {\n";
$alarmscfg .= "\ttime {$gateway['down']}s\n";
$alarmscfg .= "}\n";
if ($override == true)
$alarms .= ",";
- $alarms .= "\"{$gateway['name']}down\"";
+ $alarms .= "\"{$name}down\"";
$override = true;
} else {
if ($override == true)
@@ -260,6 +260,7 @@ function return_gateways_status($byname = false) {
$status[$target]['loss'] = empty($info[7]) ? "0.0%" : $info[7] . "";
$status[$target]['status'] = trim($info[8]);
}
+
return($status);
}
@@ -451,8 +452,8 @@ function dhclient_update_gateway_groups_defaultroute($interface = "wan") {
function lookup_gateway_ip_by_name($name) {
$gateways_arr = return_gateways_array();
- foreach ($gateways_arr as $gw) {
- if ($gw['name'] == $name)
+ foreach ($gateways_arr as $gname => $gw) {
+ if ($gw['name'] == $name || $gname == $name)
return $gw['gateway'];
}
@@ -464,12 +465,8 @@ function lookup_gateway_monitor_ip_by_name($name) {
$gateways_arr = return_gateways_array();
if (!empty($gateways_arr[$name])) {
$gateway = $gateways_arr[$name];
- if ($gateway['gateway'] == "dynamic")
- $gateway['monitor'] = "127.0.0.2";
-
- $monitorip = $gateway['monitor'];
- if(!is_ipaddr($monitorip))
- $monitorip = $gateway['gateway'];
+ if(!is_ipaddr($gateway['monitor']))
+ return $gateway['gateway'];
return ($monitorip);
}
@@ -481,7 +478,6 @@ function lookup_gateway_interface_by_name($name) {
$gateways_arr = return_gateways_array();
if (!empty($gateways_arr[$name])) {
- //$gatewayip = $gateway['gateway'];
$interfacegw = $gateway['interface'];
return ($interfacegw);
}
diff --git a/usr/local/www/includes/functions.inc.php b/usr/local/www/includes/functions.inc.php
index 677c2fd..8eff06a 100644
--- a/usr/local/www/includes/functions.inc.php
+++ b/usr/local/www/includes/functions.inc.php
@@ -24,19 +24,22 @@ function get_stats() {
}
function get_gatewaystats() {
+ $a_gateways = return_gateways_array();
$gateways_status = array();
- $gateways_status = return_gateways_status();
+ $gateways_status = return_gateways_status(true);
$data = "";
$isfirst = true;
- foreach($gateways_status as $gw) {
+ foreach($a_gateways as $gname => $gw) {
if(!$isfirst)
$data .= ",";
$isfirst = false;
$data .= $gw['name'] . ",";
- $data .= lookup_gateway_ip_by_name($gw['name']) . ",";
- $data .= $gw['delay'] . ",";
- $data .= $gw['loss'] . ",";
- switch(strtolower($gw['status'])) {
+ $data .= lookup_gateway_ip_by_name($gname) . ",";
+ if ($gateways_status[$gname]) {
+ $gws = $gateways_status[$gname];
+ $data .= $gws['delay'] . ",";
+ $data .= $gws['loss'] . ",";
+ switch(strtolower($gws['status'])) {
case "none":
$online = "Online";
$bgcolor = "lightgreen";
@@ -55,6 +58,11 @@ function get_gatewaystats() {
break;
default:
$online = "Gathering data";
+ break;
+ }
+ } else {
+ $online = "Unknown";
+ $bgcolor = "lightgray";
}
$data .= "<table><tr><td bgcolor=\"$bgcolor\" > $online </td></td></tr></table>";
}
@@ -257,4 +265,4 @@ function get_interfacestatus() {
return $data;
}
-?> \ No newline at end of file
+?>
diff --git a/usr/local/www/status_gateways.php b/usr/local/www/status_gateways.php
index eac1b2f..4faef8f 100755
--- a/usr/local/www/status_gateways.php
+++ b/usr/local/www/status_gateways.php
@@ -43,7 +43,7 @@ require("guiconfig.inc");
$a_gateways = return_gateways_array();
$gateways_status = array();
-$gateways_status = return_gateways_status();
+$gateways_status = return_gateways_status(true);
$now = time();
$year = date("Y");
@@ -74,34 +74,44 @@ include("head.inc");
<td width="10%" class="listhdrr"><?=gettext("Monitor"); ?></td>
<td width="30%" class="listhdrr"><?=gettext("Status"); ?></td>
<td width="30%" class="listhdr"><?=gettext("Description"); ?></td>
- </tr>
- <?php foreach ($gateways_status as $target => $gateway) {
+ </tr>
+ <?php foreach ($a_gateways as $gname => $gateway) {
?>
<tr>
<td class="listlr">
<?=$gateway['name'];?>
</td>
<td class="listr" align="center" >
- <?php echo lookup_gateway_ip_by_name($gateway['name']);?>
+ <?php echo lookup_gateway_ip_by_name($gname);?>
</td>
<td class="listr" align="center" >
- <?=$target;?>
+ <?php if ($gateways_status[$gname])
+ echo $gateways_status[$gname]['monitorip'];
+ else
+ echo $gateway['monitorip'];
+ ?>
</td>
<td class="listr" >
<table border="0" cellpadding="0" cellspacing="2">
<?php
- if (stristr($gateway['status'], "down")) {
- $online = gettext("Offline");
- $bgcolor = "lightcoral";
- } elseif (stristr($gateway['status'], "loss")) {
- $online = gettext("Warning, Packetloss");
- $bgcolor = "khaki";
- } elseif (stristr($gateway['status'], "delay")) {
- $online = gettext("Warning, Latency");
- $bgcolor = "khaki";
- } elseif ($gateway['status'] == "none") {
- $online = gettext("Online");
- $bgcolor = "lightgreen";
+ if ($gateways_status[$gname]) {
+ $status = $gateways_status[$gname];
+ if (stristr($status['status'], "down")) {
+ $online = gettext("Offline");
+ $bgcolor = "lightcoral";
+ } elseif (stristr($status['status'], "loss")) {
+ $online = gettext("Warning, Packetloss");
+ $bgcolor = "khaki";
+ } elseif (stristr($status['status'], "delay")) {
+ $online = gettext("Warning, Latency");
+ $bgcolor = "khaki";
+ } elseif ($status['status'] == "none") {
+ $online = gettext("Online");
+ $bgcolor = "lightgreen";
+ }
+ } else {
+ $online = gettext("Unknown");
+ $bgcolor = "lightgray";
}
echo "<tr><td bgcolor=\"$bgcolor\" > $online </td><td>";
$lastchange = $gateway['lastcheck'];
@@ -111,14 +121,12 @@ include("head.inc");
array_shift($lastchange);
$lastchange = implode(" ", $lastchange);
printf(gettext("Last check %s"), $lastchange);
- } else {
- echo gettext("Gathering data");
}
echo "</td></tr>";
?>
</table>
</td>
- <td class="listbg"> <?=$a_gateways[$gateway['name']]['descr']; ?></td>
+ <td class="listbg"> <?=$gateway['descr']; ?></td>
</tr>
<?php } ?>
</table>
diff --git a/usr/local/www/widgets/widgets/gateways.widget.php b/usr/local/www/widgets/widgets/gateways.widget.php
index 07b2397..bd643fb 100644
--- a/usr/local/www/widgets/widgets/gateways.widget.php
+++ b/usr/local/www/widgets/widgets/gateways.widget.php
@@ -30,8 +30,9 @@ require_once("guiconfig.inc");
require_once("pfsense-utils.inc");
require_once("functions.inc");
+$a_gateways = return_gateways_array();
$gateways_status = array();
-$gateways_status = return_gateways_status();
+$gateways_status = return_gateways_status(true);
$counter = 1;
@@ -44,50 +45,59 @@ $counter = 1;
<td width="10%" class="listhdrr">Loss</td>
<td width="30%" class="listhdrr">Status</td>
</tr>
- <?php foreach ($gateways_status as $target => $gateway) { ?>
- <?php
- $monitor = $target;
- if(empty($monitor)) {
- $monitor = $gateway['gateway'];
- }
- ?>
+ <?php foreach ($a_gateways as $gname => $gateway) { ?>
<tr>
<td class="listlr" id="gateway<?= $counter; ?>">
<?=$gateway['name'];?>
<?php $counter++; ?>
</td>
<td class="listr" align="center" id="gateway<?= $counter; ?>">
- <?php echo lookup_gateway_ip_by_name($gateway['name']);?>
+ <?php if (is_ipaddr($gateway['gateway']))
+ echo $gateway['gateway'];
+ else
+ echo get_interface_gateway($gateway['friendlyiface']);
+ ?>
<?php $counter++; ?>
</td>
<td class="listr" align="center" id="gateway<?= $counter; ?>">
- <?=$gateway['delay'];?>
- <?php $counter++; ?>
- </td>
+ <?php if ($gateways_status[$gname])
+ echo $gateways_status[$gname]['delay'];
+ else
+ echo "Unknown";
+ ?>
+ <?php $counter++; ?>
+ </td>
<td class="listr" align="center" id="gateway<?= $counter; ?>">
- <?=$gateway['loss'];?>
- <?php $counter++; ?>
- </td>
+ <?php if ($gateways_status[$gname])
+ echo $gateways_status[$gname]['loss'];
+ else
+ echo "Unknown";
+ ?>
+ <?php $counter++; ?>
+ </td>
<td class="listr" id="gateway<?=$counter?>" >
<table border="0" cellpadding="0" cellspacing="2">
- <?php
- if (stristr($gateway['status'], "down")) {
+ <?php if ($gateways_status[$gname]) {
+ if (stristr($gateways_status[$gname]['status'], "down")) {
$online = "Offline";
$bgcolor = "lightcoral";
- } elseif (stristr($gateway['status'], "loss")) {
+ } elseif (stristr($gateways_status[$gname]['status'], "loss")) {
$online = "Warning, Packetloss";
$bgcolor = "khaki";
- } elseif (stristr($gateway['status'], "delay")) {
+ } elseif (stristr($gateways_status[$gname]['status'], "delay")) {
$online = "Warning, Latency";
$bgcolor = "khaki";
- } elseif ($gateway['status'] == "none") {
+ } elseif ($gateways_status[$gname]['status'] == "none") {
$online = "Online";
$bgcolor = "lightgreen";
- } else
- $online = "Gathering data";
- echo "<tr><td bgcolor=\"$bgcolor\" > $online </td>";
- $counter++;
- ?>
+ }
+ } else {
+ $online = "Unknown";
+ $bgcolor = "lightgray";
+ }
+ echo "<tr><td bgcolor=\"$bgcolor\" > $online </td>";
+ $counter++;
+ ?>
</table>
</td>
</tr>
OpenPOWER on IntegriCloud