Firewall: Automation: Filter - add schedules for https://github.com/opnsense/core/issues/8143

This commit is contained in:
Ad Schellevis 2025-01-01 14:38:33 +01:00
parent 37a32842fd
commit c49af7824a
4 changed files with 58 additions and 0 deletions

1
plist
View File

@ -714,6 +714,7 @@
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/GroupField.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/GroupNameField.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/InterfaceField.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/ScheduleField.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/SourceNatRuleField.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
/usr/local/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml

View File

@ -148,6 +148,11 @@
<help>Use this to choose TCP flags that must be cleared for this rule to match.</help>
<advanced>true</advanced>
</field>
<field>
<id>rule.sched</id>
<label>Schedule</label>
<type>dropdown</type>
</field>
<field>
<type>header</type>
<label>Stateful firewall</label>

View File

@ -0,0 +1,51 @@
<?php
/*
* Copyright (C) 2025 Deciso B.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
namespace OPNsense\Firewall\FieldTypes;
use OPNsense\Base\FieldTypes\BaseListField;
use OPNsense\Core\Config;
class ScheduleField extends BaseListField
{
private static $schedules = [];
protected function actionPostLoadingEvent()
{
$cnf = Config::getInstance()->object();
if (empty(self::$schedules) && isset($cnf->schedules->schedule)) {
foreach ($cnf->schedules->schedule as $node) {
if (!empty((string)$node->name)) {
self::$schedules[(string)$node->name] = (string)$node->name;
}
}
}
$this->internalOptionList = self::$schedules;
return parent::actionPostLoadingEvent();
}
}

View File

@ -246,6 +246,7 @@
<Multiple>Y</Multiple>
<ValidationMessage>Related category not found.</ValidationMessage>
</categories>
<sched type=".\ScheduleField"/>
<description type="DescriptionField"/>
</rule>
</rules>