Hello, I'm learning Kamailio. My ultimate goal is to be able to route SIP messages from User Agents to specific FS boxes.
I'm starting with routing REGISTER messages. I used app_perl to randomly lookup one of the FS box's IP Address from postgres database, then I stored the IP in avp and then in hash. It seemed like overkill but it was the only way I could keep the FS IP address in memory between the first REGISTER and REGISTER with Auth.
my app_perl script sets the IP as follows:
my $sth = $dbh->prepare("SELECT ip_address FROM host_machine WHERE is_online = true ORDER BY random() LIMIT 1"); $sth->execute(); my $host_ip_address = $sth->fetchrow(); Kamailio::AVP::add(10, "sip:$host_ip_address:5060");
And here is my kamailio.cfg for REGISTERs
route[REGISTRAR] {
if (!is_method("REGISTER|PUBLISH")) return;
if (is_present_hf("Authorization")) { add_path_received(); $avp(i:10) = $sht(a=>$ci::dest_server); avp_pushto("$du", "$avp(i:10)"); } else { perl_exec("random_server"); avp_pushto("$du", "$avp(i:10)"); $sht(a=>$ci::dest_server) = $avp(i:10);
} t_relay();
exit; }
"random_server" is the perl script to get the FS IP address... Seems crude but works... I'm sure there is probably a more elegant way to do what im trying so any advice and criticism is appreciated, thank you!
/V
Hello,
if you want to rely on kamailio to memorize where to send the following register, the hash table is the right tool.
Cheers, Daniel
On 16/09/14 03:37, Vik Killa wrote:
Hello, I'm learning Kamailio. My ultimate goal is to be able to route SIP messages from User Agents to specific FS boxes.
I'm starting with routing REGISTER messages. I used app_perl to randomly lookup one of the FS box's IP Address from postgres database, then I stored the IP in avp and then in hash. It seemed like overkill but it was the only way I could keep the FS IP address in memory between the first REGISTER and REGISTER with Auth.
my app_perl script sets the IP as follows:
my $sth = $dbh->prepare("SELECT ip_address FROM host_machine WHERE is_online = true ORDER BY random() LIMIT 1"); $sth->execute(); my $host_ip_address = $sth->fetchrow(); Kamailio::AVP::add(10, "sip:$host_ip_address:5060");
And here is my kamailio.cfg for REGISTERs
route[REGISTRAR] {
if (!is_method("REGISTER|PUBLISH")) return;
if (is_present_hf("Authorization")) { add_path_received(); $avp(i:10) = $sht(a=>$ci::dest_server); avp_pushto("$du", "$avp(i:10)"); } else { perl_exec("random_server"); avp_pushto("$du", "$avp(i:10)"); $sht(a=>$ci::dest_server) = $avp(i:10);
} t_relay();
exit; }
"random_server" is the perl script to get the FS IP address... Seems crude but works... I'm sure there is probably a more elegant way to do what im trying so any advice and criticism is appreciated, thank you!
/V
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Thanks Daniel, I want to remove the htable entry after the register goes through, and I also want to check if the htable entry exists later.
I see
sht_rm_value_re("ha=>.*");
to remove the htable entry but how do i later check if the key exists?
Thanks /V
On Tue, Sep 16, 2014 at 11:52 AM, Daniel-Constantin Mierla < miconda@gmail.com> wrote:
Hello,
if you want to rely on kamailio to memorize where to send the following register, the hash table is the right tool.
Cheers, Daniel
On 16/09/14 03:37, Vik Killa wrote:
Hello, I'm learning Kamailio. My ultimate goal is to be able to route SIP messages from User Agents to specific FS boxes.
I'm starting with routing REGISTER messages. I used app_perl to randomly lookup one of the FS box's IP Address from postgres database, then I stored the IP in avp and then in hash. It seemed like overkill but it was the only way I could keep the FS IP address in memory between the first REGISTER and REGISTER with Auth.
my app_perl script sets the IP as follows:
my $sth = $dbh->prepare("SELECT ip_address FROM host_machine WHERE is_online = true ORDER BY random() LIMIT 1"); $sth->execute(); my $host_ip_address = $sth->fetchrow(); Kamailio::AVP::add(10, "sip:$host_ip_address:5060");
And here is my kamailio.cfg for REGISTERs
route[REGISTRAR] {
if (!is_method("REGISTER|PUBLISH")) return;
if (is_present_hf("Authorization")) { add_path_received(); $avp(i:10) = $sht(a=>$ci::dest_server); avp_pushto("$du", "$avp(i:10)"); } else { perl_exec("random_server"); avp_pushto("$du", "$avp(i:10)"); $sht(a=>$ci::dest_server) = $avp(i:10);
} t_relay();
exit; }
"random_server" is the perl script to get the FS IP address... Seems crude but works... I'm sure there is probably a more elegant way to do what im trying so any advice and criticism is appreciated, thank you!
/V
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Next Kamailio Advanced Trainings 2014 - http://www.asipto.com Sep 22-25, Berlin, Germany
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hello,
On 16/09/14 18:37, Vik Killa wrote:
Thanks Daniel, I want to remove the htable entry after the register goes through, and I also want to check if the htable entry exists later.
I see
sht_rm_value_re("ha=>.*");
this is going to remove all the items from the hash table -- perhaps you don't want to do that.
To remove the entry you added for register once the registration was successful, add reply_route where you check if it is REGISTER and the code is 200, then remove the item using the call id (same key as you used to add the item).
$sht(a=>$ci::dest_server) = $null;
Assigning $null removes the respective item from hash table.
to remove the htable entry but how do i later check if the key exists?
$null can be used to test if key exists or not, like if($sht(a=>x)==$null)
Cheers, Daniel
Thanks /V
On Tue, Sep 16, 2014 at 11:52 AM, Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com> wrote:
Hello, if you want to rely on kamailio to memorize where to send the following register, the hash table is the right tool. Cheers, Daniel On 16/09/14 03:37, Vik Killa wrote:
Hello, I'm learning Kamailio. My ultimate goal is to be able to route SIP messages from User Agents to specific FS boxes. I'm starting with routing REGISTER messages. I used app_perl to randomly lookup one of the FS box's IP Address from postgres database, then I stored the IP in avp and then in hash. It seemed like overkill but it was the only way I could keep the FS IP address in memory between the first REGISTER and REGISTER with Auth. my app_perl script sets the IP as follows: my $sth = $dbh->prepare("SELECT ip_address FROM host_machine WHERE is_online = true ORDER BY random() LIMIT 1"); $sth->execute(); my $host_ip_address = $sth->fetchrow(); Kamailio::AVP::add(10, "sip:$host_ip_address:5060"); And here is my kamailio.cfg for REGISTERs route[REGISTRAR] { if (!is_method("REGISTER|PUBLISH")) return; if (is_present_hf("Authorization")) { add_path_received(); $avp(i:10) = $sht(a=>$ci::dest_server); avp_pushto("$du", "$avp(i:10)"); } else { perl_exec("random_server"); avp_pushto("$du", "$avp(i:10)"); $sht(a=>$ci::dest_server) = $avp(i:10); } t_relay(); exit; } "random_server" is the perl script to get the FS IP address... Seems crude but works... I'm sure there is probably a more elegant way to do what im trying so any advice and criticism is appreciated, thank you! /V _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda Next Kamailio Advanced Trainings 2014 -http://www.asipto.com Sep 22-25, Berlin, Germany _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users