Kanwar Ranbir Sandhu <m3freak@thesandhufamily.ca> wrote:
I want to use unlang to trim the Calling-Station-Id coming from the NAS to only include the MAC address. I know what to do, and how to write the unlang lines. But, I'm not sure where those lines should go.
At the moment, I put them in my virtual server's "preacct" section, like so (ugly wrapping):
preacct { preprocess if (Calling-Station-Id =~ /(pppoe )([0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f])(.)/) { update request { Calling-Station-Id := "%{2}" } } acct_unique suffix }
(yes, I could probably optimize the regex)
Yes...you could :) In my system, I use the following to RFCese the incoming Calling-Station-ID: ---- if ( "%{request:Calling-Station-Id}" =~ /^([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2}).?([0-9a-f]{2})$/i ) { update request { Calling-Station-Id := "%{1}-%{2}-%{3}-%{4}-%{5}-%{6}" } } ---- In your situation you just probably need to remove the '^' and '$' from the regex. If you also make this a policy, then you can make your configuration simpler.
As far as I can see, this is working. The "callingstationid" field in the radacct table now only contains the MAC address. Interim accounting updates appear to be updating the rows properly as well. I don't see any obvious problems.
Should I be putting the Calling-Station-Id rewriting in other sections as well? I was thinking perhaps the "authorization" and/or "post-auth" sections should have it, too.
As this is just for logging, you probably just want the amendment in post-auth only, just before you call 'sql' or whatever. However as you have not really said *what* is is you are hoping to get out of all of this, I have no suggestions to make. Cheers -- Alexander Clouter .sigmonster says: I'd like MY data-base JULIENNED and stir-fried!