[SR-Users] Access via script to location data in the memory

Social Boh social at bohboh.info
Sat Jul 31 19:02:31 CEST 2021


So, my final configuration is:

One domain with AWS Route53 same weight configuration: 50% server1 and 
50% server2

The user register over the domain.

Two Kamailio Servers with DMQ and DMQ_USRLOC modules configured; 1.2.3.4 
first server IP and 5.6.7.8 second server IP

Most important configurations *Server1*:

/*listen=udp:1.2.3.4:5060
listen=udp:1.2.3.4:5222*/

/*# ---- dmq params ----
modparam("dmq", "server_address", "sip:1.2.3.4")
modparam("dmq", "notification_address", "sip:5.6.7.8")
modparam("dmq", "multi_notify", 0)
modparam("dmq", "num_workers", 4)
modparam("dmq", "ping_interval", 30)

# ---- dmq_usrloc params ----
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 1)
modparam("dmq_usrloc", "batch_size", 10)
modparam("dmq_usrloc", "batch_usleep", 1000)
modparam("dmq_usrloc", "batch_msg_size", 60000)
modparam("dmq_usrloc", "batch_msg_contacts", 50)
modparam("dmq_usrloc", "usrloc_domain", "location")
modparam("dmq_usrloc", "replicate_socket_info", 0)
modparam("dmq_usrloc", "usrloc_delete", 1)*/

before the block begin with:

/*$avp(oexten) = $rU;
         if (!lookup("location")) {*/

I put

/*if (!dmq_is_from_node()) {*//*
*//*if(reg_fetch_contacts("location", "$ru", "contacto")) {*//*
*//*if($(ulc(contacto=>socket))) == 0 {*//*
*//*rewritehost("5.6.7.8");*//*
*//*                        }*//*
*//*                        route(RELAY);*//*
*//*                }*//*
*//*        }*/

If the socket value is null (0) means the user is registered on the 
second Kamailio so send INVITE to second Kamailio

/*route[AUTH] {*//*
*//*#!ifdef WITH_AUTH*//*
*//*
*//*if (dmq_is_from_node()) {*//*
*//*        $ru = $tu;*//*
*//*return;*//*
*//*}*/

If INVITE comes from other DMQ node don't need authentication but I have 
to change RURI with To URI because I work in a multidomain setting and 
I'm  using the does_uri_exist function to know if the request is local 
or not.

*Server2*:

/*listen=udp:5.6.7.8:5060
listen=udp:5.6.7.8:5222*/

/**/

/*# ---- dmq params ----
modparam("dmq", "server_address", "sip:5.6.7.8")
modparam("dmq", "notification_address", "sip:1.2.3.4")
modparam("dmq", "multi_notify", 0)
modparam("dmq", "num_workers", 4)
modparam("dmq", "ping_interval", 30)

# ---- dmq_usrloc params ----
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 1)
modparam("dmq_usrloc", "batch_size", 10)
modparam("dmq_usrloc", "batch_usleep", 1000)
modparam("dmq_usrloc", "batch_msg_size", 60000)
modparam("dmq_usrloc", "batch_msg_contacts", 50)
modparam("dmq_usrloc", "usrloc_domain", "location")
modparam("dmq_usrloc", "replicate_socket_info", 0)
modparam("dmq_usrloc", "usrloc_delete", 1)*/

before the block begin with:

/*$avp(oexten) = $rU;
         if (!lookup("location")) {*/

/**/

/*if (!dmq_is_from_node()) {*//*
*//*                if(reg_fetch_contacts("location", "$ru", 
"contacto")) {*//*
*//*                        if($(ulc(contacto=>socket))) == 0 {*//*
*//*                                rewritehost("1.2.3.4");*//*
*//*                        }*//*
*//*                        route(RELAY);*//*
*//*                }*//*
*//*        }*/

If the socket value is null (0) means the user is registered on the 
first Kamailio so send INVITE to first Kamailio

/*route[AUTH] {
#!ifdef WITH_AUTH

if (dmq_is_from_node()) {
         $ru = $tu;
return;
}*/

If INVITE comes from other DMQ node don't need authentication but I have 
to change RURI with To URI because I work in a multidomain setting and 
I'm  using the does_uri_exist function to know if the request is local 
or not.

LIMITATIONS:

  * works only with a device for user. If a user registered from two o
    more devices I don't know how achieve the same behavior
  * works with Two Kamailio due to rewritehost function...
  * maybe the routing can be better

Regards

---
I'm SoCIaL, MayBe

El 31/07/2021 a las 5:23 a. m., Henning Westerholt escribió:
>
> Great, thanks for the confirmation.
>
> Henning
>
> *From:* sr-users <sr-users-bounces at lists.kamailio.org> *On Behalf Of 
> *Social Boh
> *Sent:* Friday, July 30, 2021 8:36 PM
> *To:* Kamailio (SER) - Users Mailing List <sr-users at lists.kamailio.org>
> *Subject:* Re: [SR-Users] Access via script to location data in the memory
>
> Works!
>
> I can access location data presents only in the memory. Now, next step 
> is using $(ulc(contacto=>socket)) to decide which Kamailio have to 
> process the call.
>
> Thank you
>
> ---
> I'm SoCIaL, MayBe
>
> El 30/07/2021 a las 11:51 a. m., Henning Westerholt escribió:
>
>     Hi,
>
>     just quickly looked in the registrar code, it uses the standard
>     usrloc functions to get data from memory or database.
>
>     Maybe just give it a try, I think it should work also in
>     in-memory/dmq mode.
>
>     Cheers,
>
>     Henning
>
>     *From:* sr-users <sr-users-bounces at lists.kamailio.org>
>     <mailto:sr-users-bounces at lists.kamailio.org> *On Behalf Of *Social Boh
>     *Sent:* Friday, July 30, 2021 6:42 PM
>     *To:* Kamailio (SER) - Users Mailing List
>     <sr-users at lists.kamailio.org> <mailto:sr-users at lists.kamailio.org>
>     *Subject:* Re: [SR-Users] Access via script to location data in
>     the memory
>
>     Hello,
>
>     reg_fetch_contacts use a table (I understood) to looking for data
>     about a user.
>
>     I'm using USRLOC module without database.
>
>     Regards
>
>     ---
>
>     I'm SoCIaL, MayBe
>
>     El 30/07/2021 a las 11:18 a. m., Henning Westerholt escribió:
>
>         Hello,
>
>         have you looked to the reg_fetch_contact as already pointed
>         out? Then you can access e.g. the socket with the $ulc PV, see
>         the end of the registrar docs for an example.
>
>         Cheers,
>
>         Henning
>
>         -- 
>
>         Henning Westerholt – https://skalatan.de/blog/
>         <https://skalatan.de/blog/>
>
>         Kamailio services – https://gilawa.com <https://gilawa.com/>
>
>         *From:* sr-users <sr-users-bounces at lists.kamailio.org>
>         <mailto:sr-users-bounces at lists.kamailio.org> *On Behalf Of
>         *Social Boh
>         *Sent:* Friday, July 30, 2021 6:11 PM
>         *To:* Kamailio (SER) - Users Mailing List
>         <sr-users at lists.kamailio.org> <mailto:sr-users at lists.kamailio.org>
>         *Subject:* Re: [SR-Users] Access via script to location data
>         in the memory
>
>         Hello,
>
>         maybe is better I explain what I'd like to achieve:
>
>         I have two Kamailio using DMQ and DMQ_USRLOC modules so each
>         REGISTER is replicate on each Kamailio. I'm using DNS weight
>         to distribute the REGISTERs between the 2 Kamailios.
>
>         The only difference I have seen in the location data, with
>         *kamctl ul show* command, is the Kamailio receives REGISTER
>         have socket parameter with transport, ip, y port like
>         udp:1.2.3.4:5060 where 1.2.3.4 is Kamailio public IP; the
>         other Kamailio have this field empty.
>
>         When a call arrive to one Kamailio, querying the Socket field
>         I can known if I have to send the INVITE locally or forward
>         the INVITE to second Kamailio.
>
>         I don't know if there is other way to achieve this goal.
>
>         I think PATH protocol not apply here because If I reply the
>         REGISTER to the second Kamailio adding path header, I don't
>         need DMQ_USRLOC.
>
>         The idea is to take advantage of using these DMQ related modules.
>
>         Regards
>
>         ---
>
>         I'm SoCIaL, MayBe
>
>         El 29/07/2021 a las 5:16 p. m., Henning Westerholt escribió:
>
>             Hello,
>
>               
>
>             There are different functions in the registrar module, check them out:https://kamailio.org/docs/modules/devel/modules/registrar.html#idm576  <https://kamailio.org/docs/modules/devel/modules/registrar.html#idm576>
>
>               
>
>             reg_fetch_contacts(..) might be something you could use.
>
>               
>
>             Cheers,
>
>               
>
>             Henning
>
>               
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210731/bddbfd42/attachment.htm>


More information about the sr-users mailing list