[OpenSIPS-Users] Using b2bua top hiding plus dispatcher module

David Santiago david.santiago at almiralabs.com
Wed Oct 13 11:19:34 CEST 2010


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
>



More information about the Users mailing list