If statement for two different sql queries
Giedrius Baronas
g.baronas at gmail.com
Wed Oct 13 00:58:59 CEST 2021
I described the new module but the goal was to describe an additional
instance sql1 that would use the same rlm_sql module.
I describe sql and sql1 modules in file /etc/freeradius/mods-enabled/sql
and I'm getting an error for the non-existent file 'rlm_sql1'.
# Loading module "sql" from file /etc/freeradius/mods-enabled/sql
sql {
driver = "rlm_sql_postgresql"
server = ""
port = 0
login = ""
password = <<< secret >>>
radius_db = "dbname=radius host=postgresql2 port=5432 user=radius
password=radpass"
......
}
sql1 {
driver = "rlm_sql_postgresql" server = "" port = 0 login = ""
password = <<< secret >>> radius_db = "dbname=radius
host=postgresql3 port=5432 user=radius password=radpass"......
}
rlm_sql (sql): Driver rlm_sql_postgresql (module rlm_sql_postgresql)
loaded and linked
Creating attribute SQL-Group
/etc/freeradius/mods-enabled/sql[108]: Failed to link to module
'rlm_sql1': /usr/lib/freeradius/rlm_sql1.so: cannot open shared object
file: No such file or directory
I repeating read on manual https://wiki.freeradius.org/modules/Rlm_sql
which sayed:
You can create multiple named instances like so:
sql sql_instance1 {
...
}
sql sql_instance2 {
...
}
I add word sql before both instances sql and sql1
# Loading module "sql" from file /etc/freeradius/mods-enabled/sql
sql sql {
driver = "rlm_sql_postgresql"
server = ""
port = 0
login = ""
password = <<< secret >>>
radius_db = "dbname=radius host=postgresql2 port=5432 user=radius
password=radpass"
......
}
sql sql1 { driver = "rlm_sql_postgresql" server = "" port = 0
login = "" password = <<< secret >>> radius_db = "dbname=radius
host=postgresql3 port=5432 user=radius password=radpass"......
}
Now this part works successfully.
In file /etc/freeradius/sites-enabled/default I wrote group for both instances
group {
sql {
fail = 1
notfound = return
noop = 2
ok = return
updated = 3
reject = return
userlock = 4
invalid = 5
handled = 6
}
sql1 {
fail = 1
notfound = return
noop = 2
ok = return
updated = 3
reject = return
userlock = 4
invalid = 5
handled = 6
}
}
Next my goal if statements. In file /etc/freeradius/sites-enabled/default I
wrote if statements with update request
if(ADSL-Agent-Circuit-Id){
if(ADSL-Agent-Circuit-Id =~ /.+\..+\..+\..+/){
update request {
Tmp-String-2 := ADSL-Agent-Circuit-Id
sql1
}
}else{
update request {
Tmp-String-2 := "127.0.0.1"
}
}
# Loading authorize {...}
/etc/freeradius/sites-enabled/default[122]: Missing attribute value
/etc/freeradius/sites-enabled/default[120]: Failed to parse "update" subsection.
/etc/freeradius/sites-enabled/default[119]: Failed to parse "if" subsection.
/etc/freeradius/sites-enabled/default[71]: Errors parsing authorize section.
I repeat read whitch Alan wrote:
Just refer to them by name. if (a) { sql1
} else { sql2 }
I replace sql1 place from update request {...} to if statement
if(ADSL-Agent-Circuit-Id){
if(ADSL-Agent-Circuit-Id =~ /.+\..+\..+\..+/){
sql1
update request {
Tmp-String-2 := ADSL-Agent-Circuit-Id
}
}else{
update request {
Tmp-String-2 := "127.0.0.1"
}
}
I tried sent packet to radius server
...... (0) if (ADSL-Agent-Circuit-Id){ (0) if (ADSL-Agent-Circuit-Id) ->
TRUE (0) if (ADSL-Agent-Circuit-Id) { (0) if (ADSL-Agent-Circuit-Id =~
/.+\..+\..+\..+/){ (0) if (ADSL-Agent-Circuit-Id =~ /.+\..+\..+\..+/) ->
TRUE (0) if (ADSL-Agent-Circuit-Id =~ /.+\..+\..+\..+/) { (0) sql1: EXPAND
%{User-Name} (0) sql1: --> aa:bb:cc:dd:ee:ff (0) sql1: SQL-User-Name set to
'aa:bb:cc:dd:ee:ff'
......
Voila, I have two working instances. I hope I didn’t miss anything. Pagarbiai,
Giedrius
2021-10-11, pr, 21:17 Alan DeKok <aland at deployingradius.com> rašė:
> On Oct 11, 2021, at 2:04 PM, Giedrius Baronas <g.baronas at gmail.com> wrote:
> > I will try to describe it more precisely. If radius receives a packet
> with
> > radius attribute "ADSL-Agent-Circuit-Id" then I need to use a sql1
> > instance. In the else statement I need it to use sql2 instance.
> > How can I set sql instances ?
>
> Just refer to them by name.
>
> if (a) {
> sql1
> }
> else {
> sql2
> }
>
> Alan DeKok.
>
> -
> List info/subscribe/unsubscribe? See
> http://www.freeradius.org/list/users.html
--
Pagarbiai,
Giedrius
861569551
More information about the Freeradius-Users
mailing list