The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::Radius::SSG - Perl extension for communicating with a Cisco SSG (Service Selection Gateway) router.

SYNOPSIS

  use Net::Radius::SSG;
  my $ssg = new Net::Radius::SSG($ssg_ip, $ssg_port, $ssg_shared_secret, $dictionary);
  my $radius_packet = $ssg->action(SSG_ACCOUNT_LOGON, 
        { user_ip => '1.2.3.4',
          user_id => 'testuser',
          password => 'password' });
  if ($radius_packet->code eq 'Access-Accept') {
          print "User successfully logged on to the SSG\n";
  }
  ...

DESCRIPTION

Net::Radius::SSG is for communicating with a Cisco SSG router via the Service Selection Dashboard (SSD) protocol which is implemented over RADIUS. This module requires Net::Radius and Net::UDP.

new

$ssg_object = new Net::Radius::SSG($ip,$port,$secret, $dictionary_file);

Creates a new SSG (Service Selection Gateway) object. Requires the SSG IP address (or hostname), the Radius port that the SSG is listening on, the Radius shared secret and the location of a Merit dictionary file. Please see the Net::Radius::Dictionary documentation for further information on dictionary files.

action

my $radius_packet = $ssg_object->action(ACTION, \%params);

Requires an action (one of SSG_ACCOUNT_LOGON, SSG_ACCOUNT_LOGOFF, SSG_ACCOUNT_PING, SSG_SERVICE_LOGON or SSG_SERVICE_LOGOFF) plus a hash containing the parameters. The action function returns a Net::Radius::Packet object. The params hash differs for each action. All actions understand the {timeout => SECONDS} option. The timeout parameter specifies how long the action function will wait for a reply from the SSG.

The list of parameters are: user_id => $username, user_ip => $ip_address, service => $service_name, timeout => $seconds.

The various actions are:

SSG_ACCOUNT_PING

This action sends an 'account ping' command code to the SSG, used to return the username of the person logged in on a particular IP address.

$rp = $ssg_object->action(SSG_ACCOUNT_PING, { user_ip => '1.2.3.4' });

if ($rp->code eq 'Access-Accept') {

        if (defined $rp->attr('User-Name')) {
        
                print $rp->attr('User-Name');
        
        }

}

SSG_ACCOUNT_LOGON

This action sends an 'account logon' command code to the SSG. Requires the user_id, user_ip and password values to be set.

SSG_ACCOUNT_LOGOFF

This action sends an 'account logoff' command code to the SSG. Requires the user_id and user_ip values to be set.

SSG_SERVICE_LOGON

This action sends a 'service logon' command code to the SSG. Requires the user_ip and service values to be supplied.

SSG_SERVICE_LOGOFF

This action sends a 'service logoff' command code to the SSG. Requires the user_ip and service values to be supplied.

EXPORT

SSG_ACCOUNT_PING SSG_ACCOUNT_LOGON SSG_ACCOUNT_LOGOFF SSG_SERVICE_LOGON SSG_SERVICE_LOGOFF

SEE ALSO

Net::Radius::Packet, Net::Radius::Dictionary, Net::UDP

AUTHOR

Chris Myers, <c.myers@its.uq.edu.au>

COPYRIGHT AND LICENSE

Copyright 2004 by Chris Myers

This software comes with no warranty whatsoever and the author is not liable for the outcomes of the use of this software.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.