Forum Discussion
SIP irule for checking dialed string
Hi guys, Please help me with creating na irule for checking a dialed string in SIP INVITE request. I need to drop every call that has !=8 or !=0 symbols in the SIP INVITE. Like this:
sip:3286184@206.81.166.10
I need to strip only "3286184" portion, then check if it has 8 or 0 symbols, if not I have to drop the call.
That's the irule I've made but it's not working for some reason...
when SIP_REQUEST {
set meeting_nbr [findstr [SIP::header "INVITE"] ":" 1 "@"]
if { not [string length $meeting_nbr] == 8} || { not [string length $meeting_nbr] == 0} {
log local0. "SIP Drop [SIP::uri]"
drop
}
}
Please help.
thanks.
- SyedNazir_20946Historic F5 Account
Hi Evelin,
Check below rule. Correct the syntax for regexp if there is any issue.
when SIP_REQUEST { set meeting_nbr [findstr [SIP::to] ":" 1 "@"] if { [regexp {^([0-9]+)$} $meeting_nbr]} { log local0. "SIP Drop [SIP::uri]" drop } }
-- Syed Nazir
- Evelin_195902Nimbostratus
Thanks Syed, It's a bit more complicated because we may have valid SIP request without any meeting number: like sip: or sip:.
Here is the final version of my irule:
when SIP_REQUEST { if { [SIP::method] == "INVITE" && [SIP::uri] matches_regex {^.+@.+$} } { if { not ([SIP::uri] matches_regex {^(sip:|sips:)[0-9]{7}@}) } { log local0. "SIP Drop for [SIP::uri] from [IP::remote_addr] - possible frauder" drop } } }
I hope this can be useful for other people having similar case.
regards, Evelin
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com