NAME
Data::Radius::Packet - module to encode/decode RADIUS messages
SYNOPSYS
use Data::Radius::Constants qw(:all);
use Data::Radius::Packet;
my $dictionary = Data::Radius::Dictionary->load_file('./radius/dictionary');
my $packet = Data::Radius::Packet->new(secret => 'top-secret', dict => $dictionary);
# build request packet:
my ($request, $req_id, $authenticator) = $packet->build(
type => ACCESS_REQUEST,
av_list => [
{ Name => 'User-Name', Value => 'JonSnow'},
{ Name => 'Password', Value => 'Castle Black' },
{ Name => 'Message-Authenticator', Value => '' },
],
);
# ... send $request and read $reply binary packets from RADIUS server
# parse reply packet:
my ($reply_type, $reply_id, $reply_authenticator, $av_list) = $packet->parse($reply, $authenticator);
DESCRIPTION
The "Data::Radius::Packet" module provides a methods to encode/decode
RADIUS messages. It can be used to implement both Radius client or
Radius server.
CONSTRUCTOR
new ( secret => SECRET, dict => DICTIONARY )
Create a new object. All arguments are optional. Dictionary is
object of "Data::Radius::Dictionary" which allow to use attribute
names instead of codes. Secret is global secret string, can be
overrided when building a new packet.
METHODS
build ( type => CODE, av_list => AVLIST, [ authenticator => AUTH ], [
dict => DICTIONARY ], [ secret => SECRET ], [ with_msg_auth => BOOL ], [
request_id => BYTE ])
Build a binary-encoded RADIUS packet.
"type" identify type of RADIUS request. They are defined in
Data::Radius::Constants.
"av_list" is ARRAY-REF of attributes, each defined as HASH-REF with
keys {Name, Value} or {Id, [VendorId], Value}
"authenticator" is optional for request (by default the random value
will be used), but required for replies.
"secret" and "dict" can be used to override values from constructor
(for example to use individual secrets for different Radius
servers).
"with_msg_auth" can be passed to append Message-Authenticator
attribute. It also can be archived by adding this attribyte to AV
list with empty value
"request_id" - allow to define own it. By default internal sequence
is used. Value must be in range 0-255 (1byte)
parse ($radius_packet, [$request_authenticator])
Parse binary-encoded RADIUS packet to list of attributes
Returns multiple values: RADIUS code, request id, authenticator,
ARRAY-REF of attributes
request_id ($radius_packet)
Returns request id from packet without parsing it's attribues. Can
be used to choose request authenticator before parsing the response
packet in full.
SEE ALSO
Data::Radius::Constants, Data::Radius::Dictionary
AUTHOR
Sergey Leschenko <sergle.ua at gmail.com>
PortaOne Development Team <perl-radius at portaone.com> is the current
module's maintainer at CPAN.