[Spce-user] How to deal with non-numeric characters in a dialed number

Hohl Matthias matthias.hohl at telematica.at
Wed Aug 22 09:37:42 EDT 2018


Hello Daniel,

 

one short thing left:

 

if there is a callforward to the local mailbox, there there will be also a new INVITE for this call forward.

How can i identify this one to exclude this from my blocking code? Is there also something like has_totag for that?

 

Failure route for local call, code='408'

CFT to CF map id '1098' found

CFT to destination 'sip:vmu43662434111 at voicebox.local' with timeout '300' and announcement '<null>' activated

New request on proxy - M=INVITE R=sip:vmu43662434111 at voicebox.local

 

 

 

Von: Spce-user <spce-user-bounces at lists.sipwise.com> Im Auftrag von Hohl Matthias
Gesendet: Dienstag, 21. August 2018 21:59
An: 'Daniel Grotti' <dgrotti at sipwise.com>
Cc: spce-user at lists.sipwise.com
Betreff: Re: [Spce-user] How to deal with non-numeric characters in a dialed number

 

Hello,

 

yes this works now!

 

Hopfully the FINAL Version:

 

        if(is_method("INVITE") && !($rU =~ "^\+?[0-9]+$") && !has_totag() )

        {

                xlog("L_WARN", "Dialed number is not numeric - '$rU' - [% logreq -%]\n");

                sl_send_reply("403", "Dialed number is not numeric");

                route(ROUTE_EXIT);

        }

 

Von: Daniel Grotti <dgrotti at sipwise.com <mailto:dgrotti at sipwise.com> > 
Gesendet: Dienstag, 21. August 2018 21:46
An: Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> >
Cc: spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: Re: AW: AW: AW: [Spce-user] How to deal with non-numeric characters in a dialed number

 

You can use the has_totag() to check if its a re-invite.

Initial invites will have has_totag() false.

 

Cheers

 

Daniel

 

Sent from my iPhone


On 21.08.2018, at 21:37, Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> > wrote:

Hello,

 

yes this is accepted as well with this regex.

But we found another problem if there will be a second invite within a call, if there is for an example a fax behind:

 

Aug 21 20:34:31 spce proxy[13116]: NOTICE: <script>: NAT-Reply - S=200 - OK M=INVITE IP=92.63.xxx.xx:5060 (127.0.0.1:5080) ID=af397a3b-2013-1237-7089-002590386650 UA='3CXPhoneSystem 15.5.3849.1 (3849)'

Aug 21 20:34:31 spce proxy[13116]: NOTICE: <script>: [dialog:start] lua_dlg_callid:[af397a3b-2013-1237-7089-002590386650]  - R=<null> ID=af397a3b-2013-1237-7089-002590386650 UA='3CXPhoneSystem 15.5.3849.1 (3849)'

Aug 21 20:34:31 spce proxy[13119]: NOTICE: <script>: New request on proxy - M=ACK R=sip:127.0.0.1:5080;prxroute=1 F=sip:4367677777777 at 92.63.xxx.xx T=sip:80244311111112 at 92.63.xxx.xx IP=92.63.xxx.xx:5060 (127.0.0.1:5060) ID=af397a3b-2013-1237-7089-002590386650 UA='<null>'

Aug 21 20:34:31 spce proxy[13120]: NOTICE: <script>: New request on proxy - M=INVITE R=sip:mod_sofia at 92.63.xxx.xx:5080 F=sip:43112345 at 92.63.xxx.xx T=sip:43676777777 at sip.telematica.at IP=127.0.0.1:5080 (127.0.0.1:5080) ID=af397a3b-2013-1237-7089-002590386650 UA='3CXPhoneSystem 15.5.3849.1 (3849)'

 

It looks like this happens very often, so I think matching again the $rU is not the best thing, to solve this problem.

I am also wondering why rate-o-mat has no problem with this invite if this is inside a call. But I think maybe cause rate o mat just look onto the initial call.

 

Anyway: how can I solve this problem?

Is it possible and wise just to look onto the “TO” Sip Header? And if yes, whats the variable for this? We tried “$tu” but it blocks then all incoming calls.

 

 

Von: Daniel Grotti <dgrotti at sipwise.com <mailto:dgrotti at sipwise.com> > 
Gesendet: Dienstag, 21. August 2018 20:22
An: Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> >
Cc: spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: Re: AW: AW: [Spce-user] How to deal with non-numeric characters in a dialed number

 

Probably you would need to accept number starting with 0 and 00 as well.

 

Daniel

Sent from my iPhone


On 21.08.2018, at 20:14, Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> > wrote:

I tested it and i have to modificate it just a little but and now it is working J

If there is the number NOT in format +123 or 1234 it will do a log entry and also reply with 403 – dialed number is not numeric

 

This is the final working code under /etc/ngcp-config/templates/etc/kamailio/proxy/kamailio.cfg.customtt.tt2

 

        if(is_method("INVITE") && !($rU =~ "^\+?[0-9]+$"))

        {

                xlog("L_WARN", "Dialed number is not numeric - '$rU' - [% logreq -%]\n");

                sl_send_reply("403", "Dialed number is not numeric");

                route(ROUTE_EXIT);

        } 

 

 

Von: Daniel Grotti <dgrotti at sipwise.com <mailto:dgrotti at sipwise.com> > 
Gesendet: Dienstag, 21. August 2018 19:43
An: Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> >
Cc: spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: Re: AW: [Spce-user] How to deal with non-numeric characters in a dialed number

 

At a first sight it looks good.

It worth a try.

 

Daniel

Sent from my iPhone


On 21.08.2018, at 19:39, Hohl Matthias <matthias.hohl at telematica.at <mailto:matthias.hohl at telematica.at> > wrote:

Hello Daniel,

 

i think this will work for reply 403 of the dialed number don’t match numeric number, right?

 

1.               if(is_method("INVITE") && ($rU !~ "^\+?[0-9]+$"))

2.               {

3.                       xlog("L_WARN", "Dialed number is not numeric - '$rU' - [% logreq_init -%]\n");

4.                       sl_send_reply("403", "Dialed number is not numeric");

5.                       route(ROUTE_EXIT);

6.               }

 

 

Von: Spce-user <spce-user-bounces at lists.sipwise.com <mailto:spce-user-bounces at lists.sipwise.com> > Im Auftrag von Daniel Grotti
Gesendet: Dienstag, 21. August 2018 14:01
An: spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: Re: [Spce-user] How to deal with non-numeric characters in a dialed number

 

H Matthias,
another option, instead of trying to consume the non-numeric number, is to make sure in kamailio that the dialed number match a numeric number series, if not you just reply 403 - not a numeric number. This will avoid the system to parse the call any further.

Solution from Barry is also ok, but the system will parse the call until the peer selection, and call will fails with "no peering rule found" (I think it's a 500 error).


Cheers,
Daniel



On 08/21/2018 01:42 PM, Hohl Matthias wrote:





Hey Rene,

 

I already thought on this but this is no real deal, cause then we will loose the money for this calls. If someone find out this trick to add a “ABC” behind the number and this will be rated as 0 cent then there will be a massive abuse potential.

So easier would be to block all calls to this dialed numbers or the clear it like I descripe in option 2, but I don’t know the right regex to clear all non-numeric characters except a “+” on the first sign.

 

Can you maybe help me with this solution too?

My solution is just working for for -%()&*.,!“$ but not for letters or /x;:_=~@#§:[]\^°`´‘|<> and not if there is a “+” on the first sign.

 

Thank you.

 

 

Von: Rene Krenn  <mailto:rkrenn at sipwise.com> <rkrenn at sipwise.com> 
Gesendet: Dienstag, 21. August 2018 13:29
An: 'Hohl Matthias'  <mailto:matthias.hohl at telematica.at> <matthias.hohl at telematica.at>; spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: AW: [Spce-user] How to deal with non-numeric characters in a dialed number

 

Hi,

 

why not adding two 0cent fees to cover, ie.:

 

1.       Non-digit source:

 

src: [^0-9+]+

dst: .

 

2.       Non-digit destination:

 

src: .

dst: [^0-9+]+

 

Note that 6.5 will bring fee „match modes“ (regex_longest_pattern/legacy, regex_longest_pattern, prefix, exact, etc.) for way more speed and flexibility.

 

regards

 

Von: Spce-user [mailto:spce-user-bounces at lists.sipwise.com] Im Auftrag von Hohl Matthias
Gesendet: Dienstag, 21. August 2018 13:17
An: spce-user at lists.sipwise.com <mailto:spce-user at lists.sipwise.com> 
Betreff: [Spce-user] How to deal with non-numeric characters in a dialed number

 

Hello,

 

we often have the problem, that an UA of a subscriber is dialing a number with non-numeric characters like “-%/” or also letters like “ABCD” and so on.

Everytime when this happens, our rate-o-mat stop working, cause there is no billing profile destination pattern for such kind of characters.

Normally our billing profile pattern looks like this: Source Pattern: “.” Destination Pattern:  ^431.+$

 

My ideas to fix this problem:

 

1.)    If a UA is calling a non-numeric number, except “+” in the front, then the call should be blocked by SPCE. 
So calls not formatted like #4312345 or 012345 should be blocked, without trying to reach a peering.
Is this possible? It would the easiest way to force a subscriber to dial correct numbers, otherwise calling is not working.

 

 

2.)    Clear special characters in the INVITE: /etc/ngcp-config/templates/etc/kamailio/proxy/kamailio.cfg.customtt.tt2

I tried to edit the kamailio.cfg.tt2 and edit it to this:
        if(is_method("INVITE"))

        {

                $rU = $(rU{re.subst,/^(\+)?[:blank:]?\(?([0-9]*)\)?[ -.]?\(?([0-9]*)\)?[ -.]?\(?([0-9]*)\)?[ -.]?\(?([0-9]*)\)?[ -.]?\(?([0-9]*)\)?$/\1\2\3\4\5\6/});

                xlog("L_NOTICE", "Consume special chars in RURI - '$rU' - [% logreq_init -%]\n");

        }

 

But this way, just working for -%()&*.,!“$ but not for letters or /x;:_=~@#§:[]\^°`´‘|<>
How do I have to edit this to clear everything witch is a non-numeric character or a number with a “+” in the front?

 

Will this do the trick?

        if(is_method("INVITE"))

        {

          $rU = $(rU{re.subst,/[^0-9]//g});

                xlog("L_NOTICE", "Consume special chars in RURI - '$rU' - [% logreq_init -%]\n");

        }

 

 

3.)    Editing the Rewrite Rules to match also against non-numeric characters in a dialed number string. But I think this will cause more problems like it fix.

 

 

How did you fix this problems? I think the easiest thing would be to block everything which is not perfect formatted (1.). Is this possible?

It would be very nice if you could assist me with this problem.

 

Thank you

 

Mit freundlichen Grüßen,

Matthias Hohl








_______________________________________________
Spce-user mailing list
Spce-user at lists.sipwise.com <mailto:Spce-user at lists.sipwise.com> 
https://lists.sipwise.com/listinfo/spce-user

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sipwise.com/pipermail/spce-user_lists.sipwise.com/attachments/20180822/656a37a0/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5532 bytes
Desc: not available
URL: <http://lists.sipwise.com/pipermail/spce-user_lists.sipwise.com/attachments/20180822/656a37a0/attachment-0001.p7s>


More information about the Spce-user mailing list