diff --git a/src/opnsense/scripts/routes/gateway_status.php b/src/opnsense/scripts/routes/gateway_status.php
new file mode 100755
index 000000000..463156c80
--- /dev/null
+++ b/src/opnsense/scripts/routes/gateway_status.php
@@ -0,0 +1,74 @@
+#!/usr/local/bin/php
+gatewaysIndexedByName() as $gname => $gw) {
+ $gatewayItem = array('name' => $gname);
+ $gatewayItem['address'] = !empty($gw['gateway']) ? $gw['gateway'] : "~";
+ if (!empty($gateways_status[$gname])) {
+ $gatewayItem['status'] = strtolower($gateways_status[$gname]['status']);
+ $gatewayItem['loss'] = $gateways_status[$gname]['loss'];
+ $gatewayItem['delay'] = $gateways_status[$gname]['delay'];
+ $gatewayItem['stddev'] = $gateways_status[$gname]['stddev'];
+ switch ($gatewayItem['status']) {
+ case 'none':
+ $gatewayItem['status_translated'] = gettext('Online');
+ break;
+ case 'force_down':
+ $gatewayItem['status_translated'] = gettext('Offline (forced)');
+ break;
+ case 'down':
+ $gatewayItem['status_translated'] = gettext('Offline');
+ break;
+ case 'delay':
+ $gatewayItem['status_translated'] = gettext('Latency');
+ break;
+ case 'loss':
+ $gatewayItem['status_translated'] = gettext('Packetloss');
+ break;
+ default:
+ $gatewayItem['status_translated'] = gettext('Pending');
+ break;
+ }
+ } else {
+ $gatewayItem['status'] = 'none';
+ $gatewayItem['status_translated'] = gettext('Online');
+ $gatewayItem['loss'] = '~';
+ $gatewayItem['stddev'] = '~';
+ $gatewayItem['delay'] = '~';
+ }
+ $result[] = $gatewayItem;
+}
+echo json_encode($result) . PHP_EOL;
diff --git a/src/opnsense/service/conf/actions.d/actions_interface.conf b/src/opnsense/service/conf/actions.d/actions_interface.conf
index b53d79d57..4b9158cff 100644
--- a/src/opnsense/service/conf/actions.d/actions_interface.conf
+++ b/src/opnsense/service/conf/actions.d/actions_interface.conf
@@ -93,6 +93,11 @@ command:/usr/local/opnsense/scripts/routes/gateways.php
type:script_output
message:list gateways
+[gateways.status]
+command:/usr/local/opnsense/scripts/routes/gateway_status.php
+type:script_output
+message:list gateway status
+
[vxlan.configure]
command: /usr/local/sbin/pluginctl -c vxlan_prepare
message: Reconfiguring vxlan
diff --git a/src/www/widgets/api/plugins/gateway.inc b/src/www/widgets/api/plugins/gateway.inc
deleted file mode 100644
index 2ce5f4adf..000000000
--- a/src/www/widgets/api/plugins/gateway.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-gatewaysIndexedByName() as $gname => $gw) {
- $gatewayItem = array('name' => $gname);
- $gatewayItem['address'] = !empty($gw['gateway']) ? $gw['gateway'] : "~";
- if (!empty($gateways_status[$gname])) {
- $gatewayItem['status'] = strtolower($gateways_status[$gname]['status']);
- $gatewayItem['loss'] = $gateways_status[$gname]['loss'];
- $gatewayItem['delay'] = $gateways_status[$gname]['delay'];
- $gatewayItem['stddev'] = $gateways_status[$gname]['stddev'];
- switch ($gatewayItem['status']) {
- case 'none':
- $gatewayItem['status_translated'] = gettext('Online');
- break;
- case 'force_down':
- $gatewayItem['status_translated'] = gettext('Offline (forced)');
- break;
- case 'down':
- $gatewayItem['status_translated'] = gettext('Offline');
- break;
- case 'delay':
- $gatewayItem['status_translated'] = gettext('Latency');
- break;
- case 'loss':
- $gatewayItem['status_translated'] = gettext('Packetloss');
- break;
- default:
- $gatewayItem['status_translated'] = gettext('Pending');
- break;
- }
- } else {
- $gatewayItem['status'] = 'none';
- $gatewayItem['status_translated'] = gettext('Online');
- $gatewayItem['loss'] = '~';
- $gatewayItem['stddev'] = '~';
- $gatewayItem['delay'] = '~';
- }
- $result[] = $gatewayItem;
- }
- return $result;
-}
diff --git a/src/www/widgets/widgets/gateways.widget.php b/src/www/widgets/widgets/gateways.widget.php
index 62351465b..c0a599e0e 100644
--- a/src/www/widgets/widgets/gateways.widget.php
+++ b/src/www/widgets/widgets/gateways.widget.php
@@ -27,7 +27,6 @@
*/
require_once("guiconfig.inc");
-require_once("widgets/include/gateways.inc");
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$pconfig = array();
@@ -52,47 +51,73 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
}
$gateways = (new \OPNsense\Routing\Gateways(legacy_interfaces_details()))->gatewaysIndexedByName();
-
?>
@@ -117,7 +142,7 @@ $gateways = (new \OPNsense\Routing\Gateways(legacy_interfaces_details()))->gatew
-