[Users] 1 OpenSER & 2 Providers

Klaus Darilion klaus.mailinglists at pernau.at
Mon Aug 29 09:38:42 CEST 2005


You can use sipsak to manuall REGISTER the SIP accoutns at the 
respective provider. As contact use the SIP account at your openser 
proxy, and as expiry use something like 20 years :-)

regards
klaus

Ozan Blotter wrote:
> Dear List,
>  
> Assume that there are two different service providers and one OpenSER in 
> middle of them. A client needs to use/connect OpenSER but also he/she 
> has accounts in both providers and both supplied him/her DDIs (landline 
> phone). Now again assume that client registers both of phones into 
> OpenSER. But still he/she wants to receive calls from both providers, is 
> it possible to receive calls from different providers to that 
> client and/or how to i setup ?
>  
> In current SER.CFG below, i only setup one prefix which is "0", but i 
> can change it to any and/or add many prefixes, ex: 0049 (germany), 001 
> (usa), 0044 (uk), 0090 (turkey) to Provider 1 and 0033 (france), 0038 
> (italy) to Provider 2 and so on.
>  
>  
> debug=3
> fork=yes
> log_stderror=no
>  
> listen=212.XXX.104.XXX        # This is OpenSER's Public IP
> port=5060
> children=4
>  
> alias=212.XXX.104.XXX        # This is OpenSER's Public IP
>  
> dns=no
> rev_dns=no
>  
> fifo="/tmp/openser_fifo"
> fifo_db_url="mysql://openser:openserrw@localhost/openser"
>  
> loadmodule "/usr/local/lib/openser/modules/mysql.so"
> loadmodule "/usr/local/lib/openser/modules/sl.so"
> loadmodule "/usr/local/lib/openser/modules/tm.so"
> loadmodule "/usr/local/lib/openser/modules/rr.so"
> loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/openser/modules/usrloc.so"
> loadmodule "/usr/local/lib/openser/modules/registrar.so"
> loadmodule "/usr/local/lib/openser/modules/auth.so"
> loadmodule "/usr/local/lib/openser/modules/auth_db.so"
> loadmodule "/usr/local/lib/openser/modules/uri.so"
> loadmodule "/usr/local/lib/openser/modules/uri_db.so"
> loadmodule "/usr/local/lib/openser/modules/mediaproxy.so"
> loadmodule "/usr/local/lib/openser/modules/nathelper.so"
> loadmodule "/usr/local/lib/openser/modules/textops.so"
> loadmodule "/usr/local/lib/openser/modules/domain.so"
> loadmodule "/usr/local/lib/openser/modules/acc.so"
>  
> modparam("auth_db", "calculate_ha1", 1)
> modparam("auth_db", "password_column", "password")
> modparam("auth_db", "use_domain", 1)
>  
> modparam("domain", "db_mode", 1)
>  
> modparam("nathelper", "rtpproxy_disable", 1)
> modparam("nathelper", "natping_interval", 180)
>  
> modparam("mediaproxy","natping_interval", 30)
> modparam("mediaproxy","mediaproxy_socket", "/var/run/mediaproxy.sock")
> modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/openser/sip-asymmetric-clients")
> modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/openser/rtp-asymmetric-clients")
>  
> modparam("usrloc", "db_mode", 2)
> modparam("usrloc", "use_domain", 1)
>  
> modparam("registrar", "default_expires", 60)
> modparam("registrar", "min_expires", 30)
> modparam("registrar", "nat_flag", 6)
> modparam("registrar", "use_domain", 1)
>  
> modparam("rr", "enable_full_lr", 1)
>  
> modparam("acc", "db_url", "mysql://openser:openserrw@localhost/openser")
> modparam("acc", "failed_transactions", 1)
> modparam("acc", "log_level", 1)
> modparam("acc", "log_flag", 1)
> modparam("acc", "db_flag", 1)
>  
> route {
>  
>         # -----------------------------------------------------------------
>         # Sanity Check Section
>         # -----------------------------------------------------------------
>         if (!mf_process_maxfwd_header("10")) {
>                 sl_send_reply("483", "Too Many Hops");
>                 break;
>         };
>  
>         if (msg:len > max_len) {
>                 sl_send_reply("513", "Message Overflow");
>                 break;
>         };
>  
>         # -----------------------------------------------------------------
>         # Record Route Section and Acc section
>         # -----------------------------------------------------------------
>         if (method=="INVITE" && client_nat_test("3")) {
>                 record_route_preset("212.XXX.104.XXX:5060;nat=yes");    
>     # This is OpenSER's Public IP
>         } else if (method!="REGISTER") {
>         if!(uri=~"^sip:833[0-9]*@") {        # I do not want to make 
> accounting if clients' prefix is beginning with 833
>                 record_route();
>                 setflag(1);
>             }
>         };
>  
>         # -----------------------------------------------------------------
>         # Call Tear Down Section
>         # -----------------------------------------------------------------
>         if (method=="BYE" || method=="CANCEL") {
>                 end_media_session();
>         };
>  
>         # -----------------------------------------------------------------
>         # Loose Route Section
>         # -----------------------------------------------------------------
>         if (loose_route()) {
>  
>                 if (has_totag() && (method=="INVITE" || method=="ACK")) {
>  
>                         if (client_nat_test("3") || 
> search("^Route:.*;nat=yes")) {
>                                 setflag(6);
>                                 use_media_proxy();
>                         };
>                 };
>  
>                 route(1);
>                 break;
>         };
>  
>         # -----------------------------------------------------------------
>         # Call Type Processing Section
>         # -----------------------------------------------------------------
>  
>         if (uri!=myself) {
>                 route(1);
>                 break;
>         };
>  
>         if (uri==myself) {
>  
>                 if (method=="CANCEL") {
>                         route(3);
>                         break;
>                 } else if (method=="INVITE") {
>                         route(3);
>                         break;
>                 } else  if (method=="REGISTER") {
>                         route(2);
>                         break;
>                 };
>  
>                 lookup("aliases");
>                 if (uri!=myself) {
>                         route(1);
>                         break;
>                 };
>  
>                 if (!lookup("location")) {
>                         sl_send_reply("404", "User Not Found");
>                         break;
>                 };
>         };
>  
>         route(1);
> }
>  
> route[1] {
>  
>         # -----------------------------------------------------------------
>         # Default Message Handler
>         # -----------------------------------------------------------------
>  
>         t_on_reply("1");
>  
>         if (!t_relay()) {
>  
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>  
>                 sl_reply_error();
>         };
> }
>  
> route[2] {
>  
>         # -----------------------------------------------------------------
>         # REGISTER Message Handler
>         # ----------------------------------------------------------------
>  
>         if (!search("^Contact:\ +\*") && client_nat_test("7")) {
>                 setflag(6);
>                 fix_nated_register();
>                 force_rport();
>         };
>  
>         sl_send_reply("100", "Trying");
>  
>         if (!www_authorize("","subscriber")) {
>                 www_challenge("","0");
>                 break;
>         };
>  
>         if (!check_to()) {
>                 sl_send_reply("401", "Unauthorized");
>                 break;
>         };
>  
>         consume_credentials();
>  
>         if (!save("location")) {
>                 sl_reply_error();
>         };
> }
>  
> route[3] {
>  
>         # -----------------------------------------------------------------
>         # CANCEL and INVITE Message Handler
>         # -----------------------------------------------------------------
>  
>         if (client_nat_test("3")) {
>                 setflag(7);
>                 force_rport();
>                 fix_nated_contact();
>         };
>  
>         lookup("aliases");
>         if (uri!=myself) {
>                 route(1);
>                 break;
>         };
>  
>         if (uri=~"^sip:0[0-9]*@*") {        # If calling number is 
> beginning with prefix 0, route it to PSTN
>              rewritehost("195.XXX.122.XXX");        # This is PSTN 
> Gateway's Public IP
>              route(1);
>              break;
>         };
>  
>         if (!lookup("location")) {
>                 sl_send_reply("404", "User Not Found");
>                 break;
>         };
>  
>         if (method=="CANCEL") {
>                 route(1);
>                 break;
>         };
>  
>         if (!proxy_authorize("","subscriber")) {
>                 proxy_challenge("","0");
>                 break;
>         } else if (!check_from()) {
>                 sl_send_reply("403", "Use From=ID");
>                 break;
>         };
>  
>         consume_credentials();
>  
>         if (isflagset(6) || isflagset(7)) {
>                 use_media_proxy();
>         };
>  
>         route(1);
> }
>  
> onreply_route[1] {
>  
>         if ((isflagset(6) || isflagset(7)) && 
> (status=~"(180)|(183)|2[0-9][0-9]")) {
>  
>                 if (!search("^Content-Length:\ +0")) {
>                         use_media_proxy();
>                 };
>         };
>  
>         if (client_nat_test("1")) {
>                 fix_nated_contact();
>         };
> }
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users





More information about the sr-users mailing list