NAME
Authen::Radius - provide simple Radius client facilities
SYNOPSIS
use Authen::Radius;
$r = new Authen::Radius(Host => 'myserver', Secret => 'mysecret');
print "auth result=", $r->check_pwd('myname', 'mypwd'), "\n";
$r = new Authen::Radius(Host => 'myserver', Secret => 'mysecret');
Authen::Radius->load_dictionary();
$r->add_attributes (
{ Name => 'User-Name', Value => 'myname' },
{ Name => 'Password', Value => 'mypwd' },
# RFC 2865 http://www.ietf.org/rfc/rfc2865.txt calls this attribute
# User-Password. Check your local RADIUS dictionary to find
# out which name is used on your system
# { Name => 'User-Password', Value => 'mypwd' },
{ Name => 'h323-return-code', Value => '0' }, # Cisco AV pair
{ Name => 'Digest-Attributes', Value => { Method => 'REGISTER' } }
);
$r->send_packet(ACCESS_REQUEST) and $type = $r->recv_packet();
print "server response type = $type\n";
for $a ($r->get_attributes()) {
print "attr: name=$a->{'Name'} value=$a->{'Value'}\n";
}
DESCRIPTION
The Authen::Radius module provides a simple class that allows you to send/receive Radius requests/responses to/from a Radius server.
CONSTRUCTOR
- new ( Host => HOST, Secret => SECRET [, TimeOut => TIMEOUT] [,Service => SERVICE] [, Debug => Bool])
-
Creates & returns a blessed reference to a Radius object, or undef on failure. Error status may be retrieved with
Authen::Radius::get_error(errorcode) orAuthen::Radius::strerror(verbose error string).The default
Serviceisradius, the alternative isradius-acct. If you do not specify port in theHostas ahostname:port, then port specified in your /etc/services will be used. If there is nothing there, and you did not specify port either then default is 1645 forradiusand 1813 forradius-acct.Optional parameter
Debugwith a Perl "true" value turns on debugging (verbose mode).
METHODS
- load_dictionary ( [ DICTIONARY ] )
-
Loads the definitions in the specified Radius dictionary file (standard Livingston radiusd format). Tries to load '
/etc/raddb/dictionary' when no argument is specified, or dies. NOTE: you need to load valid dictionary if you plan to send Radius requests with other attributes than justUser-Name/Password. - check_pwd ( USERNAME, PASSWORD [,NASIPADDRESS] )
-
Checks with the Radius server if the specified
PASSWORDis valid for userUSERNAME. UnlessNASIPADDRESSis soecified, 127.0.0.1 will be placed in the NAS-IP-Address attribute. This method is actually a wrapper for subsequent calls toclear_attributes,add_attributes,send_packetandrecv_packet. It returns 1 if thePASSWORDis correct, or undef otherwise. - add_attributes ( { Name => NAME, Value => VALUE [, Type => TYPE] [, Vendor => VENDOR] }, ... )
-
Adds any number of Radius attributes to the current Radius object. Attributes are specified as a list of anon hashes. They may be
Named with their dictionary name (provided a dictionary has been loaded first), or with their raw Radius attribute-type values. TheTypepair should be specified when adding attributes that are not in the dictionary (or when no dictionary was loaded). Values forTYPEcan be 'string', 'integer', 'ipaddr' or 'avpair'. - get_attributes
-
Returns a list of references to anon hashes with the following key/value pairs : { Name => NAME, Code => RAWTYPE, Value => VALUE, RawValue => RAWVALUE, Vendor => VENDOR }. Each hash represents an attribute in the current object. The
NameandValuepairs will contain values as translated by the dictionary (if one was loaded). TheCodeandRawValuepairs always contain the raw attribute type & value as received from the server. - clear_attributes
-
Clears all attributes for the current object.
- send_packet ( REQUEST_TYPE )
-
Packs up a Radius packet based on the current secret & attributes and sends it to the server with a Request type of
REQUEST_TYPE. ExportedREQUEST_TYPEmethods are 'ACCESS_REQUEST', 'ACCESS_ACCEPT' , 'ACCESS_REJECT', 'ACCOUNTING_REQUEST', 'ACCOUNTING_RESPONSE', and 'DISCONNECT_REQUEST'. Returns the number of bytes sent, or undef on failure. - recv_packet
-
Receives a Radius reply packet. Returns the Radius Reply type (see possible values for
REQUEST_TYPEin methodsend_packet) or undef on failure. Note that failure may be due to a failed recv() or a bad Radius response authenticator. Useget_errorto find out. - get_error
-
Returns the last
ERRORCODEfor the current object. Errorcodes are one-word strings always beginning with an 'E'. - strerror ( [ ERRORCODE ] )
-
Returns a verbose error string for the last error for the current object, or for the specified
ERRORCODE.
AUTHOR
Carl Declerck <carl@miskatonic.inbe.net> - original design Alexander Kapitanenko <kapitan@portaone.com> and Andrew Zhilenko <andrew@portaone.com> - later modifications. Andrew Zhilenko <andrew@portaone.com> is a current module's maintaner at CPAN.