help need with mysql statement in freeradius

Bishal bishal at baayu.com.np
Fri May 16 03:55:31 CEST 2008


I am getting core dumped while running that script.

rlm_perl: perl_embed:: module = /usr/local/etc/raddb/mac_check.pl , func
= authorize exit status= Undefined subroutine &main::authorize called
Segmentation fault (core dumped)

##Script part
use vars qw(%RAD_REQUEST %RAD_REPLY %RAD_CHECK);



$username = $RAD_REQUEST{'User-Name'};
$callerid = $RAD_REQUEST{'Calling-Station-Id'};

Is this the right process of getting value from the request ? How can I
bypass perl function Authorization, authentication, accounting so that
only MAC assignment process will be done by this script?

Thanks





On 5/15/2008, "Ivan Kalik" <tnt at kalik.net> wrote:

>PS. You should run your script in authorize.
>
>Ivan Kalik
>Kalik Informatika ISP
>
>
>Dana 15/5/2008, "Bishal" <bishal at baayu.com.np> pi¹e:
>
>>
>>Hello Ivan,
>>
>>  I came up with this scripts but looks like it;s not working. In
>>radiusd.conf
>>
>>perl{
>>  modules = /usr/local/etc/raddb/mac_check.pl
>> }
>>
>>Instantiate {
>>  exec
>>  expr
>> dailycounter
>> noresetcounter
>> perl
>>}
>>
>>radius debug shows perl modules loaded. But my script is not working. How
>>can I assign variables username and callingStationid in my script during
>>authentication process. rlm_perl doc show %RAD_REQUEST{'User-name'}
>>but it's not helping?
>>
>>
>>
>>
>>
>>
>>#!/usr/bin/perl
>># Check for MAC Authentication is enable or not
>>
>>
>>#$username = $ARGV[4];
>>
>>#$username = %RAD_REQUEST{'User-Name'};
>>#$callerid = %RAD_REQUEST{'Calling-Station-Id'};
>>
>>
>>use DBI;
>>
>>
>>
>>        $database = "radius";
>>        $user = "freeradius";
>>        $password = "blaba2r";
>>        $option = "localhost";
>>
>>        $dsn = "DBI:mysql:$database";
>>        $dsn = "DBI:mysql:database=$database;$option";
>>        $dbh = DBI->connect($dsn, $user, $password);
>>
>>        my $sql = $dbh->prepare( "SELECT Usemac FROM radcheck WHERE
>>UserName='$RAD_REQUEST{'User-Name'}' AND Attribute='Expiration'
>>");
>>        my $sql2 = $dbh->prepare( "SELECT Value FROM radcheck WHERE
>>Attribute='Calling-Station-Id' AND UserName='tori' ");
>>        my $sql3 = $dbh->prepare( "INSERT INTO radcheck
>>(id,UserName,Attribute,op,Value)
>>VALUES('','$RAD_REQUEST{'User-Name'}','Calling-Statio
>>n-Id','+=','$RAD_REQUEST{'Calling-Station-Id'}' ");
>>
>>
>>        $rowcount = $sql->execute
>>        or die "Cannot execute SQL statement: $DBI::errstr\n";
>>
>>        my @row;
>>        while ( @row = $sql->fetchrow_array() ) {
>>                $mac = $row[0];
>>                chomp($mac);
>>        }
>># Check if MAC authentication is enabled or not if enabled then insert
>>the mac
>>        if ($mac == 1 ){
>>
>>        $rowcount = $sql3->execute
>>        or die "Cannot execute SQL Statement: $DBI::errstr\n";
>>
>>
>>}else {
>>exit;
>>}
>>$sql->finish;
>>$dbh->disconnect()
>>or warn "Disconnection failed: $DBI::errstr\n";
>>
>>
>>On 5/14/2008, "Bishal" <bishal at baayu.com.np> wrote:
>>
>>>
>>>Any sample scripts IVAN?
>>>
>>>
>>>
>>>On 5/14/2008, "Ivan Kalik" <tnt at kalik.net> wrote:
>>>
>>>>>
>>>>> I am using sql for AAA.
>>>>
>>>>I have news for you - you are not. You are using it to store attributes.
>>>>
>>>>>Can u give me some exaples how can I do that
>>>>>withl Rlm_perl modules.?
>>>>>
>>>>
>>>>Do Google: mysql perl tutorial. If it's not MySQL, replace that with the
>>>>name of your sql server.
>>>>
>>>>Ivan Kalik
>>>>Kalik Informatika ISP
>>>>
>>>>-
>>>>List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
>>>>
>>>>
>>>
>>>-
>>>List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users..html
>>>
>>>
>>
>>-
>>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