В документе описывается создания дополнительного сервера доступа (Network Access Server - NAS) с его собственаными правилами авторизации и аккаунтинга.
Базовый модуль авторизации Auth.pm (Abills/mysql/Auth.pm).
Базовый модуль аккаунтинга Acct.pm (Abills/mysql/Acct.pm).
Если у Вас появилась необходимость поменять правила авторизации или аккаунтинга для системы можно просто создать дополнительный NAS и применять к нему Ваши собственные правила авторизации или аккаунтинга.
Для примера создадим новый NAS ppp_test
Abills/mysql/Ppp_test_auth.pm
package Ppp_test_auth;
#Test Auth module
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK
%EXPORT_TAGS $VERSION);
use Exporter;
$VERSION = 2.00;
@ISA = ('Exporter');
@EXPORT_OK = ();
%EXPORT_TAGS = ();
use main;
@ISA = ("main");
my $db;
my $CONF;
my $debug=0;
#****************************************
# Init
#****************************************
sub new {
my $class = shift;
($db, $CONF) = @_;
my $self = { };
bless($self, $class);
return $self;
}
#****************************************
# Auth function
#
# auth($RAD, $NAS)
# $RAD - Request Rad pairs
#
# $NAS - Nas information object
#
# Return $auth_code, Rad_pairs_hash_ref
# $auth_code
# 0 - Allow
# 1 - Deny
#****************************************
sub auth {
my $self = shift;
my ($RAD, $NAS, $attr)=@_;
#Response Rad pairs
my %RAD_PAIRS = (
'Framed-IP-Address' => '192.168.111.10'
);
return 0, \%RAD_PAIRS;
}
1
Модуль аккаунтинга можно взять уже имеющийся в системе и скопировать его в новый файл:
# Abills/mysql/ # cp Acct.pm Ppp_test_acct.pm
Открываем новые файлы и меняем названия пакетов: Ppp_test_acct.pm в первой строке
package Acct;
меняем на
package Ppp_test_acct;
Описание сервера:
$conf{nas_servers} = {
'ppp_test' => 'PPP test NAS server'
};
Правила авторизации после строки %AUTH = ();
%AUTH = ();
$ACCT{ppp_test} = 'Ppp_test_auth';
Правила аккаунтинга после строки %ACCT = ();
%ACCT = ();
$AUTH{ppp_test} = 'Ppp_test_acct';
После этого можно вносить любые изминения в Ваши новые модули для авторизации или аккаунтинга.