[OpenSIPS-Users] Using b2bua top hiding plus dispatcher module
Anca Vamanu
anca at opensips.org
Thu Oct 14 09:08:58 CEST 2010
Hi David,
The dispatcher is working right - just that if you use b2bua it doesn't
have no effect as it does not use the newly set $du. Since it is sent
again to your opensips you can do a filter after the source address of
the message and do processing needed for the Invite going out if the
source is itself.
if (!has_totag() && is_method("INVITE") && !(src_ip=="MY_IP" &&
src_port=="MY_PORT")) {
b2b_init_request("top hiding");
exit;
}
....
the rest of the changes needed.
Anyhow, I should add using the $du as the outbound proxy for the newly
generated request on the features to implement list.
Regards,
Anca
On 10/13/2010 12:19 PM, David Santiago wrote:
> I'll check it later, but the fact is that I have to solve first the
> problem that prevents the INVITEs generated by OpenSIPs to be sent to
> the internal jain slee server.
>
> I have confirmed that after the call to ds_select(), the value of $du
> points to such server (which has been obtained from the
> /opt/opensipsnotls/etc/opensips/dispatcher.list file), but the INVITEs
> are not sent there, but to the public IP address of the OpenSIPs
> server. Without the b2bua "setup", the dispatcher has been working
> fine in other tests I've made...
>
>
> Regards,
> David
>
> On Tue, Oct 12, 2010 at 11:22 AM, Anca Vamanu<anca at opensips.org> wrote:
>
>> Hi David,
>>
>> The only thing that won't work as you like is the append_hf - it won't
>> work as you like since the b2bua module won't see that header. You need
>> to do that for the new request generated by the b2bua and put that code
>> in the local_route.
>>
>> Regards,
>>
>> --
>> Anca Vamanu
>> www.voice-system.ro
>>
>>
>>
>> On 10/11/2010 01:48 PM, David Santiago wrote:
>>
>>> 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;
>>> }
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
--
Anca Vamanu
www.voice-system.ro
More information about the Users
mailing list