[OpenSIPS-Users] Force rtp proxy
michel freiha
michofr at gmail.com
Sun Mar 8 23:45:46 CET 2009
Dear Bogdan,
Kindly note that I did what you asked for...It seems that I still have the
same issue...The OpenSIPS replied to INVITE packet where the IN field still
the PSTN gateway IP instead of OpenSIPS IP....Please check my config file
below:
#
# $Id: openser.cfg 3284 2007-12-06 18:56:59Z bogdan_iancu $
#
# OpenSER basic configuration script
# by Anca Vamanu <anca at voice-system.ro>
#
# Please refer to the Core CookBook at
http://www.openser.org/dokuwiki/doku.php
# for a explanation of possible statements, functions and parameters.
#
####### Global Parameters #########
debug=7
log_stderror=yes
log_facility=LOG_LOCAL7
#fork=yes
fork=yes
children=4
##NATING OPTIONS
check_via=yes
dns=no
rev_dns=no
/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#log_stderror=yes
/* uncomment the next line to disable TCP (default on) */
#disable_tcp=no
/* uncomment the next line to enable the auto temporary blacklisting of
not available destinations (default disabled) */
#disable_dns_blacklist=no
/* uncomment the next line to enable IPv6 lookup after IPv4 dns
lookup failures (default disabled) */
#dns_try_ipv6=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on revers DNS on IPs (default on) */
#auto_aliases=no
#OpenSer Config
alias=domain.net
/
/* uncomment and configure the following line if you want openser to
bind on a specific interface/port/proto (default bind on all available)
*/
listen=udp:sip.domain.net:5060
####### Modules Section ########
#set module path
mpath="/usr/local/lib/opensips/modules/"
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri_db.so"
loadmodule "uri.so"
loadmodule "xlog.so"
loadmodule "acc.so"
loadmodule "group.so"
loadmodule "nathelper.so"
loadmodule "avpops.so"
loadmodule "carrierroute.so"
#loadmodule "xcap_client.so"
/* uncomment next lines for MySQL based authentication support
NOTE: a DB (like mysql) module must be also loaded */
loadmodule "auth.so"
loadmodule "auth_db.so"
/* uncomment next line for aliases support
NOTE: a DB (like mysql) module must be also loaded */
loadmodule "alias_db.so"
/* uncomment next line for multi-domain support
NOTE: a DB (like mysql) module must be also loaded
NOTE: be sure and enable multi-domain support in all used modules
(see "multi-module params" section ) */
# ----------------- setting module-specific parameters ---------------
# ---- ACC params # CHANGE BACK ENABLE THE BELOW
modparam("acc", "db_url", "mysql://username:passwd@DB_IP/opensips")
modparam("acc", "acc_from_tag_column", "from_tag")
modparam("acc", "acc_to_tag_column", "to_tag")
modparam("acc", "db_flag", 2)
modparam("acc", "db_missed_flag", 6)
modparam("acc", "failed_transaction_flag", 7)
modparam("acc", "report_cancels", 0)
modparam("acc", "report_ack", 0)
modparam("acc", "early_media", 0)
modparam("acc", "log_level", 0)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 0)
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")
modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")
# ----------------- setting module-specific parameters ---------------
#######Carrier Route
modparam("carrierroute", "db_url", "mysql://username:passwd@DB_IP/opensips")
modparam("carrierroute", "config_source", "db")
# ------- Group Module
modparam("group", "db_url", "mysql://username:passwd@DB_IP/opensips")
# ---- alias params
#modparam("alias_db", "db_url", "mysql://user:passwd@localhost/openser")
modparam("alias_db", "db_url", "mysql://username:passwd@DB_IP/opensips")
modparam("alias_db", "use_domain", 0)
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr",1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- rr params -----
modparam("registrar", "method_filtering", 1)
modparam("registrar", "default_expires", 1800)
/* uncomment the next line to disable parallel forking via location */
/* uncomment the next line not to allow more than 10 contacts per AOR */
modparam("registrar", "max_contacts", 10)
# ----- uri_db params -----
/* by default we disable the DB support in the module as we do not need it
in this configuration */
modparam("uri_db", "use_uri_table", 0)
modparam("uri_db", "db_url", "mysql://username:passwd@DB_IP/opensips")
# ----- usrloc params -----
modparam("usrloc", "timer_interval", 10)
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "db_url","mysql://username:passwd@DB_IP/opensips")
# ----- auth_db params -----
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "use_domain", 0)
modparam("auth_db", "db_url","mysql://username:passwd@DB_IP/opensips")
modparam("usrloc", "db_url","mysql://username:passwd@DB_IP/opensips")
####### AVPOPS Section
modparam("avpops","avp_url","mysql://username:passwd@DB_IP/opensips")
modparam("avpops","avp_table","usr_preferences")
modparam("usrloc", "nat_bflag", 6)
modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7890")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", 7)
modparam("nathelper", "sipping_from", "sip:pinger at OpenSIPS_IP")
modparam("registrar", "received_avp", "$avp(i:42)")
modparam("nathelper", "received_avp", "$avp(i:42)")
# ------------------------- request routing logic --------------#
####### Routing Logic ########
route
{
if(!mf_process_maxfwd_header("10")){
sl_send_reply("486", "To Many Hops");
return;
}
if(msg:len >= max_len){
sl_send_reply("513", "Message To Big");
return;
}
# NAT detection
route(3);
if(!is_method("REGISTER")){
record_route();
}
if (is_method("INVITE")) {
setflag(4); # do accounting
}
if (is_method("OPTIONS") && uri==myself && $rU==NULL ) {
sl_send_reply("200","OK");
exit;
}
if( uri == myself )
{
if(is_method("REGISTER")){
if (is_user_in("From", "blocked")) {
sl_send_reply("403", "Unauthorized, account is
disabled");
exit();
}
if(!www_authorize("domain.net", "subscriber")){
www_challenge("domain.net", "1");
return;
}
if (isflagset(5))
{
setbflag(6);
# if you want OPTIONS natpings uncomment next
# setbflag(7);
};
save("location");
}
}
alias_db_lookup("dbaliases");
if($rU =~ "^00.*")
{
if(!cr_route("default", "0", "$rU", "$rU", "call_id")){
sl_send_reply("403", "Not allowed");
} else {
# In cas of failure, re-route the request
t_on_failure("1");
t_on_reply("1");
force_rtp_proxy();
t_relay();
}
}
if(does_uri_exist()){
# local uri does exist, is probably a user.
xlog("L_INFO","User Exists");
# lookup location
if(lookup("location")){
xlog("L_INFO","User Online");
route(1);
return;
}
else
{
if(src_ip!=OS2_IP)
{
#Diverting to Server 2
xlog("L_INFO","REDIRECCTING TO SERVER 2");
rewritehost("OS2_IP");
route(1);
}
else
{
sl_send_reply("404", "OK");
exit;
}
}
}#end of URI Found IF
else
{
if(!is_method("REGISTER")){
return;
}
}
}
route[1] {
if (is_method("INVITE")) {
t_on_branch("2");
t_on_reply("2");
t_on_failure("1");
}
if (subst_uri('/(sip:.*);nat=yes/\1/')){
setbflag(6);
};
if (method=="BYE" || method=="CANCEL") {
route(4);
};
if(isflagset(5)||isbflagset(6)) {
route(4);
}
if (!t_relay()) {
sl_reply_error();
};
exit;
}
route[3]{
force_rport();
if (nat_uac_test("19")) {
if (method=="REGISTER") {
fix_nated_register();
} else {
fix_nated_contact();
};
setflag(5);
};
}
route[4] {
if (is_method("BYE")) {
unforce_rtp_proxy();
} else if (is_method("INVITE")){
force_rtp_proxy();
t_on_failure("2");
};
if (isflagset(5))
search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
t_on_reply("1");
}
branch_route[2] {
xlog("new branch at $ru\n");
}
onreply_route[2] {
xlog("incoming reply\n");
}
failure_route[1] {
if (t_was_cancelled()) {
exit;
}
}
failure_route[2] {
if (isbflagset(6) || isflagset(5)) {
unforce_rtp_proxy();
}
}
onreply_route[1] {
if (t_check_status("2[0-9][0-9]")) {
force_rtp_proxy();
}
exit;
}
I need advice please
Regards
On Fri, Feb 27, 2009 at 3:04 PM, michel freiha <michofr at gmail.com> wrote:
> Thanks Bogdan...I'll check this and get back to you
>
> Regards
>
>
> On Fri, Feb 27, 2009 at 1:34 PM, Bogdan-Andrei Iancu <
> bogdan at voice-system.ro> wrote:
>
>> Hi michel,
>>
>> Should do something like:
>>
>> if(!cr_route("default", "0", "$rU", "$rU", "call_id")){
>> sl_send_reply("403", "Not allowed");
>> } else {
>> # In cas of failure, re-route the request
>> t_on_failure("1");
>> t_on_reply("1");
>> force_rtp_proxy();
>> t_relay();
>> }
>>
>>
>> onreply_route[1] {
>> if (t_check_status("2[0-9][0-9]")) {
>> force_rtp_proxy();
>> }
>> }
>>
>> See : http://www.opensips.org/index.php?n=Resources.DocsCoreRoutes#toc4
>>
>> Regards,
>> Bogdan
>>
>> michel freiha wrote:
>>
>>> Dear Bogdan,
>>>
>>> Do you mean doing something like that?
>>>
>>> if(!cr_route("default", "0", "$rU", "$rU", "call_id")){
>>> sl_send_reply("403", "Not allowed");
>>> } else {
>>> # In cas of failure, re-route the request
>>> t_on_failure("1");
>>>
>>> force_rtp_proxy();
>>> t_relay();
>>> route(2) ;
>>> }
>>>
>>>
>>> Please let me know how can I force it on route2 for the 200OK reply
>>>
>>> Thanks Bogdan
>>>
>>>
>>> On Fri, Feb 27, 2009 at 11:54 AM, Bogdan-Andrei Iancu <
>>> bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>>
>>> Hi Michel,
>>>
>>> You have to call twice force_rtp_proxy() in order to complete the
>>> RTP session (and have RTP flowing). First for the INVITE (as you
>>> already do) and second for the 200 OK reply.
>>>
>>> So install a onreply_route and if the reply is 200 OK, call again
>>> force_rtp_proxy.
>>>
>>> Regards,
>>> Bogdan
>>>
>>> michel freiha wrote:
>>>
>>> Dear All,
>>>
>>> I need to make all my rtp traffic through OpenSips to pass
>>> through rtp proxy...I have the following route:
>>>
>>>
>>> if(!cr_route("default", "0", "$rU", "$rU", "call_id")){
>>> sl_send_reply("403", "Not allowed");
>>> } else {
>>> # In cas of failure, re-route the request
>>> t_on_failure("1");
>>> force_rtp_proxy();
>>> t_relay();
>>> }
>>> The call is working fine but with no audio...How can i fix
>>> this issue in order to have 2 way audio through rtpproxy?
>>>
>>> Regards
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20090309/68e40811/attachment-0001.htm
More information about the Users
mailing list