diff --git a/net/frr/Makefile b/net/frr/Makefile index 30b45d27b..d8e07f27a 100644 --- a/net/frr/Makefile +++ b/net/frr/Makefile @@ -2,7 +2,7 @@ PLUGIN_NAME= frr PLUGIN_VERSION= 1.42 PLUGIN_COMMENT= The FRRouting Protocol Suite PLUGIN_DEPENDS= frr8 -PLUGIN_MAINTAINER= franz.fabian.94@gmail.com +PLUGIN_MAINTAINER= ad@opnsense.org PLUGIN_TIER= 2 .include "../../Mk/plugins.mk" diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BfdController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BfdController.php index 4904f54c0..76fe62f70 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BfdController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BfdController.php @@ -1,7 +1,7 @@ * All rights reserved. @@ -39,17 +39,11 @@ class BfdController extends ApiMutableModelControllerBase public function searchNeighborAction() { - return $this->searchBase( - 'neighbors.neighbor', - array("enabled", - "description", - "address") - ); + return $this->searchBase('neighbors.neighbor'); } public function getNeighborAction($uuid = null) { - $this->sessionClose(); return $this->getBase('neighbor', 'neighbors.neighbor', $uuid); } diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/GeneralController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/GeneralController.php index e27efec61..d8e615d6a 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/GeneralController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/GeneralController.php @@ -1,7 +1,7 @@ request->isGet()) { - $mdlGeneral = new General(); - $result['general'] = $mdlGeneral->getNodes(); - } - return $result; - } - public function setAction() - { - $result = array("result" => "failed"); - if ($this->request->isPost()) { - // load model and update with provided data - $mdlGeneral = new General(); - $mdlGeneral->setNodes($this->request->getPost("general")); - - // perform validation - $valMsgs = $mdlGeneral->performValidation(); - foreach ($valMsgs as $field => $msg) { - if (!array_key_exists("validations", $result)) { - $result["validations"] = array(); - } - $result["validations"]["general." . $msg->getField()] = $msg->getMessage(); - } - - // serialize model to config and save - if ($valMsgs->count() == 0) { - $mdlGeneral->serializeToConfig(); - Config::getInstance()->save(); - $result["result"] = "saved"; - } - } - return $result; - } + protected static $internalModelName = 'general'; + protected static $internalModelClass = '\OPNsense\Quagga\General'; } diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/OspfsettingsController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/OspfsettingsController.php index ae4c6b128..cb495c1c2 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/OspfsettingsController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/OspfsettingsController.php @@ -1,6 +1,7 @@ * All rights reserved. @@ -38,38 +39,34 @@ class OspfsettingsController extends ApiMutableModelControllerBase public function searchNetworkAction() { - return $this->searchBase('networks.network', array("enabled", "ipaddr", "netmask", "area")); + return $this->searchBase('networks.network'); } public function searchInterfaceAction() { - return $this->searchBase('interfaces.interface', array("enabled", "interfacename", "networktype", "authtype", "area")); + return $this->searchBase('interfaces.interface'); } public function searchPrefixlistAction() { - return $this->searchBase('prefixlists.prefixlist', array("enabled", "name", "seqnumber", "action", "network" )); + return $this->searchBase('prefixlists.prefixlist'); } public function searchRoutemapAction() { - return $this->searchBase('routemaps.routemap', array("enabled", "name", "action", "id", "match2", "set")); + return $this->searchBase('routemaps.routemap'); } public function getNetworkAction($uuid = null) { - $this->sessionClose(); return $this->getBase('network', 'networks.network', $uuid); } public function getInterfaceAction($uuid = null) { - $this->sessionClose(); return $this->getBase('interface', 'interfaces.interface', $uuid); } public function getPrefixlistAction($uuid = null) { - $this->sessionClose(); return $this->getBase('prefixlist', 'prefixlists.prefixlist', $uuid); } public function getRoutemapAction($uuid = null) { - $this->sessionClose(); return $this->getBase('routemap', 'routemaps.routemap', $uuid); } public function addNetworkAction() diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/ServiceController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/ServiceController.php index a9935cfb5..c62632492 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/ServiceController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/ServiceController.php @@ -1,7 +1,7 @@ request->isPost()) { - $backend = new Backend(); - $response = $backend->configdRun('quagga start'); - $backend->configdRun('filter reload'); - return array('response' => $response); - } else { - return array('response' => array()); - } - } - - /** - * stop quagga service - * @return array - */ - public function stopAction() - { - if ($this->request->isPost()) { - $backend = new Backend(); - $response = $backend->configdRun('quagga stop'); - return array('response' => $response); - } else { - return array('response' => array()); - } - } - - /** - * restart quagga service - * @return array - */ - public function restartAction() - { - if ($this->request->isPost()) { - $backend = new Backend(); - $response = $backend->configdRun('quagga restart'); - $backend->configdRun('filter reload'); - return array('response' => $response); - } else { - return array('response' => array()); - } - } - - /** - * retrieve status of quagga - * @return array - * @throws \Exception - */ - public function statusAction() - { - $backend = new Backend(); - $mdlGeneral = new General(); - $response = $backend->configdRun('quagga status'); - - if (strpos($response, 'not running') > 0) { - if ($mdlGeneral->enabled->__toString() == 1) { - $status = 'stopped'; - } else { - $status = 'disabled'; - } - } elseif (strpos($response, 'is running') > 0) { - $status = 'running'; - } elseif ($mdlGeneral->enabled->__toString() == 0) { - $status = 'disabled'; - } else { - $status = 'unknown'; - } - - - return array('status' => $status); - } - - /** - * reconfigure quagga, generate config and reload - */ - public function reconfigureAction() - { - if ($this->request->isPost()) { - // close session for long running action - $this->sessionClose(); - - $mdlGeneral = new General(); - $backend = new Backend(); - - $runStatus = $this->statusAction(); - - // stop quagga if it is running or not - $this->stopAction(); - - // generate template - $backend->configdRun('template reload OPNsense/Quagga'); - - // (res)start daemon - if ($mdlGeneral->enabled->__toString() == 1) { - $this->startAction(); - } - - return array('status' => 'ok'); - } else { - return array('status' => 'failed'); - } - } + protected static $internalServiceClass = '\OPNsense\Quagga\General'; + protected static $internalServiceTemplate = 'OPNsense/Quagga'; + protected static $internalServiceEnabled = 'enabled'; + protected static $internalServiceName = 'quagga'; } diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bfd.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bfd.volt index 3c56ad63e..4510e23ce 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bfd.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bfd.volt @@ -1,6 +1,6 @@ {# -OPNsense® is Copyright © 2014 – 2017 by Deciso B.V. +OPNsense® is Copyright © 2014 – 2025 by Deciso B.V. Copyright (C) 2017 Fabian Franz Copyright (C) 2017 - 2021 Michael Muenz All rights reserved. @@ -27,20 +27,46 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #} + + + +
-
- {{ partial("layout_partials/base_form",['fields':bfdForm,'id':'frm_bfd_settings'])}} -
-
- -
-
+ {{ partial("layout_partials/base_form",['fields':bfdForm,'id':'frm_bfd_settings'])}}
@@ -57,10 +83,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -68,51 +94,19 @@ POSSIBILITY OF SUCH DAMAGE. - +
+
+
+
+ +

+
+
+
{{ partial("layout_partials/base_dialog",['fields':formDialogEditBFDNeighbor,'id':'DialogEditBFDNeighbor','label':lang._('Edit Neighbor')])}} diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bgp.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bgp.volt index 82e62cfe6..b8385d546 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bgp.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/bgp.volt @@ -1,6 +1,6 @@ {# -OPNsense® is Copyright © 2014 – 2024 by Deciso B.V. +OPNsense® is Copyright © 2014 – 2025 by Deciso B.V. Copyright (C) 2017 Fabian Franz Copyright (C) 2017 - 2020 Michael Muenz All rights reserved. @@ -27,6 +27,77 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #} + + + - - + @@ -94,11 +160,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -122,11 +187,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -150,11 +214,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -181,10 +244,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -210,10 +273,10 @@ POSSIBILITY OF SUCH DAMAGE. - - + @@ -221,102 +284,20 @@ POSSIBILITY OF SUCH DAMAGE. - +
+
+
+
+ +

+
+
+
{{ partial("layout_partials/base_dialog",['fields':formDialogEditBGPNeighbor,'id':'DialogEditBGPNeighbor','label':lang._('Edit Neighbor')])}} {{ partial("layout_partials/base_dialog",['fields':formDialogEditBGPASPaths,'id':'DialogEditBGPASPaths','label':lang._('Edit AS Paths')])}} diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/general.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/general.volt index 01e1746bd..aacb7d557 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/general.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/general.volt @@ -1,6 +1,6 @@ {# -OPNsense® is Copyright © 2014 – 2017 by Deciso B.V. +OPNsense® is Copyright © 2014 – 2025 by Deciso B.V. This file is Copyright © 2017 by Fabian Franz All rights reserved. @@ -26,32 +26,43 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #} -
- {{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_general_settings'])}} -
-
- -
-
+ +
+ {{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_general_settings'])}} +
+ +
+
+
+
+ +

+
+
+
diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf.volt index b68db50c8..9daaa0e14 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf.volt @@ -1,6 +1,6 @@ {# -OPNsense® is Copyright © 2014 – 2017 by Deciso B.V. +OPNsense® is Copyright © 2014 – 2025 by Deciso B.V. This file is Copyright © 2017 by Fabian Franz All rights reserved. @@ -27,25 +27,78 @@ POSSIBILITY OF SUCH DAMAGE. #} - - -
-
-
- {{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_ospf_settings'])}} -
-
- -
-
-
+ + + + +
+ +
+ {{ partial("layout_partials/base_form",['fields':generalForm,'id':'frm_ospf_settings'])}} +
+ - +
+ - - +
- - - + + +
- - - + + +
- - - + + +
- - + + +
+ - +
@@ -63,17 +116,15 @@ POSSIBILITY OF SUCH DAMAGE. - +
- - - + +
-
@@ -85,22 +136,22 @@ POSSIBILITY OF SUCH DAMAGE. - + - +
{{ lang._('Authentication Type') }} {{ lang._('ID') }} {{ lang._('Commands') }}
- - +
+
@@ -118,16 +169,16 @@ POSSIBILITY OF SUCH DAMAGE. - +
- - +
+
@@ -146,95 +197,30 @@ POSSIBILITY OF SUCH DAMAGE. - +
- +
+
+ +
+
+
+ +
- - +
{{ partial("layout_partials/base_dialog",['fields':formDialogEditNetwork,'id':'DialogEditNetwork','label':lang._('Edit Network')])}} {{ partial("layout_partials/base_dialog",['fields':formDialogEditInterface,'id':'DialogEditInterface','label':lang._('Edit Interface')])}} diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf6.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf6.volt index 3a4774436..d0749ac7c 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf6.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/ospf6.volt @@ -1,5 +1,5 @@ {# - # Copyright (c) 2014-2024 Deciso B.V. + # Copyright (c) 2014-2025 Deciso B.V. # Copyright (c) 2017 Fabian Franz # Copyright (c) 2017 Michael Muenz # All rights reserved. @@ -32,18 +32,17 @@ mapDataToFormUI({'frm_ospf6_settings':"/api/quagga/ospf6settings/get"}).done(function(data){ formatTokenizersUI(); $('.selectpicker').selectpicker('refresh'); + updateServiceControlUI('quagga'); }); - updateServiceControlUI('quagga'); - - // link save button to API set action - $("#saveAct").SimpleActionButton({ + $("#reconfigureAct").SimpleActionButton({ onPreAction: function() { const dfObj = new $.Deferred(); - saveFormToEndpoint("/api/quagga/ospf6settings/set", 'frm_ospf6_settings', function(){ - dfObj.resolve(); - }); + saveFormToEndpoint("/api/quagga/ospf6settings/set", 'frm_ospf6_settings', function () { dfObj.resolve(); }, true, function () { dfObj.reject(); }); return dfObj; + }, + onAction: function(data, status) { + updateServiceControlUI('quagga'); } }); @@ -53,11 +52,7 @@ 'set':'/api/quagga/ospf6settings/setNetwork/', 'add':'/api/quagga/ospf6settings/addNetwork/', 'del':'/api/quagga/ospf6settings/delNetwork/', - 'toggle':'/api/quagga/ospf6settings/toggleNetwork/', - 'options':{ - selection:false, - multiSelect:false - } + 'toggle':'/api/quagga/ospf6settings/toggleNetwork/' }); $("#grid-interfaces").UIBootgrid({ 'search':'/api/quagga/ospf6settings/searchInterface', @@ -65,11 +60,7 @@ 'set':'/api/quagga/ospf6settings/setInterface/', 'add':'/api/quagga/ospf6settings/addInterface/', 'del':'/api/quagga/ospf6settings/delInterface/', - 'toggle':'/api/quagga/ospf6settings/toggleInterface/', - 'options':{ - selection:false, - multiSelect:false - } + 'toggle':'/api/quagga/ospf6settings/toggleInterface/' }); $("#grid-prefixlists").UIBootgrid({ 'search':'/api/quagga/ospf6settings/searchPrefixlist', @@ -77,11 +68,7 @@ 'set':'/api/quagga/ospf6settings/setPrefixlist/', 'add':'/api/quagga/ospf6settings/addPrefixlist/', 'del':'/api/quagga/ospf6settings/delPrefixlist/', - 'toggle':'/api/quagga/ospf6settings/togglePrefixlist/', - 'options':{ - selection:false, - multiSelect:false - } + 'toggle':'/api/quagga/ospf6settings/togglePrefixlist/' }); $("#grid-routemaps").UIBootgrid({ 'search':'/api/quagga/ospf6settings/searchRoutemap', @@ -89,11 +76,7 @@ 'set':'/api/quagga/ospf6settings/setRoutemap/', 'add':'/api/quagga/ospf6settings/addRoutemap/', 'del':'/api/quagga/ospf6settings/delRoutemap/', - 'toggle':'/api/quagga/ospf6settings/toggleRoutemap/', - 'options':{ - selection:false, - multiSelect:false - } + 'toggle':'/api/quagga/ospf6settings/toggleRoutemap/' }); // hook checkbox item with conditional options @@ -142,10 +125,11 @@ - - - - + + + + + @@ -168,9 +152,10 @@ - + + @@ -195,9 +180,10 @@ - + + @@ -223,9 +209,10 @@ - + + @@ -236,7 +223,7 @@
- -
-