* benchmarks/iperf: modernize server mode
Replace the legacy Ruby manager and its persistent socket service with a short-lived Python helper invoked through configd. Store transient jobs and JSON results in /tmp, reject duplicate ports, and support removal of running instances.
Move the server UI to an in-memory Instance model and client-style Bootgrid view under /ui/iperf/index/instance. Drop firewall manipulation, service registration, and Ruby dependencies.
* Update benchmarks/iperf/src/opnsense/mvc/app/controllers/OPNsense/iperf/Api/InstanceController.php
* server should start persistently, not one shot, and always show the last test result. That is more user friendly
* use json-stream so we can distinguish between a running and waiting iperf server
* change status icons slightly
* Add start/stop commands to client and server
* use a filter on the commands
* For client lets also use the error as stop status
* Lets keep client and server config and log inside /var/db/iperf
* Report bytes per second in the API and format with byteFormatter in the front end
* simplify error handling a bit, they cannot be translated anyway so at least make them machine readable
* Delegate client job creation completely to configd to avoid issues with permissions later
* Lets pass these parameters as json object so its generalized
* Add changelog and copyright headers
* copilot review
* normalize the API between client and server, and some other smaller fixes
* Expose the json results for the GUI and API, and make sure theyre all passed through .text() so no XSS
* the response is already escaped by Response
* security/q-feeds-connector - adopt new json format
* security/q-feeds-connector - add db_update action which indexes the additional feed information in sqlite, which will be executed during a regular update after fetch.
* security/q-feeds-connector - fix performance issue with large deletes and add simple get_meta call
* security/q-feeds-connector - work in progress meta data processing.
* security/q-feeds-connector - change meta processing (performance) and add form+grid for firewall alias configuration.
* security/q-feeds-connector - implement parser for custom aliases, while here, also fix https://github.com/opnsense/plugins/issues/5735
* security/q-feeds-connector - expand include/exclude tag selectors into separate selectors.
* security/q-feeds-connector - add missing menu item for firewall aliases
* dns/ddclient: add force refresh
Add a "Force refresh" command to the Accounts grid, per row for enabled
accounts and for the selected rows (native backend only). The cached
state of the requested accounts is cleared in a locked state while the
service is stopped, so the service updates them on startup using the
regular account implementation, even when the detected address equals
the one sent before. Normal polling is unchanged.
The grid is reloaded until the requested accounts show a new update
time, accounts without an update are reported after 30 seconds.
Refs #5757
* dns/ddclient: force refresh, simplify as reviewed
Reset the cached state (-r/--reset-state) and restart the service
through the standard restart action, errors are reported via
UserException. The page keeps the icon spinning until the requested
accounts show a new update time, then reloads the grid.
* dns/ddclient: force refresh, reset the state while the service is stopped
The running daemon could otherwise flush its previous state back between
the reset and the restart.
* dns/ddclient: force refresh, spin the row icons of the selected accounts too
* net/frr: BGP handle grouped policy objects consistently
Keep the existing flat storage for prefix lists, AS-path lists, community lists, and route maps while presenting each logical group as one model relation option. This avoids a fragile configuration migration and retains compatibility with existing UUID references.
Add a shared FRR controller guard which prevents deleting any member of a logical group while one of its entries is referenced. Group list entries by their displayed name or number and clarify the corresponding form help.
When rendering BGP, consider a logical group enabled when any of its entries is enabled. Apply this consistently to neighbor and peer-group policy attachments, redistribution route maps, and route-map matches.
* net/frr: OSPF handle grouped policy objects consistently
Present flat prefix-list and route-map entries as logical groups in relations. Protect every member of a referenced group from deletion and render references whenever any member of the selected group is enabled.
* net/frr: Update plugin changelog
Document consistent handling of grouped BGP, OSPF, and OSPFv3 policy objects.
* net/frr: Use tabulator groupBy to logically group the keys in the grid
The handler assumed that every interface listed by ospfd has
a cost. ospfd lists an interface on which OSPF is not running (e.g. a
CARP bound WireGuard instance that is down on the backup node) without
one, so the handler ended with KeyError: 'cost' and left all following
interfaces in ospfd_carp.conf at their default cost.
Skip such interfaces and continue with the rest.
* net/frr: Remove wrong router-level network CRUD for OSPFv3
FRR does not support a router-level network ... area ... command for OSPFv3. OSPFv3 is enabled and assigned to an area per interface.
* Add changelog
interface_configure() was still calling newwanip:rfc2136 but this meant
it had knowledge about this specifc plugin. By adding this consumer we
can hide the actual plugins using it and perhaps add updateip to all
relevant code paths as well. newwanip is only called for dynamic addressing.
* net/frr: Report failed configuration reloads
Preserve the frr-reload exit status so the service controller can report reload failures. Import the frr-reload.log into the standard FRR log at debug level and expose that log directly in the Routing menu.
* Add changelog
* net/frr: fix and complete automatic firewall rules
Generate rules directly for every enabled routing protocol and remove the dependency on configured OSPF networks or interfaces.
* Tighten the OSPF rules a bit more
* Also guard creation of rules if frr is not enabled
Menu registrations remain in core and can be deleted when the
plugin goes away. Same is true for the ACL pattern for the
page firewall_rules.php which is anchored in core because it
is being shared with the MVC framework.