{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11240\viewh15620\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\fs24 \cf0 #\
#$ld: opensips.cfg 7027 2010-07-15 13:48:29Z razvancrainea $\
#\
# OpenSIPS basic configuration script\
#     by Anca Vamanu <[email protected]>\
#\
# Please refer to the Core CookBook at:\
#      http://www.opensips.org/index.php?n=Resources.DocsCookbooks\
# for a explanation of possible statements, functions and parameters.\
#\
\
\
####### Global Parameters #########\
\
debug=3\
log_stderror=no\
log_facility=LOG_LOCAL0\
\
fork=yes\
children=4\
\
/* uncomment the following lines to enable debugging */\
#debug=6\
#log_stderror=yes\
\
/* uncomment the next line to disable TCP (default on) */\
#disable_tcp=yes\
\
/* uncomment the next line to enable the auto temporary blacklisting of\
   not available destinations (default disabled) */\
#disable_dns_blacklist=no\
\
/* uncomment the next line to enable IPv6 lookup after IPv4 dns\
   lookup failures (default disabled) */\
#dns_try_ipv6=yes\
\
/* uncomment the next line to disable the auto discovery of local aliases\
   based on revers DNS on IPs (default on) */\
auto_aliases=no\
\
/* uncomment the following lines to enable TLS support  (default off) */\
#disable_tls = no\
#listen = tls:your_IP:5061\
#tls_verify_server = 1\
#tls_verify_client = 1\
#tls_require_client_certificate = 0\
#tls_method = TLSv1\
#tls_certificate = "//etc/opensips/tls/user/user-cert.pem"\
#tls_private_key = "//etc/opensips/tls/user/user-privkey.pem"\
#tls_ca_list = "//etc/opensips/tls/user/user-calist.pem"\
\
\
port=5060\
\
/* uncomment and configure the following line if you want opensips to\
   bind on a specific interface/port/proto (default bind on all available) */\
listen=udp:a.a.a.a:5060\
listen=tcp:a.a.a.a:5060\
listen=tcp:b.b.b.b:5060\
listen=udp:b.b.b.b:5060\
\
\
\
\
####### Modules Section ########\
\
#set module path\
mpath="//lib/opensips/modules/"\
\
/* uncomment next line for MySQL DB support */\
loadmodule "db_mysql.so"\
loadmodule "signaling.so"\
loadmodule "nathelper.so"\
loadmodule "sl.so"\
loadmodule "tm.so"\
loadmodule "rr.so"\
loadmodule "maxfwd.so"\
loadmodule "usrloc.so"\
loadmodule "registrar.so"\
loadmodule "textops.so"\
loadmodule "mi_fifo.so"\
loadmodule "uri.so"\
loadmodule "acc.so"\
/* uncomment next lines for MySQL based authentication support\
   NOTE: a DB (like db_mysql) module must be also loaded */\
loadmodule "auth.so"\
loadmodule "auth_db.so"\
/* uncomment next line for aliases support\
   NOTE: a DB (like db_mysql) module must be also loaded */\
loadmodule "alias_db.so"\
/* uncomment next line for multi-domain support\
   NOTE: a DB (like db_mysql) module must be also loaded\
   NOTE: be sure and enable multi-domain support in all used modules\
         (see "multi-module params" section ) */\
loadmodule "domain.so"\
/* uncomment the next two lines for presence server support\
   NOTE: a DB (like db_mysql) module must be also loaded */\
loadmodule "presence.so"\
#loadmodule "presence_xml.so"\
loadmodule "permissions.so" \
loadmodule "group.so"\
loadmodule "drouting.so"\
loadmodule "avpops.so"\
loadmodule "dialplan.so"\
loadmodule "stun.so"\
loadmodule "siptrace.so"\
\
\
# ----------------- setting module-specific parameters ---------------\
\
\
# ----- mi_fifo params -----\
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")\
modparam("mi_fifo", "fifo_mode", 0666)\
\
# ----- rr params -----\
# add value to ;lr param to cope with most of the UAs\
modparam("rr", "enable_full_lr", 1)\
# do not append from tag to the RR (no need for this script)\
modparam("rr", "append_fromtag", 0)\
\
\
# ----- registrar params -----\
/* uncomment the next line not to allow more than 10 contacts per AOR */\
#modparam("registrar", "max_contacts", 10)\
modparam("registrar","received_avp", "$avp(i:42)")\
\
\
# ----- usrloc params -----\
#modparam("usrloc", "db_mode",   0)\
/* uncomment the following lines if you want to enable DB persistency\
   for location entries */\
modparam("usrloc", "db_mode",   2)\
modparam("usrloc", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
\
\
# ----- uri params -----\
modparam("uri", "use_uri_table", 0)\
\
\
# ----- acc params -----\
/* what sepcial events should be accounted ? */\
modparam("acc", "early_media", 1)\
modparam("acc", "report_ack", 1)\
modparam("acc", "report_cancels", 1)\
/* by default ww do not adjust the direct of the sequential requests.\
   if you enable this parameter, be sure the enable "append_fromtag"\
   in "rr" module */\
modparam("acc", "detect_direction", 0)\
/* account triggers (flags) */\
modparam("acc", "failed_transaction_flag", 3)\
modparam("acc", "log_flag", 1)\
modparam("acc", "log_missed_flag", 2)\
/* uncomment the following lines to enable DB accounting also */\
modparam("acc", "db_flag", 1)\
modparam("acc", "db_missed_flag", 2)\
\
\
# ----- auth_db params -----\
/* uncomment the following lines if you want to enable the DB based\
   authentication */\
modparam("auth_db", "calculate_ha1", yes)\
modparam("auth_db", "password_column", "password")\
modparam("auth_db", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
modparam("auth_db", "load_credentials", "")\
\
\
# ----- alias_db params -----\
/* uncomment the following lines if you want to enable the DB based\
   aliases */\
modparam("alias_db", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
\
\
# ----- domain params -----\
/* uncomment the following lines to enable multi-domain detection\
   support */\
modparam("domain", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
modparam("domain", "db_mode", 1)   # Use caching\
\
\
# ----- multi-module params -----\
/* uncomment the following line if you want to enable multi-domain support\
   in the modules (dafault off) */\
modparam("auth_db|usrloc|uri", "use_domain", 1)\
\
\
# ----- presence params -----\
/* uncomment the following lines if you want to enable presence */\
#modparam("presence|presence_xml", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
#modparam("presence_xml", "force_active", 1)\
#modparam("presence", "server_address", "sip:a.a.a.a:5060")\
\
\
# ----- Group ---- \
modparam("group","db_url","mysql://opensips:opensip...@localhost/opensips") \
\
\
# ----- permissions ---- \
#modparam("permissions", "db_mode", 1)\
modparam("permissions","db_url", "mysql://opensips:opensip...@localhost/opensips")\
\
\
# ----- drouting params ----- \
#modparam("drouting", "sort_order", 0)\
modparam("drouting", "use_domain", 1)\
modparam("drouting","db_url", "mysql://opensips:opensip...@localhost/opensips")\
\
\
#------ avpops params ----- #\
modparam("avpops", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
modparam("avpops", "avp_table", "usr_preferences")\
\
\
#------ load the dpid field to a pseudo-variable $avp(s:dpid) ------ #\
modparam("auth_db", "load_credentials", "$avp(s:rpid)=rpid ;$avp(s:countrycode)=contrycode;$avp(s:areacode)=areacode")\
modparam("dialplan", "db_url","mysql://opensips:opensip...@localhost/opensips") \
## attribute of the matched line will be store in the $avp(s:dest) \
modparam("dialplan", "attrs_pvar", "$avp(s:dest)")\
\
\
# ----- stun params ----- #\
modparam("stun","primary_ip","a.a.a.a")\
modparam("stun","primary_port","5060")\
modparam("stun","alternate_ip","b.b.b.b")\
modparam("stun","alternate_port","5060")\
\
\
# ----- siptrace params ----- #\
modparam("siptrace", "db_url", "mysql://opensips:opensip...@localhost/opensips")\
modparam("siptrace", "trace_flag", 22)\
modparam("siptrace", "traced_user_avp", "$avp(s:traceuser)")\
modparam("siptrace", "trace_local_ip", "a.a.a.a")\
modparam("siptrace", "trace_local_ip", "b.b.b.b")\
\
\
# ----- nathelper params ----- #\
modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7890")\
modparam("nathelper", "natping_interval", 15) \
modparam("nathelper", "ping_nated_only", 0) \
modparam("nathelper", "sipping_bflag", 7) \
modparam("nathelper", "sipping_from", "sip:[email protected]")\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 modparam("nathelper", "sipping_from", "sip:[email protected]") \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 modparam("nathelper","received_avp", "$avp(i:42)")\
\
\
\
####### Routing Logic ########\
\
\
# ---- main request routing logic ---- #\
\
route\{\
        if (!mf_process_maxfwd_header("10")) \{\
                sl_send_reply("483","Too Many Hops");\
                exit;\
        \}\
\
# ---- NAT Detection ---- # \
        force_rport(); \
        if (nat_uac_test("19")) \{ \
               if (method=="REGISTER") \{ \
                    fix_nated_register(); \
                \} \
                  else \{ \
                             fix_nated_contact(); \
                \} \
                            setflag(5); \
                \} \
\
\
# ---- Sequential requests section ---- #\
        if (has_totag()) \{\
                # sequential request withing a dialog should\
                # take the path determined by record-routing\
                if (loose_route()) \{\
                        if (is_method("BYE")) \{\
                                setflag(1);   # do accounting ...\
                                setflag(3);   # even if the transaction fails\
                        \} else if (is_method("INVITE")) \{\
                                # even if in most of the cases is useless, do RR for\
                                # re-INVITEs alos, as some buggy clients do change route set\
                                # during the dialog.\
                                record_route();\
                        \}\
                        # route it out to whatever destination was set by loose_route()\
                        # in $du (destination URI).\
                        route(1);\
                \} else \{\
                        /* uncomment the following lines if you want to enable presence */\
                        ##if (is_method("SUBSCRIBE") && $rd == "sip01.localhost)\
                        ##      # in-dialog subscribe requests\
                        ##      route(2);\
                        ##      exit;\
                        ##\}\
                        if ( is_method("ACK") ) \{\
                                if ( t_check_trans() ) \{\
                                        # non loose-route, but stateful ACK; must be an ACK after\
                                        # a 487 or e.g. 404 from upstream server\
                                        t_relay();\
                                        exit;\
                                \} else \{\
                                        # ACK without matching transaction ->\
                                        # ignore and discard\
                                        exit;\
                                \}\
                        \}\
                        sl_send_reply("404","Not here");\
                \}\
                exit;\
        \}\
\
\
# ---- initial requests section ---- #\
\
        # CANCEL processing\
        if (is_method("CANCEL"))\
        \{\
                if (t_check_trans())\
                        t_relay();\
                exit;\
        \}\
        t_check_trans();\
\
        # authenticate if from local subscriber (uncomment to enable auth)\
        # authenticate all initial non-REGISTER request that pretend to be\
        # generated by local subscriber (domain from FROM URI is local)\
        #if (!(method=="REGISTER") && from_uri==myself) /*no multidomain version*/\
        if (!(method=="REGISTER") && is_from_local())  /*multidomain version*/\
        \{\
                if (!proxy_authorize("", "subscriber")) \{\
                        proxy_challenge("", "1");\
                        exit;\
                \}\
                if (!db_check_from()) \{\
                        sl_send_reply("403","Forbidden auth ID");\
                        exit;\
                \}\
                consume_credentials();\
                # caller authenticated\
             \}\
\}\
\
\
# ----  preloaded route checking ---- #\
        if (loose_route()) \{\
                xlog("L_ERR", "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");\
                if (!is_method("ACK")) \{\
                        sl_send_reply("403","Preload Route denied");\
                        exit;\
                \}\
         \}\
\
\
# ----  record routing ---- #\
        if (!is_method("REGISTER|MESSAGE"))\
                record_route();\
\
        # account only INVITEs\
        if (is_method("INVITE")) \{\
                setflag(1); # do accounting\
        \}\
\
\
# ---- Routing to external domains ---- #\
        ##if (!uri==myself)\
        ## replace with following line if multi-domain support is used\
        if (!is_uri_host_local())\
        \{\
                append_hf("P-hint: outbound\\r\\n");\
                # if you have some interdomain connections via TLS\
                ##if($rd=="tls_domain1.net") \{\
                ##      t_relay("tls:domain1.net");\
                ##      exit;\
                ##\} else if($rd=="tls_domain2.net") \{\
                ##      t_relay("tls:domain2.net");\
                ##      exit;\
                ##\}\
                if(is_uri_host_local()) \{\
                        route(1);\
                \} else \{\
                        sl_send_reply("403","Not here");\
                \}\
         \}\
\
        # requests for my domain\
\
        ## uncomment this if you want to enable presence server\
        ##   and comment the next 'if' block\
        ##   NOTE: uncomment also the definition of route[2] from  below\
        ##if( is_method("PUBLISH|SUBSCRIBE")) \{\
        ##              route(2);\
\
        if (is_method("PUBLISH"))\
        \{\
                sl_send_reply("503", "Service Unavailable");\
                exit;\
        \}\
\
        if (is_method("REGISTER"))\
        \{\
                # authenticate the REGISTER requests (uncomment to enable auth)\
                if (!www_authorize("", "subscriber"))\
                \{\
                        www_challenge("", "1");\
                        exit;\
                \}\
                if (!db_check_to())\
                \{\
                        sl_send_reply("403","Forbidden auth ID");\
                        exit;\
                \}\
\
# -- Request is behind NAT(flag5) save with bflag 6 -- # \
  # -- Use bflag 7 to start SIP pinging (Options) -- # \
  if (isflagset(5)) \{ \
    setbflag(6); \
    setbflag(7); \
  \};\
                if (!save("location")) \{\
                        sl_reply_error();\
                exit;\
        \}\
\
        if ($rU==NULL) \{\
                # request with no Username in RURI\
                sl_send_reply("484","Address Incomplete");\
                exit;\
        \}\
\
        # apply DB based aliases (uncomment to enable)\
        alias_db_lookup("dbaliases");\
\
        if(avp_db_load("$fu","$avp(s:trace)")) \{\
            $avp(s:traceuser)=$fu;\
            setflag(22);\
            sip_trace();\
            xlog("L_INFo","User $fu being traced");\
        \}\
\
\
\
\
route[1] \{\
        # for INVITEs enable some additional helper routes\
# ---- Helper route, if nat=yes in the R-URI  set flag 6 ---- # \
  # ----        This is used to Process REINVITES          ---- # \
        if (subst_uri('/(sip:.*);nat=yes/\\1/'))\{ \
                setbflag(6); \
        \}; \
    #-- If caller(flag 5) or callee(flag 6) are behind NAT  --# \
  #-- Call the route(6) to force the use of the RTP Proxy --# \
        if (isflagset(5)||isbflagset(6)) \{ \
                 route(6); \
        \}; \
        if (isflagset(5))\{ \
                 search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); \
        \} \
        if (is_method("INVITE")) \{\
                t_on_branch("2");\
                t_on_reply("2");\
                t_on_failure("1");\
        \}\
        if (!t_relay()) \{\
                sl_reply_error();\
        \};\
        exit;\
\}\
\
\
# ---- Presence route ----- #\
/* uncomment the whole following route for enabling presence\
   NOTE: do not forget to enable the call of this route from the main\
     route */\
#route[2]\
#\{\
#       if (!t_newtran())\
#        \{\
#               sl_reply_error();\
#               exit;\
#       \};\
#\
#       if(is_method("PUBLISH"))\
#       \{\
#               handle_publish();\
#       \}\
#       else\
#       if( is_method("SUBSCRIBE"))\
#       \{\
#               handle_subscribe();\
#       \}\
#\
#       exit;\
#\}\
\
\
# ----- Route for user lookups ----- #\
route[3] \{\
        # do lookup with method filtering\
        if (!lookup("location","m")) \{\
                switch ($retcode) \{\
                        case -1:\
                        case -3:\
                                t_newtran();\
                                t_reply("404", "Not Found");\
                                exit;\
                        case -2:\
                                sl_send_reply("405", "Method Not Allowed");\
                                exit;\
                \}\
        \}\
        # when routing via usrloc, log the missed calls also\
        setflag(2);\
        route(1);\
\}\
\
\
route[4] \{\
# ---- PSTN route ---- # \
         if(!do_routing())\{ \
              send_reply("503", "No rules found matching the URI prefix"); \
              exit; \
         \} \
    # --- mark the transaction with flag 10 - route to pstn --- # \
         setflag(10); \
         route(1); \
\} \
\
\
route[5] \{ \
# ---- Route to media servers ---- # \
          #xlog("route to media servers"); \
          rewritehostport("c.c.c.c:5062"); \
          route(1); \
\} \
\
\
route[6] \{ \
#---- RTP Proxy handling ---# \
           if (is_method("BYE|CANCEL")) \{ \
               unforce_rtp_proxy(); \
           \} \
           else if (is_method("INVITE")) \{ \
               #---- Activates the RTP Proxy for the CALLEE ---# \
               force_rtp_proxy(); \
               t_on_failure("1"); \
           \}; \
\} \
\
\
branch_route[2] \{\
        xlog("new branch at $ru\\n");\
\}\
\
\
onreply_route[2] \{\
        #xlog("incoming reply\\n");\
# ---- Handling of the SDP for the 200 or 183 reply ---- # \
# ---- If behind nat (flags 5 or 6) start RTP Proxy ---- # \
# ----    Activates the RTP Proxy for the CALLER    ---- # \
           if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])") \{ \
              force_rtp_proxy(); \
              append_hf("P-hint: onreply_route|force_rtp_proxy \\r\\n"); \
            \} \
# ---- If the CALLEE is behind NAT, fix the CONTACT HF ---- # \
            if (isbflagset(6)) \{ \
# --   Insert nat=yes at the end of the Contact header   -- # \
# --                This helps with REINVITEs,           -- # \
# - nat=yes will be included in the R-URI for seq.requests- # \
             search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); \
             append_hf("P-hint: Onreply-route - fixcontact \\r\\n"); \
             fix_nated_contact(); \
             \} \
             exit; \
\}\
\
\
failure_route[1] \{\
# ---- If a failure has ocurred, deactivate the RTP proxy ---- # \
        if (isflagset(5) || isbflagset(6))\{ \
           unforce_rtp_proxy(); \
        \} \
        if (t_was_cancelled()) \{\
                exit;\
        \}\
# - if the failure comes from a PSTN route, handle properly - # \
        if(isflagset(10))\{ \
           if (use_next_gw()) \{ \
               xlog ("next gateway $ru \\n"); \
               route(1); \
               exit; \
           \} \
           else \{ \
                t_reply("503", "Service not available, no more gws"); \
                exit; \
           \} \
  \} \
\
# - Redirect busy calls to a media server - #\
            if (t_check_status("486")) \{ \
                revert_uri(); \
                sethostport("c.c.c.c:5062"); \
                prefix("b"); \
                t_relay(); \
            \} \
# - Redirect unanswered calls to the media server - # \
            if (t_check_status("480|408")) \{ \
                revert_uri; \
                sethostport("c.c.c.c:5062"); \
                prefix("u"); \
                t_relay(); \
             \}\
\}}

Just realize I forgot to attach my config.

Thanks again for the help.

Regards


On 28 Sep 2010, at 11:00 PM, Deon Vermeulen wrote:

Hi List

When I test my config script I get the below error:

Sep 29 00:50:32 [7656] CRITICAL:core:yyerror: parse error in config file, line 347, column 9-11: syntax error
Sep 29 00:50:32 [7656] CRITICAL:core:yyerror: parse error in config file, line 347, column 9-11: 
Sep 29 00:50:32 [7656] ERROR:core:main: bad config file (2 errors)

This is the line of the loose route.

                    # ----  preloaded route checking ---- #
347  -->                if (loose_route()) {
                                   xlog("L_ERR", "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
                                   if (!is_method("ACK")) {
                                          sl_send_reply("403","Preload Route denied");
                                          exit;
                                   }
                      }


Attached is my complete config file.

I've been using the Building Telephony systems with OpenSIPS 1.6 book to learn how OpenSIPS work.
I really have no idea why I am getting this error and would really appreciate help.

Thank you very much.

Regards
Deon


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to