To be honest the page was horrible. Originally I wanted to reduce
the bridge validation code using interface_parent_devices() but
ended up renaming a lot of variables from "port" to "dev(ice)" and
started renaming the table headers for clarity which ended up in
splitting the add interface section from the list/modify section
which ended up restyling the whole table for better mobile use and
clear separation of functionality. Also added a note to the add
section when no devices are available for assignment.
This should in theory prevent a number of support questions and
mistakes seen over the years WRT using this page.
During bootup the gateway monitors were started before the firewall rules
were finished setting up. Under some circumstances this could lead to
incorrect data being reported by dpinger instances.
The base field would emit the validation message of the derived
field, but that is strange sometimes since the actual reason is
much more simple and less ambiguous. Also makes it able to trace
the error to the model definition of Required=Y instead of routing
it through a different field that may have had no say in this.
Noticed on pools name input that throws "text validation error",
but was really complaining about the lack of a value.
The required property gives clarity to the unique constraint
which allowe this only once before but now a number of times.
Also update the mask to make it more obvious.
This is better now, but there is still one inconsistency at play that
doesn't seem to matter much in the grand scheme of things. Leaving this
here for @adschellevis to decide.
# configctl template reload 'OPNsense/Unbound/*'
ERR
# configctl template reload 'OPNsense/Unbound/core'
Execute error
# configctl template reload 'OPNsense/Unbounddd'
ERR
While this omits all other callers of "template reload" functionality
we would only like to be concerned with these GUI ones and migrate everything
to using a mutable controller (for maintenance reasons at the very last).
Only make a short hint to where the error is. The service is not started
on purpose now.
Handling is a bit different since the latest selectpicker doesn't select the top item in the list anymore, we need to choose an item to make it look less odd.
We also make the option dependent on the field not being required.
It is invalid for a field to be empty and also be required, therefore
we apply it only if the field isn't required.