Re: rml_perl is not adding attributes to Access-accept

2011-08-03 Thread Bjørn Mork
Igor Xpinha  writes:

> # This is very important ! Without this script will not get the filled hashesh
> from main.
> use vars qw(%RAD_REQUEST %RAD_REPLY %RAD_CHECK);
> #use Data::Dumper;
>
> # This is hash wich hold original request from radius
> my %RAD_REQUEST;
> # In this hash you add values that will be returned to NAS.
> my %RAD_REPLY;
> #This is for check items
> my %RAD_CHECK;

drop the "my" scoping of any variables you want to change.


Bjørn

-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

rml_perl is not adding attributes to Access-accept

2011-08-02 Thread Igor Xpinha
I'm new to FreeRADIUS and was initially exploring simple things, such
as add attributes to an Access-Accept message.

My problem is that the perl script is not being able to access (ie
print) values from RAD_REQUEST nor add pairs to RAD_REPLY.

The following script:

*** start of example.pl script ***
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
#  Copyright 2002  The FreeRADIUS server project
#  Copyright 2002  Boian Jordanov 
#

#
# Example code for use with rlm_perl
#
# You can use every module that comes with your perl distribution!
#
# If you are using DBI and do some queries to DB, please be sure to
# use the CLONE function to initialize the DBI connection to DB.
#

use strict;
# use ...
# This is very important ! Without this script will not get the filled hashesh
from main.
use vars qw(%RAD_REQUEST %RAD_REPLY %RAD_CHECK);
#use Data::Dumper;

# This is hash wich hold original request from radius
my %RAD_REQUEST;
# In this hash you add values that will be returned to NAS.
my %RAD_REPLY;
#This is for check items
my %RAD_CHECK;

#
# This the remapping of return values
#
use constantRLM_MODULE_REJECT=>0;#  /* immediately reject the
request */
use constantRLM_MODULE_FAIL=>  1;#  /* module failed, don't
reply */
use constantRLM_MODULE_OK=>2;#  /* the module is OK,
continue */
use constantRLM_MODULE_HANDLED=>   3;#  /* the module handled the
request, so stop. */
use constantRLM_MODULE_INVALID=>   4;#  /* the module considers the
request invalid. */
use constantRLM_MODULE_USERLOCK=>  5;#  /* reject the request (user
is locked out) */
use constantRLM_MODULE_NOTFOUND=>  6;#  /* user not found */
use constantRLM_MODULE_NOOP=>  7;#  /* module succeeded without
doing anything */
use constantRLM_MODULE_UPDATED=>   8;#  /* OK (pairs modified) */
use constantRLM_MODULE_NUMCODES=>  9;#  /* How many return codes
there are */

# Function to handle authorize
sub authorize {
# For debugging purposes only
&log_request_attributes;

# Here's where your authorization code comes
# You can call another function from here:
&test_call;

return RLM_MODULE_OK;
}

# Function to handle authenticate
sub authenticate {
# For debugging purposes only
&log_request_attributes;

print "* testing auth\n";
print $RAD_REQUEST{'User-Name'};
print "\n **\n";

if ($RAD_REQUEST{'User-Name'} =~ /^baduser/i) {
# Reject user and tell him why
$RAD_REPLY{'Reply-Message'} = "Denied access by rlm_perl
function";
return RLM_MODULE_REJECT;
} else {
# Accept user and set some attribute
$RAD_REPLY{'h323-credit-amount'} = "100";
return RLM_MODULE_OK;
}


# Accept user and set some attribute
$RAD_REPLY{'h323-credit-amount'} = "100";
return RLM_MODULE_OK;
}

# Function to handle preacct
sub preacct {
# For debugging purposes only
&log_request_attributes;

return RLM_MODULE_OK;
}

# Function to handle accounting
sub accounting {
print "* accounting\n";
# For debugging purposes only
&log_request_attributes;

# You can call another subroutine from here
&test_call;

return RLM_MODULE_OK;
}

sub accounting_start {
print "* accounting_start\n";
return RLM_MODULE_OK;
}

sub accounting_stop {
print "* accounting_stop\n";
return RLM_MODULE_OK;
}
# Function to handle checksimul
sub checksimul {
# For debugging purposes only
&log_request_attributes;

return RLM_MODULE_OK;
}

# Function to handle pre_proxy
sub pre_proxy {
# For debugging purposes only
&log_request_attributes;

return RLM_MODULE_OK;
}

# Function to handle post_proxy
sub post_proxy {
# For debugging purposes only
&log_request_attributes;

return RLM_MODULE_OK;
}

# Function to handle post_auth
sub post_auth {
# For debugging purposes only
&log_request_attributes;

return RLM_MODULE_OK;
}

# Function to handle xlat
sub xlat {