diff --git a/plist b/plist index 0a4673587..5f6dccd95 100644 --- a/plist +++ b/plist @@ -249,6 +249,7 @@ /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/Api/ServiceController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/Api/SnapshotsController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/Api/SystemController.php +/usr/local/opnsense/mvc/app/controllers/OPNsense/Core/Api/TunablesController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/BackupController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/DashboardController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/FirmwareController.php @@ -260,8 +261,10 @@ /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/RebootController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/ServiceController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/SnapshotsController.php +/usr/local/opnsense/mvc/app/controllers/OPNsense/Core/TunablesController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/forms/hasyncSettings.xml /usr/local/opnsense/mvc/app/controllers/OPNsense/Core/forms/snapshot.xml +/usr/local/opnsense/mvc/app/controllers/OPNsense/Core/forms/tunable.xml /usr/local/opnsense/mvc/app/controllers/OPNsense/Cron/Api/ServiceController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Cron/Api/SettingsController.php /usr/local/opnsense/mvc/app/controllers/OPNsense/Cron/IndexController.php @@ -657,6 +660,7 @@ /usr/local/opnsense/mvc/app/models/OPNsense/Core/ACL.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.xml +/usr/local/opnsense/mvc/app/models/OPNsense/Core/FieldTypes/TunableField.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/Firmware.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/Firmware.xml /usr/local/opnsense/mvc/app/models/OPNsense/Core/Hasync.php @@ -666,6 +670,8 @@ /usr/local/opnsense/mvc/app/models/OPNsense/Core/Migrations/M1_0_1.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/Migrations/MHA1_0_0.php /usr/local/opnsense/mvc/app/models/OPNsense/Core/Migrations/MHA1_0_1.php +/usr/local/opnsense/mvc/app/models/OPNsense/Core/Tunables.php +/usr/local/opnsense/mvc/app/models/OPNsense/Core/Tunables.xml /usr/local/opnsense/mvc/app/models/OPNsense/Core/repositories/opnsense.xml /usr/local/opnsense/mvc/app/models/OPNsense/Cron/ACL/ACL.xml /usr/local/opnsense/mvc/app/models/OPNsense/Cron/Cron.php @@ -872,6 +878,7 @@ /usr/local/opnsense/mvc/app/views/OPNsense/Core/reboot.volt /usr/local/opnsense/mvc/app/views/OPNsense/Core/service.volt /usr/local/opnsense/mvc/app/views/OPNsense/Core/snapshot.volt +/usr/local/opnsense/mvc/app/views/OPNsense/Core/tunables.volt /usr/local/opnsense/mvc/app/views/OPNsense/Cron/index.volt /usr/local/opnsense/mvc/app/views/OPNsense/DHCPv4/leases.volt /usr/local/opnsense/mvc/app/views/OPNsense/DHCPv6/leases.volt @@ -1275,6 +1282,7 @@ /usr/local/opnsense/scripts/system/status.php /usr/local/opnsense/scripts/system/swapinfo.py /usr/local/opnsense/scripts/system/sysctl.py +/usr/local/opnsense/scripts/system/sysctl_defaults.php /usr/local/opnsense/scripts/system/tls_groups.py /usr/local/opnsense/scripts/system/trigger_config_changed_events.py /usr/local/opnsense/scripts/system/update-crl-fetch.py diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/TunablesController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/TunablesController.php new file mode 100644 index 000000000..c4ec95a45 --- /dev/null +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/TunablesController.php @@ -0,0 +1,64 @@ +searchBase("item", null, "sysctl"); + } + + public function setSubnetAction($uuid) + { + return $this->setBase("sysctl", "item", $uuid); + } + + public function addSubnetAction() + { + return $this->addBase("sysctl", "item"); + } + + public function getSubnetAction($uuid = null) + { + return $this->getBase("sysctl", "item", $uuid); + } + + public function delSubnetAction($uuid) + { + return $this->delBase("item", $uuid); + } + +} diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/TunablesController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/TunablesController.php new file mode 100644 index 000000000..98ce2d950 --- /dev/null +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/TunablesController.php @@ -0,0 +1,39 @@ +view->pick('OPNsense/Core/tunables'); + $this->view->formDialogTunable = $this->getForm('tunable'); + + } +} diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/forms/tunable.xml b/src/opnsense/mvc/app/controllers/OPNsense/Core/forms/tunable.xml new file mode 100644 index 000000000..55cba1f4c --- /dev/null +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/forms/tunable.xml @@ -0,0 +1,17 @@ +
diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/FieldTypes/TunableField.php b/src/opnsense/mvc/app/models/OPNsense/Core/FieldTypes/TunableField.php new file mode 100644 index 000000000..797f77df4 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Core/FieldTypes/TunableField.php @@ -0,0 +1,92 @@ + $item){ + $result[] = [ + 'tunable' => $key, + 'value' => $item['value'] ?? '', + 'default_value' => $item['default'], + 'descr' => $item['description'], + 'type' => $item['type'] ?? '', + ]; + } + + return $result; + } + + protected function actionPostLoadingEvent() + { + if (self::$default_values === null) { + self::$default_values = json_decode((new Backend())->configdRun('system sysctl gather'), true) ?? []; + self::$static_entries = json_decode((new Backend())->configdRun('system sysctl defaults'), true) ?? []; + foreach (self::$static_entries as $key => $item) { + if (!empty(self::$default_values[$key])) { + self::$static_entries[$key]['type'] = self::$default_values[$key]['type']; + self::$static_entries[$key]['value'] = self::$default_values[$key]['value']; + self::$static_entries[$key]['descr'] = self::$default_values[$key]['description']; + } + } + } + foreach ($this->iterateItems() as $node) { + if (isset(self::$static_entries[(string)$node->tunable])) { + unset(self::$static_entries[(string)$node->tunable]); + } + if (isset(self::$default_values[(string)$node->tunable])) { + $node->default_value->setValue(self::$default_values[(string)$node->tunable]['value']); + $node->type->setValue(self::$default_values[(string)$node->tunable]['type']); + if (empty((string)$node->descr)) { + $node->descr->setValue(self::$default_values[(string)$node->tunable]['description']); + } + } + } + parent::actionPostLoadingEvent(); + } +} diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/Tunables.php b/src/opnsense/mvc/app/models/OPNsense/Core/Tunables.php new file mode 100644 index 000000000..7b8790798 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Core/Tunables.php @@ -0,0 +1,39 @@ + +| {{ lang._('ID') }} | +{{ lang._('Tunable') }} | +{{ lang._('Type') }} | +{{ lang._('Value') }} | +{{ lang._('Default') }} | +{{ lang._('Description') }} | +{{ lang._('Commands') }} | +
|---|---|---|---|---|---|---|
| + | + + + | +