On 17.2.2022 17.13, Patrik Forsberg wrote:

The extra data seem to be injected into the accounting package but the 
AcctLogFileName doesn’t pick it up but if I do a <AcctLog FILE> and reference 
it in the Handler it shows up in the accounting record!

I can confirm this. <AcctLog ...> clauses run the same time as <AuthLog ..> clauses which is when a reply is sent.

Guessing AcctLogFileName picks up its data before the hook gets to insert its 
data.
(Tried it in PreProcessingHook as well with the same result)

I'd say changes done by PreProcessingHook should have been visible with output generated by AcctLogFileName.

Here's what I used for testing, first config:

<Handler>
   PreProcessingHook file:"%D/hook_compile-command-record.pl"
   AcctLogFileName %L/acctlog
   AccountingHandled
</Handler>


Then your hook slightly modified:

# Works as PreProcessingHook or PreAuthHook
use strict;
sub
{
    my $me = 'hook_compile-command-record.pl';

    # Often named as $p and $rp
    my ($request, $reply) = (${$_[0]}, ${$_[1]});
    my $command = '';

    $command = $request->get_attr('Juniper-Interactive-Command');
    main::log($main::LOG_DEBUG, "$me - command: $command", $request);

    $request->change_attr('Annex-CLI-Command', $command);

    my $tmp1 = $request->get_attr('Annex-CLI-Command');
    main::log($main::LOG_DEBUG, "$me - command: $tmp1", $request);

    $reply->change_attr('IPO-Command', $command);

    return;
}

It's not mandatory to pass the request object to logging, but it's helps when PacketTrace, LogTraceId and others are enabled. That is, it helps logger when selective logging is needed.

In acctlog I can see something like this:

        Juniper-Interactive-Command = "abc 123 xyz"
        Annex-CLI-Command = "abc 123 xyz"

and IPO-Command would be sent out if it were in the dictionary.

The packet dump that shows the incoming messages is done much earlier than the hook runs. If you'd want to dump the message from a hook too, use something like this:

main::log($main::LOG_DEBUG, "$me - modified request:\n" . $request->dump(), $request);


Thanks,
Heikki

--
Heikki Vatiainen
OSC, makers of Radiator
Visit radiatorsoftware.com for Radiator AAA server software
_______________________________________________
radiator mailing list
[email protected]
https://lists.open.com.au/mailman/listinfo/radiator

Reply via email to