Assuming that you want to “reply” jSON packet. You could do something like: 1. Set the mods-enable/rest with something like:
post-auth { uri = “/path?foo=postauth-whatever” method = “post” data = "%{control:Tmp-String-0}" body = 'json' force_to = 'plain' }
2. Just do your logic like: If ("%{User-Name}" == “ tapioca”) { update control { &Tmp-String-0 := “{ \”myfield\”: \”hello tapioca\” }” } } else { update control { &Tmp-String-0 := “{ \”error\”: \”bad things here\” }” } } -- Jorge Pereira jpereira@freeradius.org
Em 11 de jan de 2021, à(s) 20:57, Nathan Ward <lists+freeradius@daork.net> escreveu:
Hi Jorge,
On 12/01/2021, at 11:43 AM, Jorge Pereira <jpereira@freeradius.org> wrote:
Hi Nathan,
Take a look at the option “data” as described in https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/mods-avail... <https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/mods-available/rest#L78>
e.g:
post-auth { uri = “/path?foo=postauth-whatever” method = “post” data = “{ control_tmp_string_0 = \”%{control:Tmp-String-0}\” }” body = 'json' force_to = 'plain' }
You mean something like that?
That sort of thing - though this requires that I know what all the attributes are. Of course it’s my config, so I do, but I’d like to be able to just say “stick all the reply attributes in here” or something. Otherwise I have to have some logic to test for existence of each one, then include each instance of it, etc. etc. If I was proxying I would not know what all the attributes are - in my use case I’m not proxying, but I could imagine it would be useful for others.
I’m not above doing a patch to rlm_rest to be able to include the request/reply/control attribute lists rather than packet->vps - assuming that that’s not a crazy bad idea for internal reasons I don’t understand.. Thoughts?
-- Nathan Ward
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html