Hi,
I have a working OpenSER Proxy to asterisk and would like the proxy server to handle Presence.
I have tried adding all of the usual presence code, however it seams that messages are not getting back to the clients. I can see time outs in the SIP messages.
Can anyone see what has gone wrong with this code?
The setup is:
Calls & Registrations:
Client --> OpenSER --> Asterisk
SIP Messages & Presence:
Client --> OpenSER
Thank you for your help in advance.
Ross
----------------------------- CONFIG ---------------------- # ----------- global configuration parameters ------------------------ debug=3 # 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=yes # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) listen=udp:<IP>:5065 #port=5065 children=4 # --- module loading mpath="/usr/local/lib64/openser/modules/" loadmodule "mysql.so" loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "nathelper.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "mi_fifo.so" loadmodule "presence.so" loadmodule "presence_xml.so" loadmodule "xcap_client.so" loadmodule "avpops.so" #loadmodule "siptrace.so" # --- setting module parameters # -- mi_fifo params -- modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo") modparam("usrloc|auth_db|presence|presence_xml|xcap_client","db_url","mysql://openser:openserrw@<address>/openser") # -- usrloc params -- modparam("usrloc", "db_mode", 2) modparam("usrloc", "nat_bflag", 6) # -- registrar params -- modparam("registrar|nathelper", "received_avp", "$avp(i:42)") # -- auth params -- modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") # -- rr params -- modparam("rr", "enable_full_lr", 1) # -- nathelper params --- modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7890") modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "sipping_bflag", 7) modparam("nathelper", "sipping_from", "sip:<address>") # -- presence parameters --- modparam("presence", "max_expires", 3600) modparam("presence", "server_address", "sip:<IP>:5065" ) modparam("xcap_client", "periodical_query", 0) modparam("xcap_client", "query_period", 50) modparam("presence_xml", "integrated_xcap_server", 1) #modparam("presence_xml", "xcap_server", "") modparam("presence","fallback2db",1) #modparam("siptrace", "trace_flag", 0) #modparam("siptrace", "trace_on", 1) #modparam("siptrace", "table", "sip_trace")
# --- main routing logic route { ###################################################### # CHECK FOR BAD SIP MESSAGES # ###################################################### 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; };
###################################################### # CHECK FOR CLIENT BEHIND A NAT ROUTER # ###################################################### route(2); if (!method=="REGISTER") record_route(); ###################################################### # PROCESS SUBSCRIBE & NOTIFY MESSAGES # ###################################################### if(method=="PUBLISH") { route(4); } if(method=="SUBSCRIBE") { route(4); }
if (loose_route()) { append_hf("P-hint: rr-enforced\r\n"); route(1); }; ##################################################### # SAVE LOCATION OF CLIENT FOR MESSAGES # ##################################################### if (method=="REGISTER") { save("location","0x02"); }
#################################################### # CHECK IF REGISTERED LOCALY ELSE PASS TO ASTERISK # #################################################### if (!lookup("location")) { append_hf("P-hint: outbound\r\n"); } else { append_hf("P-hint: usrloc applied\r\n"); }
route(1); }
route[1] { if (subst_uri('/(sip:.*);nat=yes/\1/')){ setbflag(6); }; if (isflagset(5)||isbflagset(6)) { route(3); } if (!t_relay()) { sl_reply_error(); }; exit; } route[2]{ force_rport(); if (nat_uac_test("19")) { if (method=="REGISTER") { fix_nated_register(); } else { fix_nated_contact(); }; setflag(5); }; }
route[3] { if (is_method("BYE")) { unforce_rtp_proxy(); } else if (is_method("INVITE")) { force_rtp_proxy(); t_on_failure("2"); }; if (isflagset(5)) { search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); } t_on_reply("1"); } route[4] { # absorb retransmissions if (! t_newtran()) { sl_reply_error(); exit; };
if(is_method("PUBLISH")) { if($hdr(Sender)!= NULL) { handle_publish("$hdr(Sender)"); } else { handle_publish(); } t_release(); } if(is_method("SUBSCRIBE")) { handle_subscribe(); t_release(); };
exit; } branch_route[4] { log("new branch at $ru\n"); }
onreply_route[4] { log("incoming reply\n"); } failure_route[2] { if (isbflagset(6) || isflagset(5)) { unforce_rtp_proxy(); } } onreply_route[1] { if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-9])" && is_method("INVITE")) { force_rtp_proxy(); } search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes'); if (isbflagset(6)) { fix_nated_contact(); } exit; }
_________________________________________________________________
http://clk.atdmt.com/UKM/go/msnnkmgl0010000002ukm/direct/01/
El Sábado, 21 de Junio de 2008, Ross Beer escribió:
Hi,
I have a working OpenSER Proxy to asterisk and would like the proxy server to handle Presence.
I have tried adding all of the usual presence code, however it seams that messages are not getting back to the clients. I can see time outs in the SIP messages.
Can anyone see what has gone wrong with this code?
Hi, I think those kinds of question are too lazy. Describing a little your problem and showing all your config is not a very confortable way of asking help.
Instead, I propose you to just try presence working in an independent enviroment (a OpenSer default config file with presence routes enabled). Check if the clients PUBLISH and SUBSCRIBE arrive correclty to the server and if these data is stored in BD (or memory depending of your configuration). Also check if the NOTIFY from OpenSer arrive correctly to clients (check it by capturing SIP traces).
When you have it working try to integrate in your actual and more complex enviroment. But IMHO is better going step by step.
Regards.
I agree with you. Your last e-mail is should be an interesting starting pioit to learn what I need to know.
Thank you very much. Valerio
2008/6/21 Iñaki Baz Castillo ibc@aliax.net:
El Sábado, 21 de Junio de 2008, Ross Beer escribió:
Hi,
I have a working OpenSER Proxy to asterisk and would like the proxy
server
to handle Presence.
I have tried adding all of the usual presence code, however it seams that messages are not getting back to the clients. I can see time outs in the SIP messages.
Can anyone see what has gone wrong with this code?
Hi, I think those kinds of question are too lazy. Describing a little your problem and showing all your config is not a very confortable way of asking help.
Instead, I propose you to just try presence working in an independent enviroment (a OpenSer default config file with presence routes enabled). Check if the clients PUBLISH and SUBSCRIBE arrive correclty to the server and if these data is stored in BD (or memory depending of your configuration). Also check if the NOTIFY from OpenSer arrive correctly to clients (check it by capturing SIP traces).
When you have it working try to integrate in your actual and more complex enviroment. But IMHO is better going step by step.
Regards.
-- Iñaki Baz Castillo
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users