[RADIATOR] [RFC] configurable hooks
Alexander Hartmaier
alexander.hartmaier at t-systems.at
Fri Feb 1 03:16:59 CST 2013
On 2013-02-01 10:08, Hugh Irvine wrote:
> Hello Alex -
>
> The way to do this with GlobalVar's is to use different Identifiers in the Handlers thus:
>
> …..
>
> DefineFormattedGlobalVar Handler1-param1 whatever
>
> DefineFormattedGlobalVar Handler1-param2 whatever-else
>
> DefineFormattedGlobalVar Handler2-param1 something
>
> DefineFormattedGlobalVar Handler2-param2 something-else
>
> …..
>
> <Handler …..>
>
> Identifier Handler1
>
> ……
>
> …… %{GlobalVar:%{Handler-Identifier}-param1} …..
>
> …… %{GlobalVar:%{Handler-Identifier}-param2} …..
>
> </Handler>
>
> <Handler …..>
>
> Identifier Handler2
>
> ……
>
> …… %{GlobalVar:%{Handler-Identifier}-param1} …..
>
> …… %{GlobalVar:%{Handler-Identifier}-param2} …..
>
> </Handler>
>
> …..
>
> Here is an example:
>
> …..
>
> Radiator-4.11 hugh$ cat global.cfg
>
> AuthPort 11645
> AcctPort 11646
>
> LogDir ./logs
> DbDir .
>
> Trace 4
>
> DefineFormattedGlobalVar Handler1-param1 whatever
>
> DefineFormattedGlobalVar Handler1-param2 whatever-else
>
> DefineFormattedGlobalVar Handler2-param1 something
>
> DefineFormattedGlobalVar Handler2-param1 something-else
>
> <Client localhost>
> Secret mysecret
> </Client>
>
> <Handler>
> Identifier Handler1
> <AuthBy INTERNAL>
> DefaultResult ACCEPT
> AddToReply Reply-Message = %{GlobalVar:%{Handler:Identifier}-param1}
> </AuthBy>
> </Handler>
>
> here is the result:
>
> Radiator-4.11 hugh$ perl radpwtst -auth_port 11645 -noacct -user hugh -password hugh -trace 4
> Fri Feb 1 20:02:16 2013: DEBUG: Reading dictionary file './dictionary'
> sending Access-Request...
> Fri Feb 1 20:02:16 2013: DEBUG: Packet dump:
> *** Sending to 127.0.0.1 port 11645 ....
> Code: Access-Request
> Identifier: 121
> Authentic: <143><6><136>9o<141>% @<148><2>vO<15>/<212>
> Attributes:
> User-Name = "hugh"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> NAS-Port-Type = Async
> User-Password = T<142><153>t<137>lv<193>$I1_<249><14><201><164>
>
> Fri Feb 1 20:02:16 2013: DEBUG: Packet dump:
> *** Received from 127.0.0.1 port 51957 ....
> Code: Access-Request
> Identifier: 121
> Authentic: <143><6><136>9o<141>% @<148><2>vO<15>/<212>
> Attributes:
> User-Name = "hugh"
> Service-Type = Framed-User
> NAS-IP-Address = 203.63.154.1
> NAS-Identifier = "203.63.154.1"
> NAS-Port = 1234
> Called-Station-Id = "123456789"
> Calling-Station-Id = "987654321"
> NAS-Port-Type = Async
> User-Password = T<142><153>t<137>lv<193>$I1_<249><14><201><164>
>
> Fri Feb 1 20:02:16 2013: DEBUG: Handling request with Handler '', Identifier 'Handler1'
> Fri Feb 1 20:02:16 2013: DEBUG: Deleting session for hugh, 203.63.154.1, 1234
> Fri Feb 1 20:02:16 2013: DEBUG: Handling with AuthINTERNAL:
> Fri Feb 1 20:02:16 2013: DEBUG: AuthBy INTERNAL result: ACCEPT, Fixed by DefaultResult
> Fri Feb 1 20:02:16 2013: DEBUG: Access accepted for hugh
> Fri Feb 1 20:02:16 2013: DEBUG: Packet dump:
> *** Sending to 127.0.0.1 port 51957 ....
> Code: Access-Accept
> Identifier: 121
> Authentic: A<195>P<232><<2>z<217>Fmg<153><185><149><16>$
> Attributes:
> Reply-Message = "whatever"
>
> Fri Feb 1 20:02:16 2013: DEBUG: Packet dump:
> *** Received from 127.0.0.1 port 11645 ....
> Code: Access-Accept
> Identifier: 121
> Authentic: A<195>P<232><<2>z<217>Fmg<153><185><149><16>$
> Attributes:
> Reply-Message = "whatever"
>
> OK
>
> …..
>
>
> You can of course expand the GlobalVar's in your hook code too.
>
> regards
>
> Hugh
Ah, thanks! I haven't used GlobalVars at all so far.
I guess it makes sense if you need the same var more than once which is
not the case for me.
Best regards, Alex
>
>
> On 1 Feb 2013, at 18:46, Alexander Hartmaier <alexander.hartmaier at t-systems.at> wrote:
>
>> On 2013-01-31 22:58, Hugh Irvine wrote:
>>> Hello Alex -
>>>
>>> You can also use GlobalVar's for static parameters.
>>>
>>> See section 5.6.23 in the Radiator 4.11 reference manual ("doc/ref.pdf").
>>>
>>> There is an example in "goodies/hooks.txt".
>>>
>>> regards
>>>
>>> Hugh
>>>
>>>
>>> On 1 Feb 2013, at 01:31, Heikki Vatiainen <hvn at open.com.au> wrote:
>>>
>>>> On 01/31/2013 02:01 PM, Alexander Hartmaier wrote:
>>>>
>>>>> we'd need a way to pass config parameters to hooks to be able to use
>>>>> them in multiple different handlers e.g. sending OTPs by SMS with
>>>>> different accounts.
>>>>> Is there already a way to do this which I've overlooked?
>>>> How about this:
>>>>
>>>> # radiusd config file
>>>>
>>>> StartupHook sub { require "/etc/radiator/MyHooks.pm"; }
>>>> <Handler ...>
>>>> # AuthBys
>>>> PostAuthHook sub { MyHooks::sendSMS(@_, 'account1', 'otherparam1'); }
>>>> </Handler>
>>>> <Handler ...>
>>>> # AuthBys
>>>> PostAuthHook sub { MyHooks::sendSMS(@_, 'account2', 'otherparam2'); }
>>>> </Handler>
>>>>
>>>> File MyHooks.pm would be something like this:
>>>>
>>>> # start of MyHooks.pm
>>>> package MyHooks;
>>>> use strict;
>>>> use warnings;
>>>> # PostAuthHook
>>>> #
>>>> sub sendSMS {
>>>> my $p = ${$_[0]}; # Request packet
>>>> my $rp = ${$_[1]}; # Response packet
>>>> my $result = $_[2]; # Verdict: success or not
>>>> my $reason = $_[3]; # String that tells reason for a reject
>>>> my $account = $_[4]; # Account name
>>>> my $param = $_[5]; # Some other param
>>>>
>>>> # code goes here
>>>> }
>>>>
>>>> 1;
>>>> # end of MyHooks.pm
>>>>
>>>>> I'm currently abusing Radius attributes to get those static parameters
>>>>> into the hooks but being able to pass options in the config would make
>>>>> the config much clearer.
>>>> The above keeps the the existing PostAuthHook arguments as they are and
>>>> adds the possibility for static arguments as additional options to
>>>> existing PostAuthHook options.
>>>>
>>>> Would this work for you?
>>>>
>>>> Thanks,
>>>> Heikki
>>>>
>>>> --
>>>> Heikki Vatiainen <hvn at 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 at open.com.au
>>>> http://www.open.com.au/mailman/listinfo/radiator
>>> --
>>>
>>> Hugh Irvine
>>> hugh at 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.
>>>
>> Hi Hugh,
>> I haven't had time to reply to Heikki's post yesterday, his solution is
>> what I was looking for, thanks!
>> GlobalVars won't help help there because I need to use the same handler
>> multiple times in a single Radiator instance with different params.
>>
>>
>> *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
>> T-Systems Austria GesmbH Rennweg 97-99, 1030 Wien
>> Handelsgericht Wien, FN 79340b
>> *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
>> Notice: This e-mail contains information that is confidential and may be privileged.
>> If you are not the intended recipient, please notify the sender and then
>> delete this e-mail immediately.
>> *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
>
> --
>
> Hugh Irvine
> hugh at 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.
>
More information about the radiator
mailing list