Hello Steve -

What you describe makes perfect sense - and this is exactly what globals are 
for.

See the hooks in “goodies/hooks.txt” for lots of examples.

regards

Hugh


On 2 Apr 2014, at 10:59, Steve Phillips <st...@focb.co.nz> wrote:

> Hi there,
> 
> I am trying to setup a system that, on startup reads a DB table into a 
> hashed array and then makes this available to the rest of the hooks. A 
> later hook then takes this hashed array and parses it to add a value to 
> a custom attribute which is then used for later processing within a handler.
> 
> While I understand that globals are bad and should never be used, I 
> believe that making a DB request on every radius packet would have more 
> of an impact on performance for something that rarely changes (maybe 
> once a week or so) and so the positives outweigh the negatives.
> 
> What I had which doesn't seem to work was something along these lines.
> 
> <from radius.cfg>
> 
> # Hooks
> StartupHook file:"%D/hooks/StartupHook-SetupGlobals.pl"
> 
> .
> .
> <Client>
>   Secret blah
>   PreHandlerHook file:"$D/hooks/AddAttribute.pl"
> </Client>
> 
> <Handler MyAtttribute = /something/>
> .
>  Do Stuff
> </Handler>
> 
> in the SetupGlobals file I have something like;
> 
> # Define a global (obviously, there is where I'd read in the DB table)
> our %global_steve = (
>   'message1' => 'Steve was here',
>   'message2' => 'woot'
> );
> 
> and then, when trying to reference it I have in the PreHandler hook
> 
> sub {
>   &main::log($main::LOG_INFO, "Test: $main::global_steve{'messsage1'}");
> }
> 
> Which ends up printing out a blank.
> 
> Does anyone know of either, a way to get this going, or a way to read in 
> a db table of data and cache it for use in later hooks without having 
> each radius request generate another database call?
> 
> Thanks in advance,
> 
> -- 
> Steve.
> 
> 
> _______________________________________________
> radiator mailing list
> radiator@open.com.au
> http://www.open.com.au/mailman/listinfo/radiator


--

Hugh Irvine
h...@open.com.au

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
radiator@open.com.au
http://www.open.com.au/mailman/listinfo/radiator

Reply via email to