[SR-Users] Pseudo variables and uid_domain module compatibility

Philippe Sultan philippe.sultan at gmail.com
Fri Jan 25 14:57:00 CET 2013


I was using this module in version 3.1.0. The thing is that I used the
provisioning python scripts (ser_domain, ser_attrs) to create my domains
and their attributes (see :
http://www.mail-archive.com/sr-users@lists.sip-router.org/msg12415.html).

The default value for the flag field when creating a domain was 37, which
according to kamailio-3.1.0/lib/python2.4/site-packages/serctl/flag.py
equals to LOAD_SER | CANON | FOR_SERWEB :
LOAD_SER       = 1L << 0  # The row should be loaded by SER
DISABLED       = 1L << 1  # The row is disabled
CANON          = 1L << 2  # Canonical entry (domain or uri)
IS_TO          = 1L << 3  # The URI can be used in To
IS_FROM        = 1L << 4  # The URI can be used in From
FOR_SERWEB     = 1L << 5  # Credentials instance can be used by serweb

As kamctl does not handle the uid_domain and uid_domain_attrs tables, I
must rely on MySQL default value (0), set in
utils/kamctl/mysql/uid_domain-create.sql.

And 0 for the flag field will make lookup_domain fail in uid_domain if
caching is used. So, 37 seems to be the right default value to provision
(the flags from the former python script are all reflected in
lib/srdb2/db.h).

I have written a patch that adds uid_domain commands to kamctl with the
default values from 3.1.0, attached to this message. Will work on something
for uid_domain_attrs too if needed.

Cheers,

Philippe

2013/1/24 Daniel-Constantin Mierla <miconda at gmail.com>

>  I am not using this module and I don't know what are supposed to be the
> right default values for flags. But it should be like it was in the past.
> If you used with an older version 3.x, apart of renaming, nothing was
> touched in the code for 4.x.
>
> Cheers,
> Daniel
>
>
> On 1/24/13 4:27 PM, Philippe Sultan wrote:
>
> Thank you Daniel, your answer helped a lot.
>
> With :
> #!KAMAILIO
> loadmodule "pv.so"
> $avp(fd.did)
>
> Everything works fine, but only if I turn off caching with :
> modparam("uid_domain", "db_mode", 0)
>
> Otherwise, avps are not loaded from the db. Digging into
> modules/uid_domain/domain.c, I figured out that the default flag value 0
> for records in the uid_domain table would make the load_domains function
> skip the records, see (in load_domains) :
>                 /* Skip entries that are disabled/scheduled for removal */
>                 if (flags & SRDB_DISABLED) goto skip;
>                 /* Skip entries that are for serweb/ser-ctl only */
>                 if (!(flags & SRDB_LOAD_SER)) goto skip;
>
> Setting the flag value to 1 does make the load_domains function work as
> expected, and load the records from the db.
>
> Maybe the uid_domain-create.sql file under utils should be modifed.
>
> Thanks again Daniel,
>
> Philippe
>
> 2013/1/24 Daniel-Constantin Mierla <miconda at gmail.com>
>
>>  The sript compatibility was set to kamailio strict mode, throwing error
>> if $xy was not a pv. You can fetch latest master and should work like if no
>> pv found as $xy, then is set as avp.
>>
>> Even if with your version, adding #!SER as first line should make it work
>> with $fd.did...
>>
>> Cheers,
>> Daniel
>>
>>
>> On 1/24/13 10:58 AM, Daniel-Constantin Mierla wrote:
>>
>> Hi Philippe,
>>
>> On 1/23/13 11:54 PM, Philippe Sultan wrote:
>>
>> Hey Daniel,
>>
>> Thanks a lot for your help.
>>
>>   do you have #!SER as first line? This part should be the same ... if
>>> pv not found, then it should be considered avp. I will try to see what is
>>> the issue.
>>>
>>
>> I don't have #!SER
>>
>>
>> it should not be needed for this case, if $xyz is not found as pv, it is
>> considered avp.
>>
>>
>>
>>>  Anyhow, for the moment, if not working, load pv and then try:
>>> - $fd and $td must stay as parameters for lookup_domain()
>>> - for strempty() try to use $avp(fd.did) and $avp(td.did)
>>>
>>
>> I loaded pv, and modified the script accordingly. No syntax errors
>> anymore, but avps are not populated from the data stored in the db. Maybe a
>> problem with lookup_domain?
>>
>>
>> the modules_s/domain was only renamed to uid_domain to avoid conflict
>> with the other domain module. No other recent changes to my knowledge. Can
>> you try to put IF around it and see if returns true or false? Can you check
>> the sql queries in the server to see if they are returning something?
>>
>> Cheers,
>> Daniel
>>
>>
>> Here's the excerpt of the script (I replaced the selects with '@' by
>> '$sel()', and added a dump_attrs()) :
>>         xlog("L_INFO", "from.uri.host : $sel(from.uri.host)\n");
>>         xlog("L_INFO", "ruri.host : $sel(ruri.host)\n");
>>
>>         lookup_domain("$fd", "$sel(from.uri.host)");
>>         lookup_domain("$td", "$sel(ruri.host)");
>>
>>         xlog("L_INFO", "fd : $avp(fd.did)\n");
>>
>>         dump_attrs();
>>
>>         if (strempty($avp(fd.did)) && strempty($avp(td.did))) {
>>                 # Neither the calling nor the called domain is local
>>                 # This is a relaying attempt which should be forbidden
>>                 sl_reply("403", "Relaying Forbidden");
>>                 drop;
>>         }
>>
>> And as a result :
>> 0(22008) INFO: <script>: from.uri.host : ext.test.r3load.voip
>>  0(22008) INFO: <script>: ruri.host : ext.test.r3load.voip
>>  0(22008) INFO: <script>: fd : <null>
>>  0(22008) INFO: avp [avp.c:573]: class=GLOBAL
>>  0(22008) INFO: avp [avp.c:575]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:583]: track=FROM class=DOMAIN
>>  0(22008) INFO: avp [avp.c:585]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:593]: track=TO class=DOMAIN
>>  0(22008) INFO: avp [avp.c:595]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:603]: track=FROM class=USER
>>  0(22008) INFO: avp [avp.c:605]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:613]: track=TO class=USER
>>  0(22008) INFO: avp [avp.c:615]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:623]: track=FROM class=URI
>>  0(22008) INFO: avp [avp.c:625]: INFO: No AVP present
>>  0(22008) INFO: avp [avp.c:633]: track=TO class=URI
>>  0(22008) INFO: avp [avp.c:635]: INFO: No AVP present
>>
>> In the db :
>> +----+----------------------+----------------------+-------+
>> | id | did                  | domain               | flags |
>> +----+----------------------+----------------------+-------+
>> |  1 | ext.test.r3load.voip | ext.test.r3load.voip |     0 |
>> +----+----------------------+----------------------+-------+
>>
>> Thanks again!
>>
>> Philippe
>>
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>> --
>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>> Kamailio World Conference, April 16-17, 2013, Berlin
>>  - http://conference.kamailio.com -
>>
>>
>> --
>> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>> Kamailio World Conference, April 16-17, 2013, Berlin
>>  - http://conference.kamailio.com -
>>
>>
>> _______________________________________________
>> 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
>>
>>
>
>
> --
> Philippe Sultan
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference, April 16-17, 2013, Berlin
>  - http://conference.kamailio.com -
>
>
> _______________________________________________
> 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
>
>


-- 
Philippe Sultan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130125/ff5beb09/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kamctl-uid_domain.diff
Type: application/octet-stream
Size: 4310 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20130125/ff5beb09/attachment-0001.obj>


More information about the sr-users mailing list