{\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:
|
_______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
