(RADIATOR) PreProcessingHook to bypass further processing
Hugh Irvine
hugh at open.com.au
Wed Feb 11 15:41:11 CST 2004
Hello Kwang -
You are correct - multiple checks are logical "and".
You can do logical "or" in a single check with a regexp:
<Handler SomeCheck = /one|two|three/, ....>
....
</Handler>
regards
Hugh
On 12 Feb 2004, at 04:37, Kwang Moon wrote:
> Hugh,
>
> Multiple check items in the handler clause are logical 'and' right? -
> or are
> you telling me that I can somehow do logical 'or' as well (which is
> what I
> need)...
> I'm assuming this is 'and':
> <Handler attribute1=value, attribute2=value>
>
>
> Cheers,
> Kwang
>
>
>
> ----- Original Message -----
> From: "Hugh Irvine" <hugh at open.com.au>
> To: "Kwang Moon" <kwang.moon at O2.com>
> Cc: <radiator at open.com.au>
> Sent: Wednesday, February 11, 2004 2:53 AM
> Subject: Re: (RADIATOR) PreProcessingHook to bypass further processing
>
>
>>
>> Hello Kwang -
>>
>> Yes I think what you show below should work.
>>
>> Of course you will need to test it thoroughly to verify correct
>> operation.
>>
>> BTW - you can specify multiple check items and use regular expressions
>> in Handlers:
>>
>> <Handler SomeThing = /some_regexp/, AnotherThing = /anotherregexp/,
>> .....>
>> ....
>> </Handler>
>>
>> regards
>>
>> Hugh
>>
>>
>> On 11 Feb 2004, at 11:13, Kwang Moon wrote:
>>
>>> Hi Hugh,
>>>
>>> Yes I had thought about using an AuthBy INTERNAL clause, but with a
>>> RequestHook but wasn't sure if what I wanted to do would work. What
>>> do you
>>> think:
>>>
>>> <AuthBy INTERNAL>
>>> Identifier IntAuth
>>> RequestHook file: "reqhook.pl"
>>> DefaultResult ACCEPT
>>> <\AuthBy>
>>>
>>> <AddressAllocator SQL>
>>> Identifier AddrAlloc
>>> ...
>>> <\AddressAllocator>
>>>
>>> <AuthBy DYNADDRESS>
>>> Identifier DynAddrAuth
>>> AddressAllocator AddrAlloc
>>> PoolHint %N-%{NAS-Identifier}
>>> ...
>>> <\AuthBy>
>>>
>>> <Handler Request-Type=Access-Request>
>>> AuthByPolicy ContinueUntilReject
>>> AuthBy IntAuth
>>> AuthBy DynAddrAuth
>>> ...
>>> <\Handler>
>>>
>>> reqhook.pl would look something like this:
>>> Sub {
>>> do something
>>> $somevar = ({$_[0]}->get_attr('some attribute');
>>> if $($somevar eq 'aaa') {
>>> $({$_[0]}->add_attr('PoolHint', $somevar);
>>> return $main::ACCEPT;
>>> } else if $($somevar eq 'bbb') {
>>> $({$_[0]}->add_attr('PoolHint', $somevar);
>>> return $main::ACCEPT;
>>> } else {
>>> return $main::REJECT;
>>> }
>>> }
>>>
>>> So based on the above, if I returned an ACCEPT in the hook, would the
>>> next
>>> AuthBy clause be invoked (in accordance to the AuthByPolicy), and
>>> similary
>>> if I returned a REJECT, then would an Access-Reject be sent to the
>>> client
>>> without the next AuthBy clause being invoked?
>>>
>>> As for the default handler you mentioned - we can't really use this
>>> as
>>> we
>>> use the handler check item value as a variable to the PoolHint, so we
>>> need
>>> to be certain that it's correct (ie not misspelt, missing etc.) If
>>> the
>>> above config works, then it will acheive the same result, albeit in a
>>> not so
>>> friendly way. That's why a feature like that of IdenticalClients,
>>> but
>>> for a
>>> handler would be really useful.
>>>
>>>
>>> Cheers,
>>> Kwang
>>>
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: "Hugh Irvine" <hugh at open.com.au>
>>> To: "Kwang Moon" <kwang.moon at O2.com>
>>> Cc: <radiator at open.com.au>
>>> Sent: Tuesday, February 10, 2004 10:02 PM
>>> Subject: Re: (RADIATOR) PreProcessingHook to bypass further
>>> processing
>>>
>>>
>>>>
>>>> Hello Kwang -
>>>>
>>>> The usual way to do what you describe is to use an AuthBy INTERNAL
>>>> clause followed by a PostAuthHook.
>>>>
>>>> For your question about Handlers, it is more usual to specify a
>>>> final
>>>> <Handler> to catch "everything else".
>>>>
>>>> # deal with something specific
>>>>
>>>> <Handler ......>
>>>> .....
>>>> </Handler>
>>>>
>>>> # deal with everything else
>>>>
>>>> <Handler>
>>>> .....
>>>> </Handler>
>>>>
>>>>
>>>> regards
>>>>
>>>> Hugh
>>>>
>>>>
>>>> On 11 Feb 2004, at 01:57, Kwang Moon wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Does anyone know if it's possible to carry out some checks in a
>>>>> PreProcessingHook, and based on the results to immediately halt the
>>>>> handling
>>>>> process and send back a $main::REJECT to the client?
>>>>>
>>>>> The reason I want to do this is because I have heaps of handlers
>>>>> (all
>>>>> pretty
>>>>> much doing the same thing), the only difference being the handler
>>>>> check
>>>>> item. So, what I want to do is create one handler to deal with say
>>>>> Access-Request packets and then verify the check item within the
>>>>> say
>>>>> a
>>>>> PreProcessingHook (ie if it doesn't match then somehow send a
>>>>> reject
>>>>> immediately without further processing, and if it passes then
>>>>> continue
>>>>> with
>>>>> hook and return back to the handler).
>>>>>
>>>>> There was a posting earlier last year:
>>>>> http://www.open.com.au/archives/radiator/2003-05/msg00147.html
>>>>> asking a very similar question, however, there didn't appear to be
>>>>> a
>>>>> resolution.
>>>>>
>>>>> If this is not possible, then (a question to Mike or Hugh) what's
>>>>> the
>>>>> likelihood of getting a feature added to the handler clause similar
>>>>> to
>>>>> the
>>>>> IdenticalClients. It could look something like:
>>>>> IdenticalHandlers <attribute=value, attribute=value, ...>
>>>>>
>>>>>
>>>>> Cheers,
>>>>> Kwang
>>>>>
>>>>>
>>>>>
>>>>> ===
>>>>> Archive at http://www.open.com.au/archives/radiator/
>>>>> Announcements on radiator-announce at open.com.au
>>>>> To unsubscribe, email 'majordomo at open.com.au' with
>>>>> 'unsubscribe radiator' in the body of the message.
>>>>>
>>>>>
>>>>
>>>> NB: have you included a copy of your configuration file (no
>>>> secrets),
>>>> together with a trace 4 debug showing what is happening?
>>>>
>>>> --
>>>> Radiator: the most portable, flexible and configurable RADIUS server
>>>> anywhere. Available on *NIX, *BSD, Windows, MacOS X.
>>>> -
>>>> Nets: internetwork inventory and management - graphical, extensible,
>>>> flexible with hardware, software, platform and database
>>>> independence.
>>>> -
>>>> CATool: Private Certificate Authority for Unix and Unix-like
>>>> systems.
>>>>
>>>
>>> ===
>>> Archive at http://www.open.com.au/archives/radiator/
>>> Announcements on radiator-announce at open.com.au
>>> To unsubscribe, email 'majordomo at open.com.au' with
>>> 'unsubscribe radiator' in the body of the message.
>>>
>>>
>>
>> NB: have you included a copy of your configuration file (no secrets),
>> together with a trace 4 debug showing what is happening?
>>
>> --
>> Radiator: the most portable, flexible and configurable RADIUS server
>> anywhere. Available on *NIX, *BSD, Windows, MacOS X.
>> -
>> Nets: internetwork inventory and management - graphical, extensible,
>> flexible with hardware, software, platform and database independence.
>> -
>> CATool: Private Certificate Authority for Unix and Unix-like systems.
>>
>
> ===
> Archive at http://www.open.com.au/archives/radiator/
> Announcements on radiator-announce at open.com.au
> To unsubscribe, email 'majordomo at open.com.au' with
> 'unsubscribe radiator' in the body of the message.
>
>
NB: have you included a copy of your configuration file (no secrets),
together with a trace 4 debug showing what is happening?
--
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. Available on *NIX, *BSD, Windows, MacOS X.
-
Nets: internetwork inventory and management - graphical, extensible,
flexible with hardware, software, platform and database independence.
-
CATool: Private Certificate Authority for Unix and Unix-like systems.
===
Archive at http://www.open.com.au/archives/radiator/
Announcements on radiator-announce at open.com.au
To unsubscribe, email 'majordomo at open.com.au' with
'unsubscribe radiator' in the body of the message.
More information about the radiator
mailing list