On 11/25/2011 11:02 AM, Alexander Hartmaier wrote:

> @list: please feel free to suggest improvements or simplification if 
> possible!

The code looks fine. I thought I'd say a couple of words how I have been
doing hooks lately.

Instead of creating an individual file for each hook, they can collected
into one file. Something like this should work:

# ProxyHooks.pm
#
package ProxyHooks;
use strict;
use warnings;

my $h = "ProxyHooks"; # Common prefix for log entries

sub reply {
     my $p  = ${$_[0]};  # reply packet from remote radius server
     my $rp = ${$_[1]};  # reply packet to NAS
     my $op = ${$_[2]};  # original request packet
     my $sp = ${$_[3]};  # packet sent to remote radius server
     my $nextIdentifier = $_[4]; # See config example for this

     main::log($main::LOG_DEBUG, "$h: reply: $nextIdentifer");
     # rest of the hook code
}

sub noReply {
     # more code
}

# More functions

# End module with this line
1;


How to to use in configuration file:

StartupHook sub { require "/etc/radiator/ProxyHooks.pm"; }

<Handler ...>
  <AuthBy RADIUS>
    Identifier auth-radius1
    ReplyHook sub { ProxyHooks::reply(@_, 'auth-radius2'); }
    # ...
  </AuthBy>
  <AuthBy RADIUS>
    Identifier auth-radius2
    # ...
  </AuthBy>
</Handler>

Notes about the above:
- all hooks in one file: reduces clutter in config directory
- possibility to add own arguments to hook calls
- can use functions in .pm. Not everything has to be in one sub
- use strict etc. can be specified only once
- same functionality as with individual files, just organised differently


-- 
Heikki Vatiainen <[email protected]>

Radiator: the most portable, flexible and configurable RADIUS server
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS,
TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
DIAMETER etc. Full source on Unix, Windows, MacOSX, Solaris, VMS,
NetWare etc.
_______________________________________________
radiator mailing list
[email protected]
http://www.open.com.au/mailman/listinfo/radiator

Reply via email to