API Firewall set to enabled or disabled

Started by RobLatour, September 11, 2023, 05:03:09 PM

Previous topic - Next topic
Following the documentation here:
https://docs.opnsense.org/development/api/plugins/firewall.html

via the api I can retrieve the enabled status of a firewall rule, and I can toggle it from enabled to disabled (or the other way), and I can apply the change.

However, I would rather simply either a) enable it, or in other cases b) disabled it, without needing to first retrieve the current status.  Afterwards I can apply the change.

The documentation above, does reference a setRule feature of the API, but I  can't find it otherwise documented, and the parms for it don't seem to include an way to indicate if the rule should be enabled or disabled.

Is there a way to enable or disable a rule with a direct api post (i.e. not toggle it, rather just either enable or disable it directly)?

toggleRule has a second argument, which defaults to "null", but you can also use "true" or "false" to set it to the respective state directlyl.


Cheers,
Franco
"AI has absolutely reduced the cost of creating technical debt." -- ChatGPT

September 12, 2023, 03:14:43 PM #2 Last Edit: September 12, 2023, 04:54:25 PM by RobLatour
Thank you Franco, that is great news.

I had actually tried a combination of things before posting this but nothing seemed to work.

I am using an encoded url for the post, and while

   https://n.n.n.n/api/firewall/filter/toggleRule/uuid

works great,

I couldn't get any of the following to work:

   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,enabled="true"
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,enabled="True"
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,enabled=true
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,$enabled="true"
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,$enabled=true
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,"True"
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,"true"
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,true
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,enabled=1
   https://n.n.n.n/api/firewall/filter/toggleRule/uuid,1

Could you please let me know what is the required syntax looks like?

Thanks,

Rob




try
https://n.n.n.n/api/firewall/filter/toggleRule/uuid/1


Does /false or /true not work? Maybe it's casting to string. In JSON body it's probably type-safe.


Cheers,
Franco
"AI has absolutely reduced the cost of creating technical debt." -- ChatGPT

@franco
QuoteDoes /false or /true not work?
not for me ({"result":"failed","changed":false})
toggleBase() expects string "1" and "0" only. and i dont see any casting in body parsing?
I really thought its by design

It's a design choice it seems in the URL parsing, but it's not perfect ;)


Cheers,
Franco
"AI has absolutely reduced the cost of creating technical debt." -- ChatGPT