Setting Service-Type (perl module)
Rowley, Mathew
Mathew_Rowley at cable.comcast.com
Tue Oct 26 22:37:43 CEST 2010
I am having the strangest behavior with the perl module when trying to set
Service-Type. First, I have a hash of radius attributes and their values
(%AVP) that I want to set. Initially I did:
foreach my $key (keys %AVP)
{
push @{$RAD_REPLY{"$key"}}, $AVP{$key};
}
And it would fail when trying to set 'Service-Type'. So, I then thought
instead of pushing it on to RAD_REPLY, id just set it:
foreach my $key (keys %AVP)
{
$RAD_REPLY{"$key"} = $AVP{$key};
}
Still failed. Then I tried to statically set it:
foreach my $key (keys %AVP)
{
$RAD_REPLY{"$key"} = $AVP{$key};
}
$RAD_REPLY{'Service-Type'} = "Administrative-User";
That seemed to work (before and after the foreach loop). The only fix I
currently have is to do:
1 foreach my $key (keys %AVP)
2 {
3 if($key == 'Service-Type' && $AVP{$key} ==
'Administrative-User'){
4 $RAD_REPLY{'Service-Type'} =
"Administrative-User";
5 } else {
6 $RAD_REPLY{$key} = $AVP{$key};
7 }
8 }
Which makes absolutely no sense to me for a few reasons:
1. Line 3 checks static values, and sets those exact same static values...
Why wouldn¹t it work with variables for the RAD_REPLY key/value?
2. Line 6 will still work with multiple attributes with the same $key
(meaning, there can be 10 "Cisco-AVPair" and it will add them all instead
of just replacing the last one)
Anyone have some insight? Thanks.
On 10/26/10 1:57 PM, "Rowley, Mathew" <Mathew_Rowley at cable.comcast.com>
wrote:
>Thanks I am also not sure that the users file is actually being
>processed. In the debug output I see:
>
>Tue Oct 26 15:36:17 2010 : Debug: usersfile =
>"/opt/freeradius/etc/raddb/users"
>
>But I don¹t see any of the users content from the debug output like I see
>from the other files.
>
>The config files have all been jumbled due to someone else doing
>configurations is there a configuration I need to force processing of
>the users file?
>
>
>
>From: Alexandre Chapellon
><alexandre.chapellon at mana.pf<mailto:alexandre.chapellon at mana.pf>>
>Organization: MANA SAS
>Reply-To: FreeRadius users mailing list
><freeradius-users at lists.freeradius.org<mailto:freeradius-users at lists.freer
>adius.org>>
>Date: Tue, 26 Oct 2010 09:45:04 -1000
>To: FreeRadius users mailing list
><freeradius-users at lists.freeradius.org<mailto:freeradius-users at lists.freer
>adius.org>>
>Subject: Re: Setting Service-Type
>
>A solution would be to use the operator ":=" instead of "=" in users file
>with the default entry (should work using unlang too).
>
>http://wiki.freeradius.org/Operators
>
>
>Le mardi 26 octobre 2010 à 19:23 +0000, Rowley, Mathew a écrit :
>
>I have a perl module that I want to set the Service-Type attribute, but
>am getting this error:
>
>Tue Oct 26 14:54:25 2010 : Debug: rlm_perl: ERROR: Failed to create pair
>Service-Type = Administrative-User
>
>I am thinking its due to the request having the Service-Type already set.
>Does anyone know if its possible to override that?
>
>I have also tried to just statically set the Service-Type in the users
>file via:
>DEFAULT
>Service-Type = Administrative-User
>
>Nothing seems to set it. The request looks like:
>rad_recv: Access-Request packet from host 10.252.152.93 port 32769,
>id=43, length=79
>User-Name = "user"
>User-Password = "pass"
>Service-Type = NAS-Prompt-User
>NAS-IP-Address = 10.252.152.93
>NAS-Identifier = "Security_lab"
>
>Anyone have ideas on how I can change the Service-Type?
>
>
>-
>List info/subscribe/unsubscribe? See
>http://www.freeradius.org/list/users.html
>
>--
>Follow us on: twitter
>https://www.twitter.com/manainternet<https://www.twitter.com/manainternet>
>- List info/subscribe/unsubscribe? See
>http://www.freeradius.org/list/users.html
>
>-
>List info/subscribe/unsubscribe? See
>http://www.freeradius.org/list/users.html
More information about the Freeradius-Users
mailing list