There's no "#!ifdef WITH_DEBUG" anywhere, and I have "debug=9" which didn't do any changes. Here's my current config:
------------------------------------------------------------ #!KAMAILIO # # Simple/sample kamailio.cfg for running a proxy/registrar with TLS and # WebSockets support.
#!substdef "!DBURL!mysql://ser:heslo@localhost/ser!g" #!substdef "!MY_IP_ADDR!192.168.0.148!g" #!substdef "!MY_WS_PORT!80!g" #!substdef "!MY_WSS_PORT!443!g" #!substdef "!MY_WS_ADDR!tcp:MY_IP_ADDR:MY_WS_PORT!g" #!substdef "!MY_WSS_ADDR!tls:MY_IP_ADDR:MY_WSS_PORT!g"
##!define LOCAL_TEST_RUN #!define WITH_TLS #!define WITH_WEBSOCKETS
####### Global Parameters #########
fork=yes children=4
#alias="example.com"
#!ifdef WITH_TLS enable_tls=1 #!endif
listen=MY_IP_ADDR #!ifdef WITH_WEBSOCKETS listen=MY_WS_ADDR #!ifdef WITH_TLS listen=MY_WSS_ADDR #!endif #!endif
tcp_connection_lifetime=3604 tcp_accept_no_cl=yes tcp_rd_buf_size=16384
syn_branch=0 debug=9
# set paths to location of modules (to sources or installation folders) #!ifdef WITH_SRCPATH mpath="modules_k:modules" #!else mpath="/usr/local/kamailio/lib/kamailio/modules_k/:/usr/local/kamailio/lib/kamailio/modules/" #!endif
loadmodule "db_mysql.so" loadmodule "mi_fifo.so" loadmodule "tm.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "auth.so" loadmodule "auth_db.so" loadmodule "kex.so" loadmodule "mi_rpc.so" #!ifdef WITH_TLS loadmodule "tls.so" #!endif #!ifdef WITH_WEBSOCKETS loadmodule "xhttp.so" loadmodule "websocket.so" loadmodule "nathelper.so" #!endif
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- tm params ----- # auto-discard branches from previous serial forking leg modparam("tm", "failure_reply_mode", 3) # default retransmission timeout: 30sec modparam("tm", "fr_timer", 30000) # default invite retransmission timeout after 1xx: 120sec modparam("tm", "fr_inv_timer", 120000)
# ----- 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 ----- modparam("registrar", "method_filtering", 1) modparam("registrar", "max_expires", 3600) modparam("registrar", "gruu_enabled", 0)
# ----- usrloc params ----- modparam("usrloc", "db_url", "DBURL") modparam("usrloc", "db_mode", 0)
# ----- auth_db params ----- modparam("auth_db", "db_url", "DBURL") modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") modparam("auth_db", "load_credentials", "")
#!ifdef WITH_TLS # ----- tls params ----- modparam("tls", "config", "/usr/local/kamailio/etc/kamailio/tls.cfg") #!endif
#!ifdef WITH_WEBSOCKETS # ----- nathelper params ----- modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)") # Note: leaving NAT pings turned off here as nathelper is _only_ being used for # WebSocket connections. NAT pings are not needed as WebSockets have # their own keep-alives. #!endif
####### Routing Logic ########
# Main SIP request routing logic # - processing of any incoming SIP request starts with this route # - note: this is the same as route { ... } request_route {
# per request initial checks route(REQINIT);
#!ifdef WITH_WEBSOCKETS if (nat_uac_test(64)) { # Do NAT traversal stuff for requests from a WebSocket # connection - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. force_rport(); if (is_method("REGISTER")) fix_nated_register(); else { if (!add_contact_alias()) { xlog("L_ERR", "Error aliasing contact <$ct>\n"); sl_send_reply("400", "Bad Request"); exit; } } } #!endif
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; }
t_check_trans();
# authentication route(AUTH);
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE")) record_route();
# handle registrations route(REGISTRAR);
if ($rU==$null) { # request with no Username in RURI sl_send_reply("484","Address Incomplete"); exit; }
# user location service route(LOCATION);
route(RELAY); }
route[RELAY] { if (!t_relay()) { sl_reply_error(); } exit; }
# Per SIP request initial checks route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Handle requests within SIP dialogs route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { #!ifdef WITH_WEBSOCKETS if ($du == "") { if (!handle_ruri_alias()) { xlog("L_ERR", "Bad alias <$ru>\n"); sl_send_reply("400", "Bad Request"); exit; } } #!endif route(RELAY); } else { if ( is_method("ACK") ) { if ( t_check_trans() ) { # no 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; } }
# Handle SIP registrations route[REGISTRAR] { if (is_method("REGISTER")) { if (!save("location")) sl_reply_error();
exit; } }
# USER location service route[LOCATION] { if (!lookup("location")) { $var(rc) = $rc; t_newtran(); switch ($var(rc)) { case -1: case -3: send_reply("404", "Not Found"); exit; case -2: send_reply("405", "Method Not Allowed"); exit; } } }
# Authentication route route[AUTH] { if (is_method("REGISTER") || from_uri==myself) { # authenticate requests if (!auth_check("$fd", "subscriber", "1")) { auth_challenge("$fd", "0"); exit; } # user authenticated - remove auth header if(!is_method("REGISTER")) consume_credentials(); } # if caller is not local subscriber, then check if it calls # a local destination, otherwise deny, not an open relay here if (from_uri!=myself && uri!=myself) { sl_send_reply("403","Not relaying"); exit; } }
#!ifdef WITH_WEBSOCKETS onreply_route { if (nat_uac_test(64)) { # Do NAT traversal stuff for replies to a WebSocket connection # - even if it is not behind a NAT! # This won't be needed in the future if Kamailio and the # WebSocket client support Outbound and Path. add_contact_alias(); } }
event_route[xhttp:request] { set_reply_close(); set_reply_no_connect(); # if ($Rp != MY_WS_PORT && $Rp != MY_WSS_PORT) { # xlog("L_WARN", "HTTP request received on $Rp\n"); # xhttp_reply("403", "Forbidden", "", ""); # exit; # }
xlog("L_DBG", "HTTP Request Received\n");
if ($hdr(Upgrade)=~"websocket" && $hdr(Connection)=~"Upgrade" && $rm=~"GET") { xlog("L_DBG", "WebSocket\n"); xlog("L_DBG", " Host: $hdr(Host)\n"); xlog("L_DBG", " Origin: $hdr(Origin)\n");
# if ($hdr(Host) == $null || !is_myself($hdr(Host))) { # xlog("L_WARN", "Bad host $hdr(Host)\n"); # xhttp_reply("403", "Forbidden", "", ""); # exit; # }
# Optional... validate Origin # Optional... perform HTTP authentication
# ws_handle_handshake() exits (no further configuration file # processing of the request) when complete. if (ws_handle_handshake()) { # Optional... cache some information abou the # successful connection exit; } }
xhttp_reply("404", "Not found", "", ""); }
event_route[websocket:closed] { xlog("L_INFO", "WebSocket connection from $si:$sp has closed\n"); } #!endif ------------------------------------------------------------
On Thu, Aug 16, 2012 at 10:48 AM, Muhammad Shahzad shaheryarkh@googlemail.com wrote:
By default all logs goto, syslog facility local0. So either,
- Your syslog daemon is configured to write local0 logs to some different
file.
OR
- You have set log level in kamailio too low, i think log level 0 disables
almost all logs. Set it to 4 for debug.
Thank you.
On Thu, Aug 16, 2012 at 3:11 PM, Juan Castro jcastro@instant.com.br wrote:
I see no logs in /var/log/messages other than Kamailio's startup blah-blah. (I'm using CentOS 6.) Where do the xlog() messages go to?
On Tue, Aug 14, 2012 at 7:25 PM, Carlos Ruiz Díaz carlos.ruizdiaz@gmail.com wrote:
There's probably an error reported in kamaiio's log file so you should check it out. In my case, I had to comment out parts of the script that were in charge of doing some validation, particularly, in event_route[xhttp:request].
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Muhammad Shahzad
CISCO Rich Media Communication Specialist (CRMCS) CISCO Certified Network Associate (CCNA) Cell: +92 334 422 40 88 MSN: shari_786pk@hotmail.com Email: shaheryarkh@googlemail.com
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev