%{SQL-User-Name} parsing in authorize section - bug?
    Igor Smitran 
    sigor at blic.net
       
    Mon Oct 30 14:05:55 UTC 2023
    
    
  
Hi list,
Have i found a bug or i have made a mistake in configuring freeradius, 
version 3.2.3 from networkradius ubuntu repo...
When i put this into authorize section:
authorize {
...
             # MAC LIMIT
             update control {
                 Tmp-Integer-3 := "%{sql: SELECT count(*) FROM radcheck 
WHERE Username = '%{SQL-User-Name}' and 
(mac_limit='%{Calling-Station-Id}' or mac_limit='*');}"
             }
...
}
it doesn't work, SQL-User-Name is empty:
(0)       update control {
(0)         EXPAND %{User-Name}
(0)            --> testuser
(0)         SQL-User-Name set to 'testuser'
rlm_sql (sql): Reserved connection (2)
(0)         Executing select query:  SELECT count(*) FROM radcheck WHERE 
Username = '' and (mac_limit='' or mac_limit='*');
rlm_sql (sql): Released connection (2)
(0)         EXPAND %{sql: SELECT count(*) FROM radcheck WHERE Username = 
'%{SQL-User-Name}' and (mac_limit='%{Calling-Station-Id}' or 
mac_limit='*');}
(0)            --> 0
(0)         Tmp-Integer-3 := 0
(0)       } # update control = noop
If User-Name is used instead of SQL-User-Name it works:
authorize {
...
             # MAC LIMIT
             update control {
                 Tmp-Integer-3 := "%{sql: SELECT count(*) FROM radcheck 
WHERE Username = '%{User-Name}' and (mac_limit='%{Calling-Station-Id}' 
or mac_limit='*');}"
             }
...
}
(0)       update control {
rlm_sql (sql): Reserved connection (2)
rlm_sql (sql): Released connection (2)
(0)         EXPAND %{User-Name}
(0)            --> testuser
(0)         SQL-User-Name set to 'testuser'
rlm_sql (sql): Reserved connection (3)
(0)         Executing select query:  SELECT count(*) FROM radcheck WHERE 
Username = 'testuser' and (mac_limit='' or mac_limit='*');
rlm_sql (sql): Released connection (3)
(0)         EXPAND %{sql: SELECT count(*) FROM radcheck WHERE Username = 
'%{User-Name}' and (mac_limit='%{Calling-Station-Id}' or mac_limit='*');}
(0)            --> 1
(0)         Tmp-Integer-3 := 1
(0)       } # update control = noop
It looks like SQL-User-Name population is done after authorize is 
processed, i am not sure. Everywhere else i am able to use 
SQL-User-Name, including queris.conf. But, not in authorize.
Please correct me if i am wrong. I would appreciate any help. If it's my 
error than even better. It's not so big problem, but it's annoying.
Same setup works in 2.1 but not in 3.0 and 3.2
Thank you,
Igor Smitran
    
    
More information about the Freeradius-Users
mailing list