Net::Radius::Server::Match - Base class for match methods
package My::Radius::Match;
use base 'Net::Radius::Server::Match';
__PACKAGE__->mk_accessors(qw/foo bar baz/);
sub match_foo { ... }
sub match_bar { ... }
sub match_baz { ... }
# Meanwhile, in a configuration file nearby...
my $match = My::Radius::Match->new({ foo => 'x', bar => 'y' });
my $match_sub = $match->mk;
...
# Alternatively, in a more compact notation...
my $match_sub = My::Radius::Match->mk({ foo => 'x', bar => 'y' });
"Net::Radius::Server::Match" is a base class
for developing "match" methods to be used in
"Net::Radius::Server" rules.
- "->new($hashref)"
- Creates a new
"Net::Radius::Server::Match" object.
$hashref referenes a hash with the attributes that
will apply to this object, so that multiple match methods (that will share
the same underlying object) can be created and given to different
rules.
- "$self->mk()" or
"__PACKAGE__->mk($hashref)"
- This method returns a sub suitable for calling as a match method for a
"Net::Radius::Server" rule. The
resulting sub will return either
"NRS_MATCH_OK" or
"NRS_MATCH_FAIL" depending on its
result.
The sub contains a closure where the object attributes --
Actually, the object itself -- are kept.
When invoked as an object method (ie,
"$self->mk()"), no arguments can be
given. The object is preserved as is within the closure.
When invoked as a class method (ie,
"__PACKAGE__->mk($hashref)"), a new
object is created with the given arguments and then, this object is
preserved within the closure. This form is useful for compact filter
definitions that require little or no surrounding code or holding
variables.
- "->_match()"
- This method is internally called by the sub returned by the call to
"->mk()" and should not be called
explicitly. This method iterates through the existing elements in the
object -- It is assumed that it is a blessed hash ref, as left by
"Class::Accessor".
This method tries to invoke
"$self-"match_$element(@_)>,
passing the same arguments it receives - Note that normally, those are
the same that were passed to the sub returned by the factory.
See the source of
"Net::Radius::Server::Match::Simple".
This is much simpler than it sounds. Really.
The calls are done in "short circuit". This means
that the first method returning
"NRS_MATCH_FAIL" will cause this
result to be returned.
Arguments with no corresponding
"match_*" method are ignored.
Arguments whose name start with "_" are also ignored.
By default, this method will return
"NRS_MATCH_OK".
As shown in the example in the SYNOPSIS, your derived class must provide a
"match_*" method for each attribute you
define.
The method must return any of the
"NRS_MATCH_*" constants to indicate its
result.
$Log$
Revision 1.6 2006/12/14 16:33:17 lem
Rules and methods will only report failures in log level 3 and
above. Level 4 report success and failure, for deeper debugging
Revision 1.5 2006/12/14 15:52:25 lem
Fix CVS tags
Perl(1), Class::Accessor(3), Net::Radius::Server(3).
Luis E. Muñoz, <luismunoz@cpan.org>
Copyright (C) 2006 by Luis E. Muñoz
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl 5.8.6 itself.
Hey! The above document had some coding errors, which are explained
below:
- Around line 211:
- Non-ASCII character seen before =encoding in 'Muñoz,'. Assuming
UTF-8