[RADIATOR] Replacing the Operator-Name with a modified version

Heikki Vatiainen hvn at open.com.au
Fri Mar 10 14:32:50 UTC 2023


On 10.3.2023 6.12, Stefan Paetow (OpenSource) via radiator wrote:

> Currently, we get "1<domain>", which is the 'old' (or 'correct') format 
> for Wi-Fi networks, so I'm looking at a hook to replace the 1 with a 4 
> as a first step. I assume I do that in the PreClientHook or the 
> PreProcessingHook?
> 
> I was thinking that this code would work:
> 
> sub {\
> my $p = ${$_[0]}; my $oname=$p->get_attr('Operator-Name');\
> $oname =~ s/1(.*)$/4\1/g; $p->change_attr('Operator-Name',$oname);\
> &main::log($main::LOG_DEBUG,"Operator-Name:$oname, ");\
> }
> 
> Do I have that right?

Looks good. See below for a slightly updated regexp.

You can use that hook as global PreClientHook, global ClientHook, 
ClientHook within a <Client ...> clause and as a PreProcessingHook 
within a <Handler>. They all use reference to the current request as 
their first argument. PreProcessingHook also gets current reply which 
can be ignored in this case.

I'd simplify the regexp a little if it only needs to swap a leading 1 to 
4. Here's an idea of a tester:

<Client DEFAULT>
         Secret  mysecret
</Client>

<Handler>
         PreProcessingHook sub {\
              my $p = ${$_[0]}; my $oname=$p->get_attr('Operator-Name');\
              $oname =~ s/^1/4/s; $p->change_attr('Operator-Name',$oname);\
              main::log($main::LOG_DEBUG,"Operator-Name:$oname, ");\
              }
         <AuthBy INTERNAL>
                 DefaultResult REJECT
         </AuthBy>
         AddToReply Reply-Message=%{Request:Operator-Name}
</Handler>



Testing with radpwtst:
% radpwtst -trace 4 -noacct Operator-Name=1operator:country

Should return a reply with the default and additional Reply-Message:


Fri Mar 10 16:28:31 2023: DEBUG: Packet dump:
*** Received from 127.0.0.1 port 1645 ....
Code:       Access-Reject
Identifier: 233
Authentic:  <243>2<235>H<17>!7<254>><15>W<0>_c}<185>
Attributes:
	Reply-Message = "Request Denied"
	Reply-Message = "4operator:country"

Rejected: Request Denied


Note that only PreClientHook runs before log level 4 packet dump. 
Therefore the updated Operator-Name is not visible in the log with the 
other hooks.

Thanks,
Heikki

-- 
Heikki Vatiainen
OSC, makers of Radiator
Visit radiatorsoftware.com for Radiator AAA server software


More information about the radiator mailing list