Greetings list,
I'm in the process of configuring Asterisk <-> OpenSER <-> Microsoft Exchange 2007 Unified Messaging.
I have a windows based proxy that works great, and want to accomplish the same feat using OpenSER. Below are network captures from the working proxy and OpenSER. From comparing the working call and the OpenSER call it looks like OpenSER needs to modify the CONTACT header in its last "OK" response. I'm not sure that's right, but more importantly I'm not sure how to do this in the config. Any help or direction is greatly appreciated.
Thanks, -jon
p.s. Please cc me on any replies, I'm not currently subscribed to the list.
openSER unsuccessfull call negotiation =========== # U +9.215930 asterisk:5060 -> openser:5060 INVITE sip:8885555@openser SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport. From: "Jon Webster" sip:3149@asterisk;tag=as43593b57. To: sip:8885555@openser. Contact: sip:3149@asterisk. Call-ID: 46109877480231241e3b8e9d57036e69@asterisk. CSeq: 102 INVITE. User-Agent: Asterisk PBX. Max-Forwards: 70. Date: Sat, 03 Feb 2007 18:01:48 GMT. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY. Content-Type: application/sdp. Content-Length: 216. . v=0. o=root 381 381 IN IP4 asterisk. s=session. c=IN IP4 asterisk. t=0 0. m=audio 13614 RTP/AVP 0 101. a=rtpmap:0 PCMU/8000. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=silenceSupp:off - - - -.
# U +0.000305 openser:5060 -> asterisk:5060 SIP/2.0 100 trying -- your call is important to us. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. From: "Jon Webster" sip:3149@asterisk;tag=as43593b57. To: sip:8885555@openser. Call-ID: 46109877480231241e3b8e9d57036e69@asterisk. CSeq: 102 INVITE. Server: OpenSer (1.1.1-tls (i386/linux)). Content-Length: 0. Warning: 392 openser:5060 "Noisy feedback tells: pid=6890 req_src_ip=asterisk req_src_port=5060 in_uri=sip:8885555@openser out_uri=sip:5555@openser via_cnt==1". .
# U +0.025313 openser:5060 -> asterisk:5060 SIP/2.0 180 Ringing. FROM: "Jon Webster"sip:3149@asterisk;tag=as43593b57. TO: sip:8885555@openser;epid=BD-70-82-06-F9;tag=e38b6cdb9b. CSEQ: 102 INVITE. CALL-ID: 46109877480231241e3b8e9d57036e69@asterisk. MAX-FORWARDS: 70. VIA: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# U +0.016314 openser:5060 -> asterisk:5060 SIP/2.0 200 OK. FROM: "Jon Webster"sip:3149@asterisk;tag=as43593b57. TO: sip:8885555@openser;epid=BD-70-82-06-F9;tag=e38b6cdb9b. CSEQ: 102 INVITE. CALL-ID: 46109877480231241e3b8e9d57036e69@asterisk. MAX-FORWARDS: 70. VIA: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. CONTACT: sip:exchangeUM:5065;transport=Tcp;maddr=exchangeUM. CONTENT-LENGTH: 197. CONTENT-TYPE: application/sdp. SERVER: RTCC/2.0.6017.0. . v=0. o=- 0 0 IN IP4 exchangeUM. s=Microsoft Exchange Speech Engine. c=IN IP4 exchangeUM. t=0 0. m=audio 59544 RTP/AVP 0 101. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=ptime:20.
working proxy =================== # U +8.036801 asterisk:5060 -> goodproxy:5060 INVITE sip:5555@goodproxy SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK42383fff;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy. Contact: sip:3149@asterisk. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 INVITE. User-Agent: Asterisk PBX. Max-Forwards: 70. Date: Sat, 03 Feb 2007 18:02:40 GMT. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY. Content-Type: application/sdp. Content-Length: 216. . v=0. o=root 381 381 IN IP4 asterisk. s=session. c=IN IP4 asterisk. t=0 0. m=audio 17160 RTP/AVP 0 101. a=rtpmap:0 PCMU/8000. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=silenceSupp:off - - - -.
# U +0.003872 goodproxy:5060 -> asterisk:5060 SIP/2.0 100 Trying. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK42383fff;rport;received=goodproxy. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 INVITE. User-Agent: M-Networks USR/1.0. Allow: INVITE, INFO, ACK, CANCEL, BYE, NOTIFY, BENOTIFY, SUBSCRIBE. Content-Length: 0. .
# U +0.139238 goodproxy:5060 -> asterisk:5060 SIP/2.0 180 Ringing. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK42383fff;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;epid=BD-70-82-06-F9;tag=eb4f3cf30. CSEQ: 102 INVITE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# U +0.010224 goodproxy:5060 -> asterisk:5060 SIP/2.0 200 OK. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK42383fff;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;epid=BD-70-82-06-F9;tag=eb4f3cf30. CSEQ: 102 INVITE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTACT: sip:goodproxy:5060. CONTENT-LENGTH: 197. CONTENT-TYPE: application/sdp. SERVER: RTCC/2.0.6017.0. . v=0. o=- 0 0 IN IP4 exchangeUM. s=Microsoft Exchange Speech Engine. c=IN IP4 exchangeUM. t=0 0. m=audio 32458 RTP/AVP 0 101. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=ptime:20. .
# U +0.000894 asterisk:5060 -> goodproxy:5060 ACK sip:goodproxy:5060 SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK440651a7;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy;tag=eb4f3cf30. Contact: sip:3149@asterisk. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 ACK. User-Agent: Asterisk PBX. Max-Forwards: 70. Content-Length: 0. .
# U +5.475898 asterisk:5060 -> goodproxy:5060 BYE sip:goodproxy:5060 SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK5fabb75e;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy;tag=eb4f3cf30. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 103 BYE. User-Agent: Asterisk PBX. Max-Forwards: 70. Content-Length: 0. .
# U +0.028752 goodproxy:5060 -> asterisk:5060 SIP/2.0 200 OK. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK5fabb75e;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;tag=eb4f3cf30;epid=BD-70-82-06-F9. CSEQ: 103 BYE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# # $Id: openser.cfg,v 1.5 2005/10/28 19:45:33 bogdan_iancu Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
debug=4 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode #fork=no #log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) listen=openser 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 = "/home/darilion/software/openser-1.0.1-cvs/sip-server/debian/openser/etc /openser/tls/user/user-cert.pem" #tls_private_key = "/home/darilion/software/openser-1.0.1-cvs/sip-server/debian/openser/etc /openser/tls/user/user-privkey.pem" #tls_ca_list = "/home/darilion/software/openser-1.0.1-cvs/sip-server/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/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/registrar.so" loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/uri.so" loadmodule "/usr/lib/openser/modules/nathelper.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)
# 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)
# ------------------------- 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; };
if (method=="INVITE" && uri=~"^sip:888[0-9]*@") { log("\n\nSIP invite received from exchange12\n\n"); strip(3); t_relay("tcp:exchangeUM:5065"); 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();
# 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"); route(1); };
if (uri=="sip:openser:5060;transport=TCP") { sl_send_reply("200", "OK"); exit; }
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_to_tls("IP_domain1","port_domain1"); # exit; #} else if(uri=~"@tls_domain2.net") { # t_relay_to_tls("IP_domain2","port_domain2"); # 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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication #if (!www_authorize("openser.org", "subscriber")) { # www_challenge("openser.org", "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")) {
sl_send_reply("404", "Not Found"); exit; }; append_hf("P-hint: usrloc applied\r\n"); };
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[2] { t_on_reply("1"); }
Hello,
usually the proxy should not change the contact header in any request/response. Special cases are with natted clients, where the nat traversal is done by the proxy (for that you have to use nathelper/rttproxy or mediaproxy/mediaproxy).
What is the error given by asterisk (just run it in sip debug mode and see printed messages)? Isn't able to deal with maddr?
Cheers, Daniel
On 02/03/07 21:54, Jon Webster wrote:
Greetings list,
I'm in the process of configuring Asterisk <-> OpenSER <-> Microsoft Exchange 2007 Unified Messaging.
I have a windows based proxy that works great, and want to accomplish the same feat using OpenSER. Below are network captures from the working proxy and OpenSER. From comparing the working call and the OpenSER call it looks like OpenSER needs to modify the CONTACT header in its last "OK" response. I'm not sure that's right, but more importantly I'm not sure how to do this in the config. Any help or direction is greatly appreciated.
Thanks, -jon
p.s. Please cc me on any replies, I'm not currently subscribed to the list.
openSER unsuccessfull call negotiation
# U +9.215930 asterisk:5060 -> openser:5060 INVITE sip:8885555@openser SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport. From: "Jon Webster" sip:3149@asterisk;tag=as43593b57. To: sip:8885555@openser. Contact: sip:3149@asterisk. Call-ID: 46109877480231241e3b8e9d57036e69@asterisk. CSeq: 102 INVITE. User-Agent: Asterisk PBX. Max-Forwards: 70. Date: Sat, 03 Feb 2007 18:01:48 GMT. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY. Content-Type: application/sdp. Content-Length: 216. . v=0. o=root 381 381 IN IP4 asterisk. s=session. c=IN IP4 asterisk. t=0 0. m=audio 13614 RTP/AVP 0 101. a=rtpmap:0 PCMU/8000. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=silenceSupp:off - - - -.
# U +0.000305 openser:5060 -> asterisk:5060 SIP/2.0 100 trying -- your call is important to us. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. From: "Jon Webster" sip:3149@asterisk;tag=as43593b57. To: sip:8885555@openser. Call-ID: 46109877480231241e3b8e9d57036e69@asterisk. CSeq: 102 INVITE. Server: OpenSer (1.1.1-tls (i386/linux)). Content-Length: 0. Warning: 392 openser:5060 "Noisy feedback tells: pid=6890 req_src_ip=asterisk req_src_port=5060 in_uri=sip:8885555@openser out_uri=sip:5555@openser via_cnt==1". .
# U +0.025313 openser:5060 -> asterisk:5060 SIP/2.0 180 Ringing. FROM: "Jon Webster"sip:3149@asterisk;tag=as43593b57. TO: sip:8885555@openser;epid=BD-70-82-06-F9;tag=e38b6cdb9b. CSEQ: 102 INVITE. CALL-ID: 46109877480231241e3b8e9d57036e69@asterisk. MAX-FORWARDS: 70. VIA: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# U +0.016314 openser:5060 -> asterisk:5060 SIP/2.0 200 OK. FROM: "Jon Webster"sip:3149@asterisk;tag=as43593b57. TO: sip:8885555@openser;epid=BD-70-82-06-F9;tag=e38b6cdb9b. CSEQ: 102 INVITE. CALL-ID: 46109877480231241e3b8e9d57036e69@asterisk. MAX-FORWARDS: 70. VIA: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK629bdb92;rport=5060. CONTACT: sip:exchangeUM:5065;transport=Tcp;maddr=exchangeUM. CONTENT-LENGTH: 197. CONTENT-TYPE: application/sdp. SERVER: RTCC/2.0.6017.0. . v=0. o=- 0 0 IN IP4 exchangeUM. s=Microsoft Exchange Speech Engine. c=IN IP4 exchangeUM. t=0 0. m=audio 59544 RTP/AVP 0 101. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=ptime:20.
working proxy
# U +8.036801 asterisk:5060 -> goodproxy:5060 INVITE sip:5555@goodproxy SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK42383fff;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy. Contact: sip:3149@asterisk. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 INVITE. User-Agent: Asterisk PBX. Max-Forwards: 70. Date: Sat, 03 Feb 2007 18:02:40 GMT. Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY. Content-Type: application/sdp. Content-Length: 216. . v=0. o=root 381 381 IN IP4 asterisk. s=session. c=IN IP4 asterisk. t=0 0. m=audio 17160 RTP/AVP 0 101. a=rtpmap:0 PCMU/8000. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=silenceSupp:off - - - -.
# U +0.003872 goodproxy:5060 -> asterisk:5060 SIP/2.0 100 Trying. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK42383fff;rport;received=goodproxy. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 INVITE. User-Agent: M-Networks USR/1.0. Allow: INVITE, INFO, ACK, CANCEL, BYE, NOTIFY, BENOTIFY, SUBSCRIBE. Content-Length: 0. .
# U +0.139238 goodproxy:5060 -> asterisk:5060 SIP/2.0 180 Ringing. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK42383fff;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;epid=BD-70-82-06-F9;tag=eb4f3cf30. CSEQ: 102 INVITE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# U +0.010224 goodproxy:5060 -> asterisk:5060 SIP/2.0 200 OK. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK42383fff;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;epid=BD-70-82-06-F9;tag=eb4f3cf30. CSEQ: 102 INVITE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTACT: sip:goodproxy:5060. CONTENT-LENGTH: 197. CONTENT-TYPE: application/sdp. SERVER: RTCC/2.0.6017.0. . v=0. o=- 0 0 IN IP4 exchangeUM. s=Microsoft Exchange Speech Engine. c=IN IP4 exchangeUM. t=0 0. m=audio 32458 RTP/AVP 0 101. a=rtpmap:101 telephone-event/8000. a=fmtp:101 0-16. a=ptime:20. .
# U +0.000894 asterisk:5060 -> goodproxy:5060 ACK sip:goodproxy:5060 SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK440651a7;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy;tag=eb4f3cf30. Contact: sip:3149@asterisk. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 102 ACK. User-Agent: Asterisk PBX. Max-Forwards: 70. Content-Length: 0. .
# U +5.475898 asterisk:5060 -> goodproxy:5060 BYE sip:goodproxy:5060 SIP/2.0. Via: SIP/2.0/UDP asterisk:5060;branch=z9hG4bK5fabb75e;rport. From: "Jon Webster" sip:3149@asterisk;tag=as07e96b4e. To: sip:5555@goodproxy;tag=eb4f3cf30. Call-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. CSeq: 103 BYE. User-Agent: Asterisk PBX. Max-Forwards: 70. Content-Length: 0. .
# U +0.028752 goodproxy:5060 -> asterisk:5060 SIP/2.0 200 OK. Via: SIP/2.0/UDP asterisk:5060;received=goodproxy;branch=z9hG4bK5fabb75e;rport. FROM: "Jon Webster"sip:3149@asterisk;tag=as07e96b4e. TO: sip:5555@exchangeUM;tag=eb4f3cf30;epid=BD-70-82-06-F9. CSEQ: 103 BYE. CALL-ID: 7d0450601533753042ce2d835a3f98d2@asterisk. MAX-FORWARDS: 70. CONTENT-LENGTH: 0. SERVER: RTCC/2.0.6017.0. .
# # $Id: openser.cfg,v 1.5 2005/10/28 19:45:33 bogdan_iancu Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
debug=4 # debug level (cmd line: -dddddddddd) fork=yes log_stderror=yes # (cmd line: -E)
/* Uncomment these lines to enter debugging mode #fork=no #log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) listen=openser 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 = "/home/darilion/software/openser-1.0.1-cvs/sip-server/debian/openser/etc /openser/tls/user/user-cert.pem" #tls_private_key = "/home/darilion/software/openser-1.0.1-cvs/sip-server/debian/openser/etc /openser/tls/user/user-privkey.pem" #tls_ca_list = "/home/darilion/software/openser-1.0.1-cvs/sip-server/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/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/registrar.so" loadmodule "/usr/lib/openser/modules/textops.so"
loadmodule "/usr/lib/openser/modules/uri.so" loadmodule "/usr/lib/openser/modules/nathelper.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)
# 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)
# ------------------------- 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; };
if (method=="INVITE" && uri=~"^sip:888[0-9]*@")
{ log("\n\nSIP invite received from exchange12\n\n"); strip(3); t_relay("tcp:exchangeUM:5065"); 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();
# 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"); route(1); };
if (uri=="sip:openser:5060;transport=TCP") { sl_send_reply("200", "OK"); exit; }
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_to_tls("IP_domain1","port_domain1"); # exit; #} else if(uri=~"@tls_domain2.net") { # t_relay_to_tls("IP_domain2","port_domain2"); # 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) {
if (method=="REGISTER") { # Uncomment this if you want to use digest
authentication #if (!www_authorize("openser.org", "subscriber")) { # www_challenge("openser.org", "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")) {
sl_send_reply("404", "Not Found"); exit; }; append_hf("P-hint: usrloc applied\r\n");
};
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[2] { t_on_reply("1"); }
Users mailing list Users@openser.org http://openser.org/cgi-bin/mailman/listinfo/users