This optional parameter allows you to define a Perl function
that is called during packet processing. It can be configured within
several types of clauses for which its functionality is slightly
different:
- Client clause
PreHandlerHook
is called for
each request after per-Client user name rewriting and duplicate
rejection, and before the request is passed to a Realm or Handler
clause.
- AuthBy clause
The functionality depends on the used EAP
authentication type:
- PEAP, EAP-TTLS, EAP-FAST
PreHandlerHook
specifies a Perl hook to be called before the inner request is
re-dispatched to a matching Realm or Handler.
- LEAP
If EAP_LEAP_MSCHAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.
- EAP-MSCHAPv2
If EAP_PEAP_MSCHAP_Convert
flag is set, PreHandlerHook
specifies a Perl
hook to be called before the converted request is re-dispatched to
a matching Realm or Handler.
- EAP-GTC
If EAP_GTC_PAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.
- AuthBy DYNAUTH clause
PreHandlerHook
is
called for each request created by the clause before the request is
passed to a Realm or Handler clause.
- ServerRADSEC clause
PreHandlerHook
is
called for each request after global and per-ServerRADSEC user name
rewriting and before the request is passed to a Realm or Handler
clause.
- ServerDIAMETER clause
PreHandlerHook
is
called for each request received by ServerDIAMETER before the request
is passed to a Realm or Handler clause.
- ServerTACACSPLUS clause
PreHandlerHook
is
called for each request before it is passed to a Realm or Handler
clause. If a Client is found for the request, Client's
PrehandlerHook
is run before ServerTACASPLUS's
PreHandlerHook
. Global and per-Client user name
rewriting and other processing is done before the hooks are
run.
A reference to the request is passed as the only
argument.
The hook code is compiled by Perl when Radiator starts up.
Compilation errors in your hook code are reported to the log file at
start-up time. Runtime errors in your hook are also reported to the log
file when your hook executes. Multiline hooks with trailing backslashes
(\) are parsed by Radiator into one long line. Therefore, do not use
trailing comments in your hook.
PreHandlerHook
can be an arbitrarily complicated Perl function, that might run external
processes, consult databases, change the contents of the current request
or many other things. Here is an example of using
PreHandlerHook
:
# Fake a new attribute into the request
PreHandlerHook sub { ${$_[0]}->add_attr('test-attr', \
'test-value');}