Commit graph

20261 commits

Author SHA1 Message Date
Ad Schellevis
932f2747e9 Services: Intrusion Detection: Administration - fix regression in 9271d08bf3, closes https://github.com/opnsense/core/issues/10393
It looks like the action buttons lost their bindings, this commit restores the function, although it removes the batch function which previously splitted the set in parts.
Usually the size of the url shouldn't be that much of an issue.
2026-06-08 19:29:14 +02:00
Monviech
4434a8e44d
Firewall: NAT: Source NAT: Hide command footer if snat_mode is automatic. (#10391) 2026-06-08 17:00:34 +02:00
Stephan de Wit
beff827085 dashboard: explicitly compact on layout shift if there's no predefined layout 2026-06-08 16:23:15 +02:00
Stephan de Wit
20ce28677a dashboard: update result on default restore 2026-06-08 16:03:02 +02:00
Franco Fichtner
f3315d22fd rc: use newer min_auto_ashift variable
WARNING: sysctl vfs.zfs.min_auto_ashift is deprecated. Use vfs.zfs.vdev.min_auto_ashift instead.
2026-06-08 15:39:18 +02:00
Monviech
b0e8dfcc54
mvc: Fix idassoc.php converting already decimal stored prefix_id via hexdec(), add unit test for idassoc.php (#10389)
---------

Co-authored-by: Franco Fichtner <franco@opnsense.org>
2026-06-08 15:09:23 +02:00
Tom Walraven
9a702a6a6a
Firewall: NAT: Destination NAT: Display effective port when local-port is omitted (#10237) 2026-06-08 13:04:23 +02:00
Franco Fichtner
2c01f54756 pkg: of course, of course 2026-06-08 12:47:45 +02:00
Franco Fichtner
e0fb60cc13 firmware: add 26.7 fingerprint 2026-06-08 12:46:36 +02:00
Franco Fichtner
b5c737b5fb git: less ignore for our pkg files
This has been a problem for a decade.  Time to make this easier.
2026-06-08 12:46:08 +02:00
Franco Fichtner
6e57f1920c firmware: allow "local" business mirror subscription
While here remove the allow_custom softcoding which was always
enabled anyday.
2026-06-08 11:52:47 +02:00
Franco Fichtner
446ef1aef9 mvc: style sweep 2026-06-08 11:15:15 +02:00
Monviech
fb514217ba
Firewall: Add migration assistant banner to legacy rules page (#10388) 2026-06-08 09:08:18 +02:00
Stephan de Wit
6402be8a54
Firewall: Rules: group rules by default and fix "select all" logic (#10372)
This commit adds top-level groups that are always shown and visible, such as automatically generated, floating, group & interface rules. This first-level tree is not subject to local storage persistence, but state is kept to make sure these trees don't collapse if there are data changes in the grid to improve overall UX. The "category view" (previously "Tree view") is moved to a tree nested under the top-level groups. This tree is subject to local storage persistence.

Whether a top-level tree expands by default is determined by the interface type selection. If a user selects "floating rules", the floating rules section will expand, if instead a user selects an interface, the interface rules section will expand, while all other groups are collapsed.

This commit also fixes the case of the "select all" header checkbox, which was removed in the initial implementation as it wasn't functional. If a user now presses it, all selectable rules are selected, but only if they are visible under an expanded tree.
2026-06-08 08:57:31 +02:00
Ad Schellevis
b750397af3 Interfaces: Assignments - change model name for clarity 2026-06-08 08:32:15 +02:00
Ad Schellevis
fa7b7a850e Interfaces: Assignments - rename "Interface" to "Device", but keep "if" as key to align with data underneath. for https://github.com/opnsense/core/pull/10366 2026-06-07 15:39:43 +02:00
Ad Schellevis
ee94f628ca Interfaces: Assignments - fix empty descriptions, which should show as upper case id, for https://github.com/opnsense/core/pull/10366 2026-06-07 15:36:54 +02:00
Monviech
ab099aaa12
Firewall: NAT: Source NAT: Add migration for Outbound NAT into Source NAT page (#10373)
Firewall: add Source NAT mode bridge and outbound NAT migration

Reflect legacy `nat.outbound.mode` into the Firewall MVC model as volatile
`general.snat_mode` and expose it in the new Source NAT view. Persist the value
back into the legacy configuration through `serializeToConfig()` using a scoped
general-section setter to avoid unrelated model validation.

Adjust the Source NAT grid output based on the selected mode. Automatic and
hybrid modes include synthetic automatic rule rows for display purposes, while
advanced mode only shows manual rules and disabled mode hides the grid.

Extend the migration assistant with an outbound NAT migration tab and add a
configd exporter for legacy `nat.outbound.rule` entries. Exported rows
use empty UUIDs so imports create fresh MVC rule identifiers.

Add missing Source NAT parity fields for `tag` and `nosync`, include them in
generated rows, and export them from legacy outbound NAT rules.

Move the migration assistant menu item out of `Rules [legacy]` so it remains
available when firewall legacy rules no longer exist. Dynamically show the
legacy Outbound NAT menu item only when legacy outbound NAT rules are still
relevant.

Firewall: Source NAT - simplify `/api/firewall/source_nat/search_rule`

While reviewing the Source NAT grid handling for the mode-dependent output, the
rule extraction path was simplified as well. The Source NAT controller now uses
the same general strategy as the filter rule controller where possible: collect
the relevant record set once, then filter and update it consistently.

core/ACL: add uniform read-only write trap

Add a shared `throwReadOnly()` helper for the `user-config-readonly` privilege
check. Mutating API actions can call this when an operation changes
configuration, avoiding repeated local ACL checks with slightly different
patterns.

---------

Co-authored-by: Ad Schellevis <ad@opnsense.org>
2026-06-07 12:55:58 +02:00
Franco Fichtner
857bb504a9 interfaces: another cleanup 2026-06-07 11:28:04 +02:00
Franco Fichtner
456f2e9972 LICENSE: sync 2026-06-07 11:16:31 +02:00
Franco Fichtner
9a59cf767c mvc: style sweep 2026-06-07 11:16:09 +02:00
Ad Schellevis
3020bf2b8b
Interfaces: Assignments - refactor to MVC closes https://github.com/opnsense/core/issues/9945 (#10366)
In order to migrate the interface assignments, we need to think of a way to use the differently named xml nodes for interfaces (wan, lan, ..) into something that closely resembles a standard model implementation.
Since we can't match these nodes in our statically defined model xmls, the main idea is to flush all via an in-memory model with a separate load [construct] and save hook [serializeToConfig].

The next challenge is to "stash" updates and wait for "apply" in certain cases, for this we add a temporary database holding the changes  which are synced after the actual system change has happend (pending_action, pending_if). When succesfully applied, the apply function cleans up the final stage of the configuration to make everything consistent again.

This database is a simple single json encoded file named /tmp/.interfaces.todo
2026-06-07 10:49:02 +02:00
Franco Fichtner
1e4ffcbc0f backend: plugins.inc is hardwired via config.inc 2026-06-05 23:52:19 +02:00
Franco Fichtner
99697111d6 mvc: fix a few stale imports via linter 2026-06-03 14:53:30 +02:00
Franco Fichtner
2571f8c181 make: improve import linter for edge cases 2026-06-03 14:51:13 +02:00
Franco Fichtner
1f08ea963e kea: v6 linter pass 2026-06-03 14:30:02 +02:00
Franco Fichtner
50fa3fd8e3 kea: v4 option values changes for linter 2026-06-03 14:26:07 +02:00
Franco Fichtner
f7989c073b pkg: fix plist 2026-06-03 14:15:04 +02:00
Franco Fichtner
74e76cbeaf firmware: retain ordering in update servers
This only pertains to the connectivity audit changes from
26.1.8.  Treat the server from opnsense-update -M as the
primary one by not sorting the result.

PR: https://forum.opnsense.org/index.php?topic=52025.0
2026-06-03 08:29:40 +02:00
Stephan de Wit
8e1be409fc ui: put these back 2026-06-02 16:12:33 +02:00
Franco Fichtner
5de581cd44 firmware: stop buffering in sed
Since cmd_output was made the generic filter for subscriptions
the update log showed signs of excessive buffering.  This brings
it back to where it was and also improves the old read case.
2026-06-02 14:57:18 +02:00
Stephan de Wit
0bd0defaa8
hostwatch: pin warning banner to enabled flag (#10368)
Closes https://github.com/opnsense/core/issues/10196
2026-06-02 13:28:29 +02:00
Stephan de Wit
303f5b4e14 ui: style fixes 2026-06-02 13:26:16 +02:00
Ad Schellevis
3183b3ed1f network time: cleanse port option before use
This is also a continuation of 770480715b.  Moving the validation
inside the respective function makes sense.  Also checking if the
name and expected file type is present before continuing.

Also bring in the PPS unlink() fix into GPS and always use the default
init string if nothing else given -- may be wrong but at least this
was the code intention only obscured by the wrong logic expression.

PR: GHSA-872g-g543-j37m
2026-06-02 12:59:36 +02:00
Ad Schellevis
2e2a782102 dashboard / certificates - remove unused data-tooltip that is not properly escaped
PR: CVE-2026-49132
2026-06-02 12:59:36 +02:00
Ad Schellevis
37cc231a68 Firewall: Rules: LAN - fix for missing HTML escape
PR: CVE-2026-49131
2026-06-02 12:59:36 +02:00
Monviech
2680128a73
Firewall: NAT: download/upload rules as csv (#10371)
* Firewall: Turn downloadRules and uploadRules into a protected function inside FilterBaseController, implement it in Firewall rules and NAT pages
2026-06-02 08:49:44 +02:00
Konstantinos Spartalis
f27e8b53db
theme/opnsense-auto: remove flashing (#10367) 2026-06-01 15:17:39 +02:00
Stephan de Wit
7a82bb8ac3
ui: override selectpicker defaults for translations (#10370) 2026-06-01 13:09:07 +02:00
Monviech
fedc3e5c5f
Firewall: NAT: Add the same UI design to the NAT pages as the firewall page (#10359)
* Firewall: NAT: Add the same UI design to the NAT pages as the firewall page from 18533b4, but slightly adjusted as NAT rules do not have sort_order or priority groups, so all grouping happens either by category, or to a synthetic automatic category if the rules contain an is_automatic true boolean.

* Implement sort_order in DNAT controller so the same tree view logic as in firewall rules can be used, this eases maintainence

* Add sort order volatile fields to SourceNatRuleField shared by SNAT, ONAT and NPTv6 inside filter model.

* make sweep

* prio_group is static in NAT rules, so we can use it directly

* Add comment about prio_group inside filter_rule.volt
2026-06-01 10:52:29 +02:00
Franco Fichtner
524440c0c6 system: sync ACL name
PR: https://github.com/opnsense/core/issues/9471
2026-06-01 10:36:12 +02:00
Franco Fichtner
92bdd548de mvc: do not translate empty strings
PR: https://github.com/opnsense/core/issues/10369
2026-06-01 10:32:36 +02:00
Franco Fichtner
79ee3b4d81 LICENSE: sync 2026-06-01 10:12:43 +02:00
Franco Fichtner
f8ff073510 src: typo 2026-06-01 10:12:15 +02:00
Franco Fichtner
95bedd865b network time: small cleanups in ntpd_configure_gps() 2026-06-01 10:02:54 +02:00
Stephan de Wit
d0f954ff39 system: remove banner on inline reload if applicable 2026-06-01 09:07:45 +02:00
Franco Fichtner
ae08b03b53 cron: allow unregistered actions to be deleted
Also add a user exception so the users knows what's going on
when not being able to delete.
2026-06-01 07:55:13 +02:00
Franco Fichtner
cd2e12ed9f mvc: unify migration message returns a bit
Mostly noticed due to "check log for details" which now in
most cases is not relevant since we use the verbose flag.
2026-06-01 06:59:54 +02:00
Franco Fichtner
8adcc434a3 src: remove obsolete 2026-06-01 06:49:35 +02:00
Franco Fichtner
4b155c9791 src: style sweep 2026-06-01 06:43:31 +02:00