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

Daniel Grotti dgrotti at sipwise.com
Tue Aug 28 15:31:33 EDT 2018


Ho Matthias,
There is a variable or avp called “cf_loop” and it’s set to one when a cf is set.
You can use that one to skip invite after a cf. 
I need check the code to tell you what is the variable name exactly.

I can have a look tomorrow.

Daniel



Sent from my iPhone

> On 28.08.2018, at 20:35, Hohl Matthias <matthias.hohl at telematica.at> wrote:
> 
> Hello Daniel,
>  
> any update for me on this topic?
> Thank you!
>  
> Von: Spce-user <spce-user-bounces at lists.sipwise.com> Im Auftrag von Hohl Matthias
> Gesendet: Mittwoch, 22. August 2018 15:38
> 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 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> 
> Gesendet: Dienstag, 21. August 2018 21:46
> An: Hohl Matthias <matthias.hohl at telematica.at>
> Cc: 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> 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> 
> Gesendet: Dienstag, 21. August 2018 20:22
> An: Hohl Matthias <matthias.hohl at telematica.at>
> Cc: 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> 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> 
> Gesendet: Dienstag, 21. August 2018 19:43
> An: Hohl Matthias <matthias.hohl at telematica.at>
> Cc: 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> 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> Im Auftrag von Daniel Grotti
> Gesendet: Dienstag, 21. August 2018 14:01
> An: 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 <rkrenn at sipwise.com> 
> Gesendet: Dienstag, 21. August 2018 13:29
> An: 'Hohl Matthias' <matthias.hohl at telematica.at>; 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
> 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
> 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/20180828/f9ba5b76/attachment-0001.html>


More information about the Spce-user mailing list