[RADIATOR] Framed-Route maniuplation
Hugh Irvine
hugh at open.com.au
Wed Oct 27 02:58:41 CDT 2010
Hello Ian -
The PostProcessingHook is not called with $result, so using it will not work.
Try something more like this:
sub
{
my $p = ${$_[0]};
my $rp = ${$_[1]};
my $profile = $rp->get_attr('Framed-Route');
my $ip = $rp->get_attr('Framed-IP-Address');
return unless defined $profile && defined $ip;
my $framedroute = "$profile $ip";
&main::log($main::LOG_DEBUG, "Framed-Route = $framedroute");
$rp->change_attr('Framed-Route', $framedroute);
return;
}
Put the above in a file called for example "framed_route.pl" in your DbDir directory, and call it from your configuration file as follows:
<Handler …..>
…..
PostProcessingHook file:"%D/framed_route.pl"
</Handler>
I haven't tested the above, but you should get the idea.
regards
Hugh
On 27 Oct 2010, at 18:32, Ian Mordey wrote:
> Ok. Please excuse my awful perl skills.. I've used an example from
> hooks.txt mainly your replaceProfiles code. Can someone please point me
> in the direction of where I'm going wrong?
>
> Thanks
>
> PostProcessingHook sub
> {
> my $p = ${$_[0]};
> my $rp = ${$_[1]};
> my $result = ${$_[2]};
> my $profile;
> my $ip;
>
> if (($result == $main::ACCEPT) &&
> ($profile = $rp->get_attr('Framed-Route')) &&
> ($ip = $rp->get_attr('Framed-IP-Address')) )
> { \
> &main::log($main::LOG_DEBUG,
> "Framed-Route = $profile $ip");
> $rp->delete_attr('Framed-Route');
> $rp->parse(&main::getVariable($profile));
> }
> return;
> }
>
>
>
> -----Original Message-----
> From: Hugh Irvine [mailto:hugh at open.com.au]
> Sent: 26 October 2010 15:42
> To: Ian Mordey
> Cc: radiator at open.com.au
> Subject: Re: [RADIATOR] Framed-Route maniuplation
>
>
> Hello Ian -
>
> You will need to use something like a PostProcessingHook to deal with
> the reply attributes in the reply packet.
>
> There are numerous examples of various hooks in the file
> "goodies/hooks.txt".
>
> regards
>
> Hugh
>
>
> On 27 Oct 2010, at 00:05, Ian Mordey wrote:
>
>> Hi there
>> I'm trying to replicate a response from one radiator server to another
> with a different SQL backend and schema. I'm struggling to get the
> Framed-Route attribute formatted properly.
>>
>> Our client expects a framed route including the gateway like this:
>> Framed-Route = "1.2.3.4/29 1.2.3.5"
>>
>> The new server sends a framed route
>> Framed-Route = "1.2.3.4/29"
>>
>> So I need to rewrite the Framed-Route with "1.2.3.4/29" followed by
> the Framed-IP-Address. This is also conditional because the
> Framed-Route in the reply attributes doesn't always exist.
>>
>> The problem I'm struggling with is that the reply attributes on the
> SQL backend are all in one column ReplyAttr for example:
>>
>> mysql> select ReplyAttr from UserProfiles where ReplyAttr like
>> mysql> '%Route%' limit 1;
>>
> +-----------------------------------------------------------------------
> -------------------------------------------------+
>> | ReplyAttr
> |
>>
> +-----------------------------------------------------------------------
> -------------------------------------------------+
>> | Service-Type = Framed-User, Framed-Protocol = PPP, Framed-IP-Address
>
>> | = 1.2.3.5, Framed-Route = 1.2.3.4/29 |
>>
>> How can I manipulate the Framed-Route attribute when it is all in the
> same column?
>>
>> Cheers
>> Ian
>> _______________________________________________
>> radiator mailing list
>> radiator at open.com.au
>> http://www.open.com.au/mailman/listinfo/radiator
>
>
>
> NB:
>
> Have you read the reference manual ("doc/ref.html")?
> Have you searched the mailing list archive
> (www.open.com.au/archives/radiator)?
> Have you had a quick look on Google (www.google.com)?
> Have you included a copy of your configuration file (no secrets),
> together with a trace 4 debug showing what is happening?
>
> --
> Radiator: the most portable, flexible and configurable RADIUS server
> anywhere. Available on *NIX, *BSD, Windows, MacOS X.
> Includes support for reliable RADIUS transport (RadSec), and DIAMETER
> translation agent.
> -
> Nets: internetwork inventory and management - graphical, extensible,
> flexible with hardware, software, platform and database independence.
>
>
>
>
NB:
Have you read the reference manual ("doc/ref.html")?
Have you searched the mailing list archive (www.open.com.au/archives/radiator)?
Have you had a quick look on Google (www.google.com)?
Have you included a copy of your configuration file (no secrets),
together with a trace 4 debug showing what is happening?
--
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. Available on *NIX, *BSD, Windows, MacOS X.
Includes support for reliable RADIUS transport (RadSec),
and DIAMETER translation agent.
-
Nets: internetwork inventory and management - graphical, extensible,
flexible with hardware, software, platform and database independence.
More information about the radiator
mailing list