On Dec 21, 2011, at 3:30 PM, Heikki Vatiainen wrote:

On 12/21/2011 09:41 PM, Jared Watkins wrote:

I'm new to Radiator and am working on my first set of hook code to
evaluate it for a project.  I'm taking in call detail records via
radius.. enriching them in the PostProcessingHook through a Handler
and then storing some of them in a sql database.

Usually you have something like this:

<AuthBy SQL>
 Identifier sql-authby
 ...
</AuthBy>

The hook then starts with something like this:

sub {
   my $p = ${$_[0]};      # Request packet
   my $rp = ${$_[1]};     # Response packet

   my $authby_handle = Radius::AuthGeneric::find('sql-authby');
   # Build a $query with possibly @bind_values
   my $sth = $authby_handle->prepareAndExecute($query, @bind_values);
   ...
}

See goodies/hooks.txt for more hook examples. You could look for
PostAuthHook which runs earlier in the processing than PostProcessingHook.

Also, as the example shows, it's easier to use e.g. AuthBy objects and
run queries using them. Since there are no threads, you do not have to
worry about using mutexes and such. The calls, such as
prepareAndExecute, open and reopen the DB connection when needed and do
failover according to handle objects configuration.

I didn't see anything in the pdf doc that speaks to these sorts of
questions.

See goodies/README and search for 'hook'. File hooks.txt has plenty of
examples but there are also other files that use hooks.

Thanks for the quick feedback.  That was my mistake about it being multi 
threaded... I think I was confusing it with some stuff I'd read about the perl 
POE radius server.

In regard to Radius::AuthGeneric::find... is there somewhere these routines are 
documented?  I saw references in the pdf doc to AuthGeneric.. but not anything 
that told me it could be used in this way or that it could return a db 
connection handle.. or what the subsequent calls to use that handle should be.  
I did see a few things in the example code about these but that's hardly a 
complete reference.

For instance.. I see an example of someone calling fetchrow in one of the 
goodies.. but that is not a standard DBI call.  In this case it looks like it's 
returning the data in an array.. but that's only one of many choices the DBI 
interface gives you.

Am I just missing something here?

Thanks,
J
_______________________________________________
radiator mailing list
[email protected]
http://www.open.com.au/mailman/listinfo/radiator

Reply via email to