Martin Gignac <martin.gignac@gmail.com> wrote:
The documentation for rlm_exec states that "This module is useful for gluing third-party programs into FreeRADIUS. However, executing programs is very slow. The exec module may look like it works for one or two tests, but in a live situation it can cause the server to become unresponsive under load. The perl module is recommended for general-purpose computing.", so I don't know how performant it is compared with rlm_rest.
rlm_perl uses a Perl ecosystem library which actually fires up a Perl interpreter and runs all it's init code until it is just about to start running a script, then freezes that state in memory ready to run code. It can then fork copies of that state off. That's why it is performant. You'd need to find something like that for GO... but if it is a compiled language that's less likely to exist since there is less need for that than there is for an interpreted language like Perl5. (Writing that makes me wonder if there would be a way to do a "pre_exec" on generic stuff run by rlm_exec, if the executed code was cooperative enough to wait on a socket after loading and before proceeding.)