Multiple fieldnames in SQL query, was: Perl vs. python vs. Lua?
Dom Latter
freeradius-users at latter.org
Thu Apr 12 17:15:51 CEST 2018
On 12/04/18 14:53, Alan DeKok wrote:
Thanks for the swift repsonse.
> On Apr 12, 2018, at 9:14 AM, Dom Latter <freeradius-users at latter.org> wrote:
>> we are trying to pursue this approach. I am trying to figure out how to
>> get multiple values out of the database.
>
> v3 doesn't really support that well.
>
>> The only thing I have found on this so far is this page on github:
>> https://github.com/FreeRADIUS/freeradius-server/issues/984
>
> Which as the comments say, was done in 3.1.x (now v4). It's not available in v3.
Ah, I made the rash assumption that anything mentioned then would by
now be current - but I now understand that v4 is a big rewrite.
>> How do I go about this?
>
> You might need to just keep using Python.
Well, we are currently using exec to run a PHP script which doesn't seem
to be a great idea.
So the plan was to move to Perl; but if we did that and ran our mysql
queries inside a perl script would we still have the performance issues?
I am beginning to think that we can construct a (rather complicated)
query that will return the VLAN that needs to be assigned, or 0 to
indicate rejection, or a magic number that will indicate further
processing required, and use unlang to act appropriately (and call
either a PHP script or in due course a perl script).
The vast majority of requests would fall into the first two camps.
So roughly speaking it would look a bit like this (consider this
pseudo-code!)
update control {
Vlan-Value := "%{sql:SELECT .... as vlan FROM .... WHERE
username='%{request:User-Name}' }"
}
if ( &Vlan-Value == 9999 ) {
custom_module
}
else if ( &Vlan-Value > 0 ) {
update reply {
Tunnel-Private-Group-Id := Vlan-Value
# some more attributes here
}
}
else {
reject
}
Although rather than a select statement I think it would be a stored
procedure.
More information about the Freeradius-Users
mailing list