acct_unique with more than one Class attribute
Andrea Gabellini
andrea.gabellini at telecomitalia.sm
Mon Mar 27 12:45:07 CEST 2017
Il 27/03/2017 12:10, Brian Candler ha scritto:
> On 27/03/2017 10:37, Andrea Gabellini wrote:
>>
>>
>> I tried both &Class[*] and the foreach statement. The next problem is
>> the string conversion. What happens:
>>
>> - &Class[*]:
>> It returns all instances of the attribute separated with a comma. Only
>> the first one is converted to a string.
> Only if you write %{Class[*]} or %{&Class[*]}, i.e. you ask Freeradius
> to convert it into a string.
>
> Don't do that. Try this:
>
> if (&Class[*] =~ /pattern(.*)pattern/) {
> ... use %{1} to get the capture group
> }
if (&Class[*] =~ /(.*)/) {
update request {
&Tmp-String-5 := "Match: %{1}"
}
}
results in:
Mon Mar 27 12:40:37 2017 : Debug: (2) EXPAND %{&Class[*]}
Mon Mar 27 12:40:37 2017 : Debug: (2) -->
0x54657374436c617373,0x617574685f69643a3066313863343665653637633462323563616131633361303830656233356538
Mon Mar 27 12:40:37 2017 : Debug: (2) &Tmp-String-6 :=
0x54657374436c617373,0x617574685f69643a3066313863343665653637633462323563616131633361303830656233356538
...
Mon Mar 27 12:40:37 2017 : Debug: (2) if (&Class[*] =~ /(.*)/) {
Mon Mar 27 12:40:37 2017 : Debug: (2) if (&Class[*] =~ /(.*)/) ->
TRUE
Mon Mar 27 12:40:37 2017 : Debug: (2) if (&Class[*] =~ /(.*)/) {
Mon Mar 27 12:40:37 2017 : Debug: (2) update request {
Mon Mar 27 12:40:37 2017 : Debug: (2) EXPAND Match: %{1}
Mon Mar 27 12:40:37 2017 : Debug: (2) --> Match:
0x54657374436c617373
Mon Mar 27 12:40:37 2017 : Debug: (2) &Tmp-String-5 := Match:
0x54657374436c617373
Mon Mar 27 12:40:37 2017 : Debug: (2) } # update request = noop
Mon Mar 27 12:40:37 2017 : Debug: (2) } # if (&Class[*] =~
/(.*)/) = noop
Same problem. %{&Class[*]} when used contains only the first instance.
>
> I think this should work if you are on FreeRADIUS 3.x. That is, only
> the first match should be used. (But I've not tested it myself)
>
>> - foreach statement:
>> "%{string:%{Foreach-Variable-0}}" results in an empty string
> ...
>> (3) Mon Mar 27 11:33:31 2017: Debug: EXPAND Foreach-Variable-0
>> (3) Mon Mar 27 11:33:31 2017: Debug: -->
>> 0x54657374436c617373
> That doesn't look empty to me. 54=T, 65=e, 63=s 74=t etc.
Please look few lines later. The problem is the string conversion of
%{Foreach-Variable-0}
>
> The underlying issue is that 'Class' is not a string attribute, so
> it's hard to treat it as such. I have in the past modified the
> dictionary so that Class *is* a string. But in general, it could
> contain binary data, and FreeRADIUS isn't great at handling that if
> the dictionary says the attribute is a String.
>
> Regards,
>
> Brian.
--
----------------------------------------------------------------
I'm not a complete idiot, some parts are missing.
----------------------------------------------------------------
Ing. Andrea Gabellini
Email: andrea.gabellini at telecomitalia.sm
Skype: andreagabellini
Tel: (+378) 0549 886111
Fax: (+378) 0549 886188
Telecom Italia San Marino S.p.A.
Via XXVIII Luglio, 212 - Piano -2
47893 Borgo Maggiore
Republic of San Marino
http://www.telecomitalia.sm
More information about the Freeradius-Users
mailing list