I have just setup opensips and have a phone with a couple of lines which
are registered with opensips.
I have a problem when trying to place a call between the two lines.
Opensips receives the sip packet and responds with proxy authentication
requires and the phone replies with the additional information in the
packet but then opensips seems to drop it and doesnt forward or give any
error response.
Looking through the debug information I can see "DBG:auth:pre_auth:
credentials with given realm not found" which leads me to think there is
a problem related to the realm configuration. I havent done any specific
configuration in terms of dimains/realms other than add the machines
full name (which is in the dns) as an alias which I needed to do in
order for the phone to register.
I have attached the debug and packet trace and also the configuration
file. Can someone take a look to see if my theory may be correct as I am
new to opensips and I have no reference to what the opensips debug
should say in this situation.
Thanks
Gareth
U 212.84.178.71:5060 -> 212.84.166.33:5060
INVITE sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbcddc58407bb1c983.
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001" <sip:[email protected]:5060>.
Call-ID: b56ee98b631cecfa.
CSeq: 7274 INVITE.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK,
SUBSCRIBE, INFO.
Allow-Events: talk, hold, conference, LocalModeStatus.
Contact: "1000"
<sip:[email protected]:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D23801E>".
Supported: gruu, path, timer, 100rel, replaces.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Type: application/sdp.
Content-Length: 595.
.
v=0.
o=MxSIP 0 0 IN IP4 192.168.2.11.
s=SIP Call.
c=IN IP4 212.84.178.71.
t=0 0.
m=audio 3000 RTP/AVP 0 18 106 107 113 110 111 112 98 97 115 96 9 8 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:106 BV16/8000.
a=rtpmap:107 BV32/16000.
a=rtpmap:113 L16/16000.
a=rtpmap:110 PCMU/16000.
a=rtpmap:111 PCMA/16000.
a=rtpmap:112 L16/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:115 G726-32/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
a=silenceSupp:on - - - -.
a=fmtp:101 0-15.
a=ptime:30.
a=sendrecv.
Jan 14 12:12:56 [22092] DBG:core:parse_msg: SIP Request:
Jan 14 12:12:56 [22092] DBG:core:parse_msg: method: <INVITE>
Jan 14 12:12:56 [22092] DBG:core:parse_msg: uri:
<sip:[email protected]:5060>
Jan 14 12:12:56 [22092] DBG:core:parse_msg: version: <SIP/2.0>
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=2
Jan 14 12:12:56 [22092] DBG:core:parse_via_param: found param type 232,
<branch> = <z9hG4bKbcddc58407bb1c983>; state=16
Jan 14 12:12:56 [22092] DBG:core:parse_via: end of header reached, state=5
Jan 14 12:12:56 [22092] DBG:core:parse_headers: via found, flags=2
Jan 14 12:12:56 [22092] DBG:core:parse_headers: this is the first via
Jan 14 12:12:56 [22092] DBG:core:receive_msg: After parse_msg...
Jan 14 12:12:56 [22092] DBG:core:receive_msg: preparing to run routing
scripts...
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=100
Jan 14 12:12:56 [22092] DBG:maxfwd:is_maxfwd_present: value = 70
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=8
Jan 14 12:12:56 [22092] DBG:core:parse_to: end of header reached, state=10
Jan 14 12:12:56 [22092] DBG:core:parse_to: display={"1001"},
ruri={sip:[email protected]:5060}
Jan 14 12:12:56 [22092] DBG:core:get_hdr_field: <To> [49];
uri=[sip:[email protected]:5060]
Jan 14 12:12:56 [22092] DBG:core:get_hdr_field: to body ["1001"
<sip:[email protected]:5060>]
Jan 14 12:12:56 [22092] DBG:uri:has_totag: no totag
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=78
Jan 14 12:12:56 [22092] DBG:core:get_hdr_field: cseq <CSeq>: <7274> <INVITE>
Jan 14 12:12:56 [22092] DBG:tm:t_lookup_request: start searching: hash=16338,
isACK=0
Jan 14 12:12:56 [22092] DBG:tm:matching_3261: RFC3261 transaction matching
failed
Jan 14 12:12:56 [22092] DBG:tm:t_lookup_request: no transaction found
Jan 14 12:12:56 [22092] DBG:core:parse_to_param: tag=86c85c255c
Jan 14 12:12:56 [22092] DBG:core:parse_to: end of header reached, state=29
Jan 14 12:12:56 [22092] DBG:core:parse_to: display={"1000"},
ruri={sip:[email protected]:5060}
Jan 14 12:12:56 [22092] DBG:core:grep_sock_info: checking if host==us: 24==13
&& [vmopensips1.skycomuk.com] == [212.84.166.33]
Jan 14 12:12:56 [22092] DBG:core:grep_sock_info: checking if port 5060 matches
port 5060
Jan 14 12:12:56 [22092] DBG:core:grep_sock_info: checking if host==us: 24==13
&& [vmopensips1.skycomuk.com] == [212.84.166.33]
Jan 14 12:12:56 [22092] DBG:core:grep_sock_info: checking if port 5060 matches
port 5060
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=10000
Jan 14 12:12:56 [22092] DBG:core:get_hdr_field: content_length=595
Jan 14 12:12:56 [22092] DBG:core:get_hdr_field: found end of header
Jan 14 12:12:56 [22092] DBG:auth:pre_auth: credentials with given realm not
found
Jan 14 12:12:56 [22092] DBG:auth:reserve_nonce_index: second= 2, sec_monit= 89,
index= 92
Jan 14 12:12:56 [22092] DBG:auth:build_auth_hf: nonce index= 92
Jan 14 12:12:56 [22092] DBG:auth:build_auth_hf: 'Proxy-Authenticate: Digest
realm="vmopensips1.skycomuk.com",
nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838"'
Jan 14 12:12:56 [22092] DBG:core:parse_headers: flags=ffffffffffffffff
Jan 14 12:12:56 [22092] DBG:core:check_ip_address: params 212.84.178.71,
212.84.178.71, 0
Jan 14 12:12:56 [22092] DBG:core:destroy_avp_list: destroying list (nil)
Jan 14 12:12:56 [22092] DBG:core:receive_msg: cleaning up
U 212.84.166.33:5060 -> 212.84.178.71:5060
SIP/2.0 407 Proxy Authentication Required.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbcddc58407bb1c983.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001"
<sip:[email protected]:5060>;tag=b3addd350d7d55a695048985db4db659.9204.
Call-ID: b56ee98b631cecfa.
CSeq: 7274 INVITE.
Proxy-Authenticate: Digest realm="vmopensips1.skycomuk.com",
nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838".
Server: OpenSIPS (1.6.3-notls (x86_64/linux)).
Content-Length: 0.
.
U 212.84.178.71:5060 -> 212.84.166.33:5060
ACK sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbcddc58407bb1c983.
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001"
<sip:[email protected]:5060>;tag=b3addd350d7d55a695048985db4db659.9204.
Call-ID: b56ee98b631cecfa.
CSeq: 7274 ACK.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Length: 0.
.
Jan 14 12:12:57 [22092] DBG:core:parse_msg: SIP Request:
Jan 14 12:12:57 [22092] DBG:core:parse_msg: method: <ACK>
Jan 14 12:12:57 [22092] DBG:core:parse_msg: uri:
<sip:[email protected]:5060>
Jan 14 12:12:57 [22092] DBG:core:parse_msg: version: <SIP/2.0>
Jan 14 12:12:57 [22092] DBG:core:parse_headers: flags=2
Jan 14 12:12:57 [22092] DBG:core:parse_via_param: found param type 232,
<branch> = <z9hG4bKbcddc58407bb1c983>; state=16
Jan 14 12:12:57 [22092] DBG:core:parse_via: end of header reached, state=5
Jan 14 12:12:57 [22092] DBG:core:parse_headers: via found, flags=2
Jan 14 12:12:57 [22092] DBG:core:parse_headers: this is the first via
Jan 14 12:12:57 [22092] DBG:core:receive_msg: After parse_msg...
Jan 14 12:12:57 [22092] DBG:core:receive_msg: preparing to run routing
scripts...
Jan 14 12:12:57 [22092] DBG:core:parse_headers: flags=8
Jan 14 12:12:57 [22092] DBG:core:parse_to_param:
tag=b3addd350d7d55a695048985db4db659.9204
Jan 14 12:12:57 [22092] DBG:core:parse_to: end of header reached, state=29
Jan 14 12:12:57 [22092] DBG:core:parse_to: display={"1001"},
ruri={sip:[email protected]:5060}
Jan 14 12:12:57 [22092] DBG:core:get_hdr_field: <To> [91];
uri=[sip:[email protected]:5060]
Jan 14 12:12:57 [22092] DBG:core:get_hdr_field: to body ["1001"
<sip:[email protected]:5060>]
Jan 14 12:12:57 [22092] DBG:sl:sl_filter_ACK: local ACK found -> dropping it!
Jan 14 12:12:57 [22092] DBG:core:destroy_avp_list: destroying list (nil)
Jan 14 12:12:57 [22092] DBG:core:receive_msg: cleaning up
U 212.84.178.71:5060 -> 212.84.166.33:5060
INVITE sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbe891b4a7f1f71c4f.
Proxy-Authorization: Digest
username="1000",realm="vmopensips1.skycomuk.com",nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838",uri="sip:[email protected]:5060",response="73b08563ae7143a9ce3e11579fc9b255".
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001" <sip:[email protected]:5060>.
Call-ID: b56ee98b631cecfa.
CSeq: 7275 INVITE.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK,
SUBSCRIBE, INFO.
Allow-Events: talk, hold, conference, LocalModeStatus.
Contact: "1000"
<sip:[email protected]:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D23801E>".
Supported: gruu, path, timer, 100rel, replaces.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Type: application/sdp.
Content-Length: 528.
.
v=0.
o=MxSIP 0 0 IN IP4 192.168.2.11.
s=SIP Call.
c=IN IP4 212.84.178.71.
t=0 0.
m=audio 3000 RTP/AVP 0 18 106 107 113 110 111 112 98 97 115 96 9 8 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:106 BV16/8000.
a=rtpmap:107 BV32/16000.
a=rtpmap:113 L16/16000.
a=rtpmap:110 PCMU/16000.
a=rtpmap:111 PCMA/16000.
a=rtpmap:112 L16/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:115 G726-32/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
U 212.84.178.71:5060 -> 212.84.166.33:5060
INVITE sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbe891b4a7f1f71c4f.
Proxy-Authorization: Digest
username="1000",realm="vmopensips1.skycomuk.com",nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838",uri="sip:[email protected]:5060",response="73b08563ae7143a9ce3e11579fc9b255".
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001" <sip:[email protected]:5060>.
Call-ID: b56ee98b631cecfa.
CSeq: 7275 INVITE.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK,
SUBSCRIBE, INFO.
Allow-Events: talk, hold, conference, LocalModeStatus.
Contact: "1000"
<sip:[email protected]:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D23801E>".
Supported: gruu, path, timer, 100rel, replaces.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Type: application/sdp.
Content-Length: 528.
.
v=0.
o=MxSIP 0 0 IN IP4 192.168.2.11.
s=SIP Call.
c=IN IP4 212.84.178.71.
t=0 0.
m=audio 3000 RTP/AVP 0 18 106 107 113 110 111 112 98 97 115 96 9 8 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:106 BV16/8000.
a=rtpmap:107 BV32/16000.
a=rtpmap:113 L16/16000.
a=rtpmap:110 PCMU/16000.
a=rtpmap:111 PCMA/16000.
a=rtpmap:112 L16/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:115 G726-32/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
U 212.84.178.71:5060 -> 212.84.166.33:5060
INVITE sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbe891b4a7f1f71c4f.
Proxy-Authorization: Digest
username="1000",realm="vmopensips1.skycomuk.com",nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838",uri="sip:[email protected]:5060",response="73b08563ae7143a9ce3e11579fc9b255".
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001" <sip:[email protected]:5060>.
Call-ID: b56ee98b631cecfa.
CSeq: 7275 INVITE.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK,
SUBSCRIBE, INFO.
Allow-Events: talk, hold, conference, LocalModeStatus.
Contact: "1000"
<sip:[email protected]:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D23801E>".
Supported: gruu, path, timer, 100rel, replaces.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Type: application/sdp.
Content-Length: 528.
.
v=0.
o=MxSIP 0 0 IN IP4 192.168.2.11.
s=SIP Call.
c=IN IP4 212.84.178.71.
t=0 0.
m=audio 3000 RTP/AVP 0 18 106 107 113 110 111 112 98 97 115 96 9 8 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:106 BV16/8000.
a=rtpmap:107 BV32/16000.
a=rtpmap:113 L16/16000.
a=rtpmap:110 PCMU/16000.
a=rtpmap:111 PCMA/16000.
a=rtpmap:112 L16/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:115 G726-32/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
U 212.84.178.71:5060 -> 212.84.166.33:5060
INVITE sip:[email protected]:5060 SIP/2.0.
Via: SIP/2.0/UDP 212.84.178.71:5060;branch=z9hG4bKbe891b4a7f1f71c4f.
Proxy-Authorization: Digest
username="1000",realm="vmopensips1.skycomuk.com",nonce="4d303de60000005c6f3c914359e2a555cd0ccddf2fcb3838",uri="sip:[email protected]:5060",response="73b08563ae7143a9ce3e11579fc9b255".
Max-Forwards: 70.
From: "1000" <sip:[email protected]:5060>;tag=86c85c255c.
To: "1001" <sip:[email protected]:5060>.
Call-ID: b56ee98b631cecfa.
CSeq: 7275 INVITE.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, OPTIONS, UPDATE, PRACK,
SUBSCRIBE, INFO.
Allow-Events: talk, hold, conference, LocalModeStatus.
Contact: "1000"
<sip:[email protected]:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-1000-8000-00085D23801E>".
Supported: gruu, path, timer, 100rel, replaces.
User-Agent: Aastra 55i/2.5.2.1010.
Content-Type: application/sdp.
Content-Length: 528.
.
v=0.
o=MxSIP 0 0 IN IP4 192.168.2.11.
s=SIP Call.
c=IN IP4 212.84.178.71.
t=0 0.
m=audio 3000 RTP/AVP 0 18 106 107 113 110 111 112 98 97 115 96 9 8 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:106 BV16/8000.
a=rtpmap:107 BV32/16000.
a=rtpmap:113 L16/16000.
a=rtpmap:110 PCMU/16000.
a=rtpmap:111 PCMA/16000.
a=rtpmap:112 L16/8000.
a=rtpmap:98 G726-16/8000.
a=rtpmap:97 G726-24/8000.
a=rtpmap:115 G726-32/8000.
a=rtpmap:96 G726-40/8000.
a=rtpmap:9 G722/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:101 telephone-event/8000.
#
# $Id: 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=6
log_stderror=no
log_facility=LOG_LOCAL0
fork=yes
children=4
/* uncomment the following lines to enable debugging */
#debug=6
#fork=no
#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
alias=vmopensips1.skycomuk.com
alias=sip.skycomuk.com
/* 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:192.168.1.2:5060
####### Modules Section ########
#set module path
mpath="//lib64/opensips/modules/"
/* uncomment next line for MySQL DB support */
loadmodule "db_mysql.so"
loadmodule "signaling.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"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
# ----- 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)
# ----- 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:[email protected]/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:[email protected]/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:opensipsrw@localhost/opensips")
# ----- domain params -----
/* uncomment the following lines to enable multi-domain detection
support */
#modparam("domain", "db_url",
# "mysql://opensips:opensipsrw@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:[email protected]/opensips")
#modparam("presence_xml", "force_active", 1)
#modparam("presence", "server_address", "sip:192.168.1.2:5060")
####### Routing Logic ########
# main request routing logic
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
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 ==
"your.server.ip.address") {
## # 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
# 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("", "0");
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
}
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;
##}
route(1);
}
# 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("", "0");
exit;
}
if (!db_check_to())
{
sl_send_reply("403","Forbidden auth ID");
exit;
}
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");
# 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[1] {
# for INVITEs enable some additional helper routes
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;
##}
branch_route[2] {
xlog("new branch at $ru\n");
}
onreply_route[2] {
xlog("incoming reply\n");
}
failure_route[1] {
if (t_was_cancelled()) {
exit;
}
# uncomment the following lines if you want to block client
# redirect based on 3xx replies.
##if (t_check_status("3[0-9][0-9]")) {
##t_reply("404","Not found");
## exit;
##}
# uncomment the following lines if you want to redirect the failed
# calls to a different new destination
##if (t_check_status("486|408")) {
## sethostport("192.168.2.100:5060");
## # do not set the missed call flag again
## t_relay();
##}
}
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users