If statement regex match with multiple similar attributes
    jberry at plus.net 
    jberry at plus.net
       
    Thu Jan  8 11:03:07 CET 2015
    
    
  
> Is upgrading your FreeRADIUS a possibility? Starting from version 3,
> there is a foreach statement in unlang, that can loop through the
>results.
Sadly not. We are planning to do this but have custom modules at the
moment which need to be purged/rewritten but this is good knowledge for
when we do!
> Otherwise, if it is always the second Class, you could use
> %{reply:Class[1]}, but this feels a bit like a hack. There are some
> hints about this in the man page of unlang.
I will have to go with this for now. I did find a further improvement to
this that works so replying to the list in case anyone else finds it
useful:
  if( "%{reply:Class[*]}" =~ /.*0x434653494421.*/ ) {
    update reply {
      ...
    }
  }
This assesses the array containing all Class attrs as a string (I think)
so providing you are looking for something you know is going to be unique
it works a treat:
  ++? if ("%{reply:Class[*]}" =~ /.*0x434653494421.*/ )
  expand: %{reply:Class[*]} ->
0x5030323a3***************************************
0x434653494421****************
  ? Evaluating ("%{reply:Class[*]}" =~ /.*0x434653494421.*/) -> TRUE
P.s. Sorry if I messed up anyones threading, had the list in digest mode
and couldn¹t work out how to reply!
Many thinks
--
Josh Berry
Senior Systems Engineer
Plusnet PLC | www.plus.net
Phone: 01142 733547
Registered Office: The Balance | 2 Pinfold Street | Sheffield | S1 2GU
Registered in England no: 3279013
    
    
More information about the Freeradius-Users
mailing list