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' },{ Name => 'h323-return-code', Value => '0' }, # Cisco AV pair{ Name => 'Digest-Attributes', Value => { Method => 'REGISTER' } });$r->send_packet (1) 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] [, 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) or"Authen::Radius::strerror"(verbose error string). If you do not specify port in the"Host"as a"hostname: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 1812. Optional parameter"Debug"with 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 just"User-Name"/"Password".
- check_pwd ( USERNAME, PASSWORD )
-
Checks with the Radius server if the specified
"PASSWORD"is valid for user"USERNAME". This method is actually a wrapper for subsequent calls to"clear_attributes","add_attributes","send_packet"and"recv_packet". It returns 1 if the"PASSWORD"is 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
"Name"d with their dictionary name (provided a dictionary has been loaded first), or with their raw Radius attribute-type values. The"Type"pair should be specified when adding attributes that are not in the dictionary (or when no dictionary was loaded). Values for"TYPE"can 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
"Name"and"Value"pairs will contain values as translated by the dictionary (if one was loaded). The"Code"and"RawValue"pairs 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". Exported"REQUEST_TYPE"methods are '"ACCESS_REQUEST"', '"ACCESS_ACCEPT"' and '"ACCESS_REJECT"'. 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_TYPE"in method"send_packet") or undef on failure. Note that failure may be due to a failed recv() or a bad Radius response authenticator. Use"get_error"to find out.
- get_error
-
Returns the last
"ERRORCODE"for 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 <[email protected]> - original design Alexander Kapitanenko <[email protected]> and Andrew Zhilenko <[email protected]> - later modifications. Andrew Zhilenko <[email protected]> is a current module's maintaner at CPAN.