[SR-Users] userblacklist use avp for check_blacklist

Jan Hazenberg jenus at cyberchaos.nl
Tue Jun 28 09:04:03 CEST 2016


Daniel,

Sorry was still some testing code, but without the ! it rejects 
everything.

Code:

         xlog("L_NOTICE", "NOTICE: Chekking blacklist for number  
$(avp(ruri_number){s.substr,1,0}) with domain $avp(from_domain)  - R=$ru 
ID=$ci FU=$fu M=$rm UA=$ua\n");

         if (check_user_blacklist("blacklist", "$avp(from_domain)", 
"$(avp(ruri_number){s.substr,1,0})")) {
                 xlog("L_ALERT", "ALERT: 
$(avp(ruri_number){s.substr,1,0}) with domain $avp(from_domain) is 
blacklisted, rejecting call - R=$ru ID=$ci FU=$fu M=$rm UA=$ua\n");
                 sl_send_reply("403", "Blacklisted");
                 exit;
         }


In the db:
  +----+-----------+----------------+-----------+-----------+
  | id | username  | domain         | prefix    | whitelist |
  +----+-----------+----------------+-----------+-----------+
  |  3 | blacklist | oranjelaan.net | 318001234 |         0 |
  +----+-----------+----------------+-----------+-----------+

Logging:

Jun 28 08:55:50 sip03 /usr/local/sbin/kamailio[13494]: NOTICE: <script>: 
NOTICE: Chekking blacklist for number  318001234 with domain 
oranjelaan.net  - R=sip:08001234 at oranjelaan.net 
ID=A69369F6D60321BCF77A44ACCAD1670405DEC128 
FU=sip:testaccount2 at oranjelaan.net M=INVITE UA=Acrobits Softphone/4.8 
(build 717747; Android 6.0.1; armeabi-v7a-neon)
Jun 28 08:55:50 sip03 /usr/local/sbin/kamailio[13494]: ALERT: <script>: 
ALERT: 318001234 with domain oranjelaan.net is blacklisted, rejecting 
call - R=sip:08001234 at oranjelaan.net 
ID=A69369F6D60321BCF77A44ACCAD1670405DEC128 
FU=sip:testaccount2 at oranjelaan.net M=INVITE UA=Acrobits Softphone/4.8 
(build 717747; Android 6.0.1; armeabi-v7a-neon)


Jun 28 08:56:12 sip03 /usr/local/sbin/kamailio[13496]: NOTICE: <script>: 
NOTICE: Chekking blacklist for number  318001235 with domain 
oranjelaan.net  - R=sip:08001235 at oranjelaan.net 
ID=CC63BE9D40CBF3CD9B55445059C2D9BDFD106426 
FU=sip:testaccount2 at oranjelaan.net M=INVITE UA=Acrobits Softphone/4.8 
(build 717747; Android 6.0.1; armeabi-v7a-neon)
Jun 28 08:56:12 sip03 /usr/local/sbin/kamailio[13496]: ALERT: <script>: 
ALERT: 318001235 with domain oranjelaan.net is blacklisted, rejecting 
call - R=sip:08001235 at oranjelaan.net 
ID=CC63BE9D40CBF3CD9B55445059C2D9BDFD106426 
FU=sip:testaccount2 at oranjelaan.net M=INVITE UA=Acrobits Softphone/4.8 
(build 717747; Android 6.0.1; armeabi-v7a-neon)



Jan


Daniel-Constantin Mierla schreef op 2016-06-27 16:19:
> You have a negation of the function int the if expression, 
> respectively:
> !check_user_blacklist(...)
> 
> If the function returns true on record match and you want to reject in
> that case, then just remove the ! in the expression.
> 
> Cheers,
> Daniel
> 
> 
> On 27/06/16 14:11, Jan Hazenberg wrote:
>> Daniel,
>> 
>> Seems like it is not working anymore, i now have configured:
>> 
>>         if (!check_user_blacklist("blacklist", "oranjelaan.net",
>> "318001234")) {
>>                 xlog("L_ALERT", "ALERT: $rU is blacklisted, rejecting
>> call - IP=$si PORT=$sp R=$ru ID=$ci FU=$fu M=$rm UA=$ua\n");
>>                 sl_send_reply("403", "Blacklisted");
>>                 exit;
>>         }
>> 
>> With the following in db:
>> 
>> +----+-----------+----------------+-----------+-----------+
>> | id | username  | domain         | prefix    | whitelist |
>> +----+-----------+----------------+-----------+-----------+
>> |  3 | blacklist | oranjelaan.net | 318001234 |         0 |
>> +----+-----------+----------------+-----------+-----------+
>> 
>> But is is not rejecting the call. If i use the fifo command all is 
>> fine:
>> 
>> 
>> [root at sip03 kamailio]# /usr/local/sbin/kamctl fifo check_userblacklist
>> blacklist oranjelaan.net 318001234
>> 318001234::  blacklisted=true
>> 
>> [root at sip03 kamailio]# /usr/local/sbin/kamctl fifo check_userblacklist
>> blacklist oranjelaan.net 318001235
>> 318001235::  blacklisted=false
>> 
>> 
>> 
>> Jan
>> 
>> 
>> Daniel-Constantin Mierla schreef op 2016-06-27 13:53:
>>> Have you done any tests to see if runtime works fine as well? Just to 
>>> be
>>> sure nothing was broken.
>>> 
>>> Cheers,
>>> Daniel
>>> 
>>> 
>>> On 27/06/16 13:46, Jan Hazenberg wrote:
>>>> Daniel,
>>>> 
>>>> Yes that seems to fix the problem. Kamailio now starts without
>>>> crashing.
>>>> 
>>>> Thanks,
>>>> 
>>>> Jan
>>>> 
>>>> 
>>>> Daniel-Constantin Mierla schreef op 2016-06-27 13:08:
>>>>> Can you try with the master branch or backport the next commit?
>>>>> 
>>>>>   -
>>>>> https://github.com/kamailio/kamailio/commit/5fd2c91f512b7311f11c76023da45758fb8c4365
>>>>> 
>>>>> 
>>>>> 
>>>>> If all ok, then I push the backported patch to stable branches.
>>>>> 
>>>>> Cheers,
>>>>> Daniel
>>>>> 
>>>>> On 27/06/16 11:57, Daniel-Constantin Mierla wrote:
>>>>>> The spec is null, so the crash is obvious. I have to look at the
>>>>>> code to
>>>>>> see why it expect to be a spec there, while it can be a static
>>>>>> string.
>>>>>> 
>>>>>> Cheers,
>>>>>> Daniel
>>>>>> 
>>>>>> 
>>>>>> On 27/06/16 10:57, Jan Hazenberg wrote:
>>>>>>> Daniel,
>>>>>>> 
>>>>>>> Here the requested gdb output:
>>>>>>> 
>>>>>>> (gdb) frame 1
>>>>>>> #1  0x00007f22fd252ece in check_user_blacklist_fixup
>>>>>>> (param=0x7f23061cdd88, param_no=1) at userblacklist.c:213
>>>>>>> 213                                     if(str2int(&s, (unsigned
>>>>>>> int*)&model->spec->pvp.pvn.u.isname.name.n) != 0) {
>>>>>>> (gdb) info locals
>>>>>>> model = 0x7f23061c9400
>>>>>>> s = {s = 0x7f23061ce0b8 "blacklist", len = 9}
>>>>>>> __FUNCTION__ = "check_user_blacklist_fixup"
>>>>>>> (gdb) p *model
>>>>>>> $1 = {text = {s = 0x7f23061ce0b8 "blacklist", len = 9}, spec = 
>>>>>>> 0x0,
>>>>>>> next = 0x0}
>>>>>>> (gdb) p *model->spec
>>>>>>> Cannot access memory at address 0x0
>>>>>>> (gdb)
>>>>>>> 
>>>>>>> 
>>>>>>> Jan
>>>>>>> 
>>>>>>> Daniel-Constantin Mierla schreef op 2016-06-23 19:46:
>>>>>>>> Can you get the output of following commands in gdb:
>>>>>>>> 
>>>>>>>> frame 1
>>>>>>>> 
>>>>>>>> info locals
>>>>>>>> 
>>>>>>>> p *model
>>>>>>>> 
>>>>>>>> p *model->spec
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> Daniel
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 23/06/16 14:45, Jan Hazenberg wrote:
>>>>>>>>> Daniel,
>>>>>>>>> 
>>>>>>>>> Here the output of the bt command. This was generated with
>>>>>>>>> kamailio
>>>>>>>>> 4.4.1
>>>>>>>>> 
>>>>>>>>> Core was generated by `/usr/local/sbin/kamailio -P
>>>>>>>>> /var/run/kamailio.pid -m 768 -M 16 -u kamailio -g k'.
>>>>>>>>> Program terminated with signal 11, Segmentation fault.
>>>>>>>>> #0  0x00007f22fd2526fb in str2int (_s=0x7ffc529b73c0, _r=0x30) 
>>>>>>>>> at
>>>>>>>>> ../../parser/../parser/../ut.h:643
>>>>>>>>> 643             *_r = 0;
>>>>>>>>> Missing separate debuginfos, use: debuginfo-install
>>>>>>>>> glibc-2.12-1.166.el6_7.7.x86_64 keyutils-libs-1.4-5.el6.x86_64
>>>>>>>>> krb5-libs-1.10.3-42z1.el6_7.x86_64
>>>>>>>>> libcom_err-1.41.12-22.el6.x86_64
>>>>>>>>> libselinux-2.0.94-5.8.el6.x86_64 
>>>>>>>>> libxml2-2.7.6-20.el6_7.1.x86_64
>>>>>>>>> mysql-libs-5.1.73-5.el6_6.x86_64
>>>>>>>>> nss-softokn-freebl-3.14.3-23.el6_7.x86_64
>>>>>>>>> openssl-1.0.1e-42.el6_7.4.x86_64 pcre-7.8-7.el6.x86_64
>>>>>>>>> zlib-1.2.3-29.el6.x86_64
>>>>>>>>> (gdb) bt
>>>>>>>>> #0  0x00007f22fd2526fb in str2int (_s=0x7ffc529b73c0, _r=0x30) 
>>>>>>>>> at
>>>>>>>>> ../../parser/../parser/../ut.h:643
>>>>>>>>> #1  0x00007f22fd252ece in check_user_blacklist_fixup
>>>>>>>>> (param=0x7f23061cdd88, param_no=1) at userblacklist.c:213
>>>>>>>>> #2  0x0000000000531e49 in fix_actions (a=0x7f23061cdd28) at
>>>>>>>>> route.c:919
>>>>>>>>> #3  0x00000000005613b7 in fix_rval (rv=0x7f23061cfa68) at
>>>>>>>>> rvalue.c:2876
>>>>>>>>> #4  0x000000000057323e in fix_rval_expr (p=0x7f23061cfa60) at
>>>>>>>>> rvalue.c:3797
>>>>>>>>> #5  0x0000000000573253 in fix_rval_expr (p=0x7f23061cf350) at
>>>>>>>>> rvalue.c:3808
>>>>>>>>> #6  0x000000000052da79 in fix_actions (a=0x7f23061ce7f0) at
>>>>>>>>> route.c:706
>>>>>>>>> #7  0x000000000053da17 in fix_rl (rt=0xac8640) at route.c:2088
>>>>>>>>> #8  0x000000000053da4d in fix_rls () at route.c:2104
>>>>>>>>> #9  0x00000000004b83ea in main (argc=11, argv=0x7ffc529b8158) 
>>>>>>>>> at
>>>>>>>>> main.c:2605
>>>>>>>>> (gdb)
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> 
>>>>>>>>> Jan
>>>>>>>>> 
>>>>>>>>> Daniel-Constantin Mierla schreef op 2016-06-23 12:53:
>>>>>>>>>> Hello,
>>>>>>>>>> 
>>>>>>>>>> send the all the output of 'bt' command inside gdb. It will 
>>>>>>>>>> give
>>>>>>>>>> the
>>>>>>>>>> full execution stack, likely the problem is not in frame 0, 
>>>>>>>>>> but
>>>>>>>>>> in a
>>>>>>>>>> previous one.
>>>>>>>>>> 
>>>>>>>>>> Cheers,
>>>>>>>>>> Daniel
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On 23/06/16 12:47, Jan Hazenberg wrote:
>>>>>>>>>>> I just tried to use the check_user_blacklist function but 
>>>>>>>>>>> then
>>>>>>>>>>> kamailio crashed when i start it. I'm using the following 
>>>>>>>>>>> code:
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>         if (!check_user_blacklist("blacklist",
>>>>>>>>>>> "$avp(from_domain)",
>>>>>>>>>>> "$(avp(ruri_number){s.substr,1,0})")) {
>>>>>>>>>>>                 xlog("L_ALERT", "ALERT: $rU is blacklisted,
>>>>>>>>>>> rejecting
>>>>>>>>>>> call - IP=$si PORT=$sp R=$ru ID=$ci FU=$fu M=$rm UA=$ua\n");
>>>>>>>>>>>                 sl_send_reply("403", "Forbidden");
>>>>>>>>>>>                 exit;
>>>>>>>>>>>         }
>>>>>>>>>>> 
>>>>>>>>>>> This is the GDB output:
>>>>>>>>>>> 
>>>>>>>>>>> Core was generated by `/usr/local/sbin/kamailio -P
>>>>>>>>>>> /var/run/kamailio.pid -m 768 -M 16 -u kamailio -g k'.
>>>>>>>>>>> Program terminated with signal 11, Segmentation fault.
>>>>>>>>>>> #0  0x00007fdf4b2be6fb in str2int (_s=0x7fff312b7bd0,
>>>>>>>>>>> _r=0x30) at
>>>>>>>>>>> ../../parser/../parser/../ut.h:643
>>>>>>>>>>> 643             *_r = 0;
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> I have kamailio 4.4.0 installed, just tested with 4.4.1 and 
>>>>>>>>>>> the
>>>>>>>>>>> result
>>>>>>>>>>> is the same.
>>>>>>>>>>> 
>>>>>>>>>>> Thanks,
>>>>>>>>>>> 
>>>>>>>>>>> Jan
>>>>>>>>>>> 
>>>>>>>>>>> Jan Hazenberg schreef op 2016-06-23 09:47:
>>>>>>>>>>>> Hello,
>>>>>>>>>>>> 
>>>>>>>>>>>> I'm trying to use the userblacklist module to implement a
>>>>>>>>>>>> global
>>>>>>>>>>>> blacklist. I have a few questions about the module.
>>>>>>>>>>>> 
>>>>>>>>>>>> Is it possible to use a avp for the check_blacklist 
>>>>>>>>>>>> function?
>>>>>>>>>>>> If i'm
>>>>>>>>>>>> correct it will only parse the request URI, but i'm
>>>>>>>>>>>> rewriting the
>>>>>>>>>>>> URI
>>>>>>>>>>>> in a branch route to allow different formats to different
>>>>>>>>>>>> destinations. Or is this only possible with the
>>>>>>>>>>>> check_user_blacklist
>>>>>>>>>>>> function?
>>>>>>>>>>>> 
>>>>>>>>>>>> I also have a issue with numbers in E164 format with a 
>>>>>>>>>>>> leading
>>>>>>>>>>>> +. I
>>>>>>>>>>>> tried to escape this with a \ in the database but it will 
>>>>>>>>>>>> not
>>>>>>>>>>>> load the
>>>>>>>>>>>> entry's when i use the + in front of the number. Is the +
>>>>>>>>>>>> supported by
>>>>>>>>>>>> this module or should i strip it before the function and add 
>>>>>>>>>>>> it
>>>>>>>>>>>> again
>>>>>>>>>>>> afterwards?
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> 
>>>>>>>>>>>> Jan
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>>>>> mailing
>>>>>>>>>>>> list
>>>>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>>>> mailing
>>>>>>>>>>> list
>>>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>> _______________________________________________
>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>> mailing list
>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>> _______________________________________________
>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users 
>>>>>>> mailing
>>>>>>> list
>>>>>>> sr-users at lists.sip-router.org
>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>> 
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing 
>>>> list
>>>> sr-users at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>> 
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing 
>> list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users



More information about the sr-users mailing list