[Users] To: header in e.164 format - adding a plus

Michael Chan michaelchan at telus.net
Wed Mar 21 19:36:09 CET 2007


Ricardo,
Can you help us in setting OpenSer as a central proxy for multiple Asterisk PSTN GWs,
we current have trouble in routing UAs call through OpenSer without being registered with Asterisk..
We like to just have OpenSer registered with all the Asterisk and OpenSer will be the AAA proxy for SIP users, once authenticated through MYSQL db look up, OpenSer will pass the call to Asterisk Box.
Asterisk Boxes will then make connection to PSTN or VM service.
Please see the script below and comment.
Thank you in advance,
Michael
--------------------------------------------------------------------------------------------------
#
# $Id: openser.cfg,v 1.6 2006/02/15 18:23:46 bogdan_iancu Exp $
#
# simple quick-start config script
#

# ----------- global configuration parameters ------------------------

debug=3            # debug level (cmd line: -dddddddddd)
fork=yes           # Set to no to enter debugging mode
log_stderror=no    # (cmd line: -E) Set to yes to enter debugging mode

check_via=no # (cmd. line: -v)
dns=no          # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/openser_fifo"

#
# uncomment the following lines for TLS support
#disable_tls = 0
#listen = tls:your_IP:5061
#tls_verify = 1
#tls_require_certificate = 0
#tls_method = TLSv1
#tls_certificate = "/build/buildd/openser-1.1.0/debian/openser/etc/openser/tls/user/user-cert.pem"
#tls_private_key = "/build/buildd/openser-1.1.0/debian/openser/etc/openser/tls/user/user-privkey.pem"
#tls_ca_list = "/build/buildd/openser-1.1.0/debian/openser/etc/openser/tls/user/user-calist.pem"

# ------------------ module loading ----------------------------------

# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/openser/modules/mysql.so"
loadmodule "/usr/lib/openser/modules/domain.so"
loadmodule "/usr/lib/openser/modules/sl.so"
loadmodule "/usr/lib/openser/modules/tm.so"
loadmodule "/usr/lib/openser/modules/rr.so"
loadmodule "/usr/lib/openser/modules/maxfwd.so"
loadmodule "/usr/lib/openser/modules/usrloc.so"
loadmodule "/usr/lib/openser/modules/mediaproxy.so"
loadmodule "/usr/lib/openser/modules/registrar.so"
loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/uri.so"
loadmodule "/usr/lib/openser/modules/uri_db.so"
loadmodule "/usr/lib/openser/modules/avpops.so"
loadmodule "/usr/lib/openser/modules/permissions.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/openser/modules/auth.so"
loadmodule "/usr/lib/openser/modules/auth_db.so"

# ----------------- setting module-specific parameters ---------------

# -- usrloc params --

#modparam("usrloc", "db_mode",   0)
modparam("auth_db|permissions|uri_db|usrloc",
     "db_url",  "mysql://openser:openserrw@localhost/openser")

# Uncomment this if you want to use SQL database 
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)

# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config), 
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")

# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)

modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
# -------------------------  request routing logic -------------------

# main routing logic

route{

 # initial sanity checks -- messages with
 # max_forwards==0, or excessively long requests
 if (!mf_process_maxfwd_header("10")) {
  sl_send_reply("483","Too Many Hops");
  exit;
 };

 if (msg:len >=  2048 ) {
  sl_send_reply("513", "Message too big");
  exit;
 };

 # we record-route all messages -- to make sure that
 # subsequent messages will go through our proxy; that's
 # particularly good if upstream and downstream entities
 # use different transport protocol
 if (!method=="REGISTER")
  record_route();

 # -----------------------------------------------------------------
        # Call Tear Down Section
 # -----------------------------------------------------------------
 if (method=="BYE" || method=="CANCEL") {
       end_media_session();
 };

 # 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"); 

  if (method=="INVITE") {
  
   if (!allow_trusted()) {
  
   if (!proxy_authorize("","subscriber")) {
              proxy_challenge("","0");
              exit;
           } else if (!check_from()) {
                sl_send_reply("403", "Use From=ID");
                exit;
           };
     consume_credentials();
   };

           if (client_nat_test("3")||search("^Route:.*;nat=yes")){
            setflag(6);
          use_media_proxy();
  };
              };
  route(1);
 };

 if (!uri==myself) {
  # mark routing logic in request
  append_hf("P-hint: outbound\r\n"); 
  # if you have some interdomain connections via TLS
  #if(uri=~"@tls_domain1.net") {
  # t_relay("tls:domain1.net");
  # exit;
  #} else if(uri=~"@tls_domain2.net") {
  # t_relay("tls:domain2.net");
  # exit;
  #}
  route(1);
 };

 # if the request is for other domain use UsrLoc
 # (in case, it does not work, use the following command
 # with proper names and addresses in it)
  if (uri!=myself) {
           route(3);
           return;
  };

 if (uri==myself) {

  if (method=="REGISTER") {

   # Uncomment this if you want to use digest authentication
   if (!www_authorize("192.168.0.104", "subscriber")) {
    www_challenge("192.168.0.104", "0");
    exit;
   };

   save("location");
   exit;
  };

  lookup("aliases");
  if (!uri==myself) {
   append_hf("P-hint: outbound alias\r\n"); 
   route(1);
  };

  # native SIP destinations are handled using our USRLOC DB
  if (lookup("location")) {
   append_hf("P-hint: usrloc applied\r\n"); 
  }
  else if (uri=~"sip:[0-9]{10}@.*") {
   route(3);
  }
  else { 
   sl_send_reply("404", "Not Found");
   exit;
  }
 };

 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;
}

route[3] {
 rewriteuser("citywide");
 rewriteuserpass("wide2city");
 rewritehostport("voip.victoria.tc.ca:5060");
 forward("voip.victoria.tc.ca");

        append_hf("P-hint: LOCAL CALL FORWARDED TO IPBX\r\n");
 if (!t_relay()) {
      sl_reply_error();
      return;
  };
  exit;
}
------------------------------------------------------------------------------------------------------------------------------------------
----- Original Message ----- 
From: "Ricardo Carvalho" <rjcarvalho at reit.up.pt>
To: "Daryl Sanders" <daryl.sanders at gmail.com>
Cc: <users at openser.org>
Sent: Wednesday, March 21, 2007 11:13 AM
Subject: Re: [Users] To: header in e.164 format - adding a plus


> You may use the following syntax:
> 
> subst('/^To:(.*)@(.*)/To:+\1@\2/');
> 
> Hope it helps,
> Regards,
> Ricardo.
> 
> 
> 
> 
> 
> Daryl Sanders wrote:
>> One of my providers requires the To: header to be in e.164 format with
>> a "+" in front of it. Since there is no uac_replace_to() function yet,
>> what are my options for adding this plus symbol?
>>
>> Before anyone suggests it... I cannot just use another provider. I
>> must find a solution to add the plus symbol.
>>
>> Thanks,
>> Daryl
>>
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>>
>>
> 
> 
> 
> 
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
> 
> 
> -- 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.446 / Virus Database: 268.18.16/729 - Release Date: 3/21/2007 7:52 AM
> 
>

--------------------------------------------------------------------------------
I am using the free version of SPAMfighter for private users.
It has removed 324 spam emails to date.
Paying users do not have this message in their emails.
Try SPAMfighter for free now!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kamailio.org/pipermail/users/attachments/20070321/bb9d1683/attachment.htm 


More information about the Users mailing list