[RADIATOR] DefaultSimultaneousUse while using AuthRADIUS

Michael ringo at vianet.ca
Mon Dec 23 10:54:50 CST 2013


On 23/12/13 04:23 AM, Heikki Vatiainen wrote:
> On 12/20/2013 10:59 PM, Michael wrote:
>> This ReplyHook definitely did the trick, except for not showing a proper
>> error message.  it just shows 'Proxied' as the error.  Is there a way to
>> change the error message?  The source kinda looks like the error message
>> is hard coded to be 'Proxied' so i thought maybe this could be passed to
>> another AuthBy when rejected, configured to reject with a fixed message,
>> and set the redirected flag in the hook?
> You could do $p->add_attr('Reply-Message', ...) to push Reply-Message
> attribute in the reply received from the proxy. The Reply-Message should
> be logged in AuthLog if it is present in the reply. I'd say this is the
> easiest way to handle error message with the hook.
>
> Please let us know how the simultaneous use modifications work.
>
> Thanks,
> Heikki

The setting of the Reply-Message didn't seem to work.  The error message still says 'Proxied' for when it's a DefaultSimultaneousUse error.  It looks to me like this 'Proxied' error message is hard coded in the source.  The only place I see this text is here:

Radius/AuthRADIUS.pm:    ($op, $op->{RadiusResult}, 'Proxied')
Radius/AuthRADIUS.pm:    $p->{Handler}->handlerResult($p, 
$p->{RadiusResult}, 'Proxied');
Radius/AuthRADSEC.pm:    $p->{Handler}->handlerResult($p, 
$p->{RadiusResult}, 'Proxied');
Radius/AuthRADSEC.pm:    ($op, $op->{RadiusResult}, 'Proxied')

a closer look:
# Send this new reply packet back to wherever the
# original packet came from
$op->{Handler}->handlerResult($op, $op->{RadiusResult}, 'Proxied') 
unless (   ($self->{IgnoreReject} && $p->code eq 'Access-Reject') || 
($self->{IgnoreAccountingResponse} && $p->code eq 'Accounting-Response'));

If i change the 'Proxed' text here the changes do show in the authlog.  
I guess having the ability to set an error test message for the AuthLog 
would require modifying this source?  It's always nice to have a proper 
error message for the technical support people.

But again, yes the actual DefaultSimultaneousUsecheck suggested, in the 
ReplyHook does seem to be working fine.







>
>>
>> On 19/12/13 03:28 PM, Heikki Vatiainen wrote:
>>> On 12/18/2013 11:43 PM, Michael wrote:
>>>> I've gotten closer using an AuthBy GROUP around AuthBy RADIUS, but it
>>>> seem to:
>>>>
>>>> 1. receive the auth request
>>>> 2. proxy it to the host
>>>> 3. check the session db before the reply comes back and reject if
>>>> need be.
>>>> 4. send the reject to the lns device.
>>>> 5. send the accept from the proxy to the lns device.
>>> This comes from AuthBy GROUP first evaluating all its AuthBys and then
>>> doing DefaultSimultaneousUse check. When the check is done the request
>>> has already been proxied to the next hop.
>>>
>>> You could consider a ReplyHook that does the check. I'd think something
>>> like below should work.
>>>
>>> sub {
>>>       my $p = ${$_[0]};   # proxy reply packet
>>>       my $rp = ${$_[1]};  # reply packet to NAS
>>>       my $op = ${$_[2]};  # original request packet
>>>       my $sp = ${$_[3]};  # packet sent to proxy
>>>
>>>       return unless $p->code eq 'Access-Accept';
>>>
>>>       my $limit = $sp->{ThisAuth}->{DefaultSimultaneousUse};
>>>       if
>>> (Radius::SessGeneric::find($op->{Handler}->{SessionDatabase})->exceeded(
>>>           $limit, $op->{OriginalUserName}, $op))
>>>       {
>>>            $op->{RadiusResult} = $main::REJECT;
>>>       }
>>> }
>>>
>>> Please let us know how it works.
>>>
>>> Thanks,
>>> Heikki
>>>
>>>
>



More information about the radiator mailing list