[OpenSIPS-Users] Using b2bua top hiding plus dispatcher module
David Santiago
david.santiago at almiralabs.com
Mon Oct 11 12:48:13 CEST 2010
Hi all,
After cleaning up the initialization problems in the b2bua related
modules I'm testing a configuration I want to use in order to enable
the "top hiding" scenario, plus using the dispatcher module so I can
configure the internal jain slee server that receives the requests
from the opensips proxy, like this:
VOIP PROVIDER <-------> OPENSIPS <-------> INTERNAL JAIN SLEE SERVER
I will write here the configuration I'm using, taken from the
configuration example available, that results in the INVITEs received
from the VOIP PROVIDER being sent by OPENSIPS to itself (to its public
address, in particular), ad infinitum.
The modparam("dispatcher", "list_file",
"/opt/opensipsnotls/etc/opensips/dispatcher.list") entry points to the
file required by the dispatcher module to determine the ip and port
where the internal jain slee server is running. Furthermore, our
service implementation requires the addition of the
P-Preferred-Service header, which is done with append_hf().
Any hint would be appreciated. Thanks in advance!
# Debugging mode:
debug=9
memlog=6
fork=yes
auto_aliases=no
log_stderror=no
disable_dns_blacklist=yes
listen=10.122.54.163:5060 # private opensips ip
# alias=OSIPS_REALM
#port=OSIPS_PORT
sip_warning=0
#server_header="SRV_SIGNATURE"
#user_agent_header="PP_USER_AGENT"
#mhomed=yes
#memlog=2
check_via=no
dns=off
rev_dns=off
children=8
disable_tcp=yes
log_facility=LOG_LOCAL0
# for more info: opensips -h
# ------------------ module loading ----------------------------------
mpath="/opt/opensipsnotls/lib/opensips/modules/"
#loadmodule "db_mysql.so"
#loadmodule "xlog.so"
loadmodule "textops.so"
loadmodule "maxfwd.so"
loadmodule "rr.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "signaling.so"
loadmodule "b2b_entities.so"
loadmodule "b2b_logic.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "mi_fifo.so"
loadmodule "dispatcher.so"
# ----------------- setting module-specific parameters ---------------
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
#modparam("usrloc", "db_url", "mysql://opensips:opensipsrw@localhost/opensips")
#modparam("usrloc", "db_mode", 2)
modparam("tm", "pass_provisional_replies", 1)
modparam("dispatcher", "list_file",
"/opt/opensipsnotls/etc/opensips/dispatcher.list")
modparam("b2b_entities", "server_address",
"sip:MY_OPENSIPS_PUBLIC_IP_GOES_HERE:5060")
#modparam("b2b_logic", "script_scenario",
"/home/anca/work/opensips/modules/b2b_logic/scenario_script.xml")
#modparam("b2b_logic", "extern_scenario",
"/home/anca/work/opensips/modules/b2b_logic/scenario_extern.xml")
modparam("b2b_entities", "script_req_route", "b2b_request")
modparam("b2b_entities", "script_reply_route", "b2b_reply")
route[b2b_request] {
xlog("b2b_request ($ci)\n");
}
route[b2b_reply] {
xlog("b2b_reply ($ci)\n");
}
route {
xlog("mozaa - Here we go...");
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (msg:len >= 2380 ) {
sl_send_reply("513", "Message too big");
exit;
};
if (!method=="REGISTER")
record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
};
if(is_method("INVITE") && /* only for Invite messages from bob*/
!(src_ip == "10.122.54.163" && src_port ==5060)) /* skip
Invite messages generated by the server*/
{
# DO NOT call t_newtran() on this request -> it will result in the
transaction never being deleted
##b2b_init_request("prepaid", "sip:320 at opensips.org:5070",
"sip:321 at opensips.org:5070");
xlog("mozaa ft - [$ft]");
xlog("mozaa fu - [$fu]");
xlog("mozaa tt - [$tt]");
xlog("mozaa tu - [$tu]");
xlog("mozaa du - [$du]");
xlog("mozaa si - [$si]");
$var(to) = $tu;
$var(to) = $(var(to){s.substr,4,0});
$var(to) = $(var(to){s.select,0,@});
$var(proxy_public_addr) = $(var(to){s.select,1,@});
xlog("mozaa to - [$var(to)]");
xlog("mozaa contact - $hdr(Contact)");
$var(from) = $fu;
$var(from) = $(var(from){s.substr,4,0});
if($var(to)=="THE_NUMBER_REGISTERED_IN_MY_VOIP_PROVIDER_GOES_HERE") {
xlog("mozaa x - SPAIN");
if (
subst('/^From:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/From:\1sip:34$var(from)\2/ig')
) {
xlog("mozaa from modified!");
};
append_hf("P-Preferred-Service: OneService\r\n");
} else {
xlog("mozaa x - USA");
append_hf("P-Preferred-Service: AnotherService\r\n");
}
ds_select_dst("1", "0");
xlog("mozaa - Launching top hiding scenario for du = $du");
b2b_init_request("top hiding");
exit;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
};
if (uri==myself) {
if (method=="REGISTER") {
save("location");
exit;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
};
append_hf("P-hint: usrloc applied\r\n");
};
route(1);
}
route[1] {
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
exit;
}
More information about the Users
mailing list