diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/Ospf6settingsController.php b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/Ospf6settingsController.php new file mode 100644 index 000000000..472527127 --- /dev/null +++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/Ospf6settingsController.php @@ -0,0 +1,195 @@ +request->isGet()) { + $mdlospf6 = new OSPF6(); + $result['ospf6'] = $mdlospf6->getNodes(); + } + return $result; + } + public function setAction() + { + $result = array("result"=>"failed"); + if ($this->request->isPost()) { + // load model and update with provided data + $mdlospf6 = new OSPF6(); + $mdlospf6->setNodes($this->request->getPost("ospf6")); + // perform validation + $valMsgs = $mdlospf6->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) { + $mdlospf6->serializeToConfig(); + Config::getInstance()->save(); + $result["result"] = "saved"; + } + } + return $result; + } +///////////////////////////////////////////////////////////////////// + public function searchInterfaceAction() + { + $this->sessionClose(); + $mdlOSPF6 = $this->getModel(); + $grid = new UIModelGrid($mdlOSPF6->interfaces->interface); + return $grid->fetchBindRequest( + $this->request, + array("enabled", "interfacename", "area", "networktype") + ); + } + public function getInterfaceAction($uuid = null) + { + $mdlOSPF6 = $this->getModel(); + if ($uuid != null) { + $node = $mdlOSPF6->getNodeByReference('interfaces.interface.' . $uuid); + if ($node != null) { + // return node + return array("interface" => $node->getNodes()); + } + } else { + $node = $mdlOSPF6->interfaces->interface->add(); + return array("interface" => $node->getNodes()); + } + return array(); + } + public function addInterfaceAction() + { + $result = array("result" => "failed"); + if ($this->request->isPost() && $this->request->hasPost("interface")) { + $result = array("result" => "failed", "validations" => array()); + $mdlOSPF6 = $this->getModel(); + $node = $mdlOSPF6->interfaces->interface->Add(); + $node->setNodes($this->request->getPost("interface")); + $valMsgs = $mdlOSPF6->performValidation(); + foreach ($valMsgs as $field => $msg) { + $fieldnm = str_replace($node->__reference, "interface", $msg->getField()); + $result["validations"][$fieldnm] = $msg->getMessage(); + } + if (count($result['validations']) == 0) { + // save config if validated correctly + $mdlOSPF6->serializeToConfig(); + Config::getInstance()->save(); + unset($result['validations']); + $result["result"] = "saved"; + } + } + return $result; + } + public function delInterfaceAction($uuid) + { + $result = array("result" => "failed"); + if ($this->request->isPost()) { + $mdlOSPF6 = $this->getModel(); + if ($uuid != null) { + if ($mdlOSPF6->interfaces->interface->del($uuid)) { + $mdlOSPF6->serializeToConfig(); + Config::getInstance()->save(); + $result['result'] = 'deleted'; + } else { + $result['result'] = 'not found'; + } + } + } + return $result; + } + public function setInterfaceAction($uuid) + { + if ($this->request->isPost() && $this->request->hasPost("interface")) { + $mdlNetwork = $this->getModel(); + if ($uuid != null) { + $node = $mdlNetwork->getNodeByReference('interfaces.interface.' . $uuid); + if ($node != null) { + $result = array("result" => "failed", "validations" => array()); + $interfaceInfo = $this->request->getPost("interface"); + $node->setNodes($interfaceInfo); + $valMsgs = $mdlNetwork->performValidation(); + foreach ($valMsgs as $field => $msg) { + $fieldnm = str_replace($node->__reference, "interface", $msg->getField()); + $result["validations"][$fieldnm] = $msg->getMessage(); + } + if (count($result['validations']) == 0) { + // save config if validated correctly + $mdlNetwork->serializeToConfig(); + Config::getInstance()->save(); + $result = array("result" => "saved"); + } + return $result; + } + } + } + return array("result" => "failed"); + } + public function toggle_handler($uuid, $elements, $element) + { + $result = array("result" => "failed"); + if ($this->request->isPost()) { + $mdlNetwork = $this->getModel(); + if ($uuid != null) { + $node = $mdlNetwork->getNodeByReference($elements . '.'. $element .'.' . $uuid); + if ($node != null) { + if ($node->enabled->__toString() == "1") { + $result['result'] = "Disabled"; + $node->enabled = "0"; + } else { + $result['result'] = "Enabled"; + $node->enabled = "1"; + } + // if item has toggled, serialize to config and save + $mdlNetwork->serializeToConfig(); + Config::getInstance()->save(); + } + } + } + return $result; + } + public function toggleInterfaceAction($uuid) + { + return $this->toggle_handler($uuid, 'interfaces', 'interface'); + } +} diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Ospf6Controller.php b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Ospf6Controller.php new file mode 100644 index 000000000..53b757a85 --- /dev/null +++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Ospf6Controller.php @@ -0,0 +1,35 @@ +view->title = gettext("OSPFv3 Settings"); + $this->view->ospf6Form = $this->getForm("ospf6"); + $this->view->formDialogEditInterface = $this->getForm("dialogEditOSPF6Interface"); + $this->view->pick('OPNsense/Quagga/ospf6'); + } +} diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditOSPF6Interface.xml b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditOSPF6Interface.xml new file mode 100644 index 000000000..85777c46a --- /dev/null +++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditOSPF6Interface.xml @@ -0,0 +1,55 @@ +
diff --git a/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/ospf6.xml b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/ospf6.xml new file mode 100644 index 000000000..229bfa482 --- /dev/null +++ b/net/quagga/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/ospf6.xml @@ -0,0 +1,22 @@ + diff --git a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml index fa17e6b9b..554222fea 100644 --- a/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml +++ b/net/quagga/src/opnsense/mvc/app/models/OPNsense/Quagga/Menu/Menu.xml @@ -1,10 +1,11 @@