diff --git a/kamailio/dbtext/active_watchers b/kamailio/dbtext/active_watchers old mode 100755 new mode 100644 diff --git a/kamailio/dbtext/location b/kamailio/dbtext/location old mode 100755 new mode 100644 diff --git a/kamailio/dbtext/location_attrs b/kamailio/dbtext/location_attrs new file mode 100644 index 0000000..4214eb6 --- /dev/null +++ b/kamailio/dbtext/location_attrs @@ -0,0 +1 @@ +id(int,auto) ruid(string) username(string) domain(string,null) aname(string) atype(int) avalue(string) last_modified(int) diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 6c6249c..c9de3e3 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -139,6 +139,9 @@ loadmodule "xlog.so" loadmodule "mi_fifo.so" modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo") +######## UAC ######## +loadmodule "uac.so" + ######## UAC Redirection module ######## loadmodule "uac_redirect.so" @@ -147,22 +150,22 @@ loadmodule "db_text.so" modparam("db_text", "db_mode", 1) ####### Kazoo Integration module ########## -loadmodule "db_kazoo.so" -modparam("db_kazoo", "node_hostname", "MY_HOSTNAME") -modparam("db_kazoo", "amqp_connection", "MY_AMQP_URL") +loadmodule "kazoo.so" +modparam("kazoo", "node_hostname", "MY_HOSTNAME") +modparam("kazoo", "amqp_connection", "MY_AMQP_URL") #!ifdef MY_AMQP_URL_SECONDARY -modparam("db_kazoo", "amqp_connection", "MY_AMQP_URL_SECONDARY") +modparam("kazoo", "amqp_connection", "MY_AMQP_URL_SECONDARY") #!endif #!ifdef MY_AMQP_URL_TERTIARY -modparam("db_kazoo", "amqp_connection", "MY_AMQP_URL_TERTIARY") +modparam("kazoo", "amqp_connection", "MY_AMQP_URL_TERTIARY") #!endif #!ifdef MY_AMQP_MAX_CHANNELS -modparam("db_kazoo", "amqp_max_channels", MY_AMQP_MAX_CHANNELS) +modparam("kazoo", "amqp_max_channels", MY_AMQP_MAX_CHANNELS) #!else -modparam("db_kazoo", "amqp_max_channels", 100) +modparam("kazoo", "amqp_max_channels", 100) #!endif -modparam("db_kazoo", "amqp_internal_loop_count", 1); -modparam("db_kazoo", "amqp_consumer_loop_count", 4); +modparam("kazoo", "amqp_internal_loop_count", 1); +modparam("kazoo", "amqp_consumer_loop_count", 4); ####### Role Configurations ########## #!ifdef DISPATCHER-ROLE @@ -205,7 +208,7 @@ modparam("permissions", "db_mode", 1) route { # log the basic info regarding this call - xlog("L_INFO", "$ci|start|recieved $oP request $rm $ou"); + xlog("L_INFO", "$ci|start|recieved $pr request $rm $ou"); xlog("L_INFO", "$ci|log|source $si:$sp"); xlog("L_INFO", "$ci|log|from $fu"); xlog("L_INFO", "$ci|log|to $tu"); @@ -328,6 +331,7 @@ route[HANDLE_MESSAGE] #!ifdef MESSAGE-ROLE if (is_method("MESSAGE")) { xlog("L_INFO", "$ci|MESSAGE from $fu to $tu"); + t_on_reply("MESSAGE_REPLY"); if (isflagset(FLAG_INTERNALLY_SOURCED) || src_ip == myself) { xlog("L_INFO", "$ci| routing MESSAGE to external from $fu to $tu"); route(INTERNAL_TO_EXTERNAL_RELAY); @@ -352,14 +356,27 @@ route[HANDLE_MESSAGE] if (is_method("MESSAGE")) { if (isflagset(FLAG_INTERNALLY_SOURCED)) { route(INTERNAL_TO_EXTERNAL_RELAY); + #!ifdef TRAFFIC-FILTER-ROLE + } else if (!isflagset(FLAG_TRUSTED_SOURCE) + && $rd =~ "[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}\.[0-9]{1,3}") { + xlog("L_WARN", "$ci|end|dropping MESSAGE request with IP domain"); + #!endif } else { - sl_send_reply("202", "delivered to /dev/null"); - exit; + xlog("L_WARN", "$ci|end|MESSAGE $(hdr(Content-Type))"); + if( $hdr(Content-Type) == "application/im-iscomposing+xml" ) { + xlog("L_WARN", "$ci|end|dropping MESSAGE application/im-iscomposing+xml"); + sl_send_reply("200", "OK"); + } else { + route(DISPATCHER_FIND_ROUTES); + route(EXTERNAL_TO_INTERNAL_RELAY); + } } + exit(); } #!endif } + route[HANDLE_IN_DIALOG_REQUESTS] { if (has_totag()) { @@ -668,7 +685,6 @@ event_route[kazoo:mod-init] kazoo_subscribe("$var(payload)"); #!endif - } event_route[kazoo:consumer-event] diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index 5782199..d5e99b2 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -32,11 +32,11 @@ modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_IP_ADDRESS") ####### Dispatcher Logic ######## route[DISPATCHER_CLASSIFY_SOURCE] { - if (ds_is_from_list("1", "1") || - ds_is_from_list("2", "1") || - ds_is_from_list("3", "1") || - ds_is_from_list("10", "1") || - ds_is_from_list("20", "1")) { + if (ds_is_from_list(1, 3) || + ds_is_from_list(2, 3) || + ds_is_from_list(3, 3) || + ds_is_from_list(10, 3) || + ds_is_from_list(20, 3)) { xlog("L_INFO", "$ci|log|originated from internal sources"); setflag(FLAG_INTERNALLY_SOURCED); diff --git a/kamailio/message-role.cfg b/kamailio/message-role.cfg index 72e5e1c..afa8f6a 100644 --- a/kamailio/message-role.cfg +++ b/kamailio/message-role.cfg @@ -27,7 +27,7 @@ event_route[kazoo:consumer-event-message-route] uac_req_send(); } -route[MESSAGE_REPLY] +onreply_route[MESSAGE_REPLY] { if( $(sht(msg=>$ci)) == $null) { exit(); diff --git a/kamailio/presence-role.cfg b/kamailio/presence-role.cfg index 957d02c..74817df 100644 --- a/kamailio/presence-role.cfg +++ b/kamailio/presence-role.cfg @@ -6,34 +6,21 @@ loadmodule "presence_dialoginfo.so" loadmodule "presence_mwi.so" loadmodule "presence_xml.so" +modparam("presence_dialoginfo", "force_dummy_dialog", 1) +modparam("presence_xml", "force_active", 1) + modparam("presence", "subs_db_mode", 1) modparam("presence", "expires_offset", 60) -modparam("presence", "send_fast_notify", 0) +modparam("presence", "send_fast_notify", 1) modparam("presence", "clean_period", 30) modparam("presence", "publ_cache", 0) -modparam("presence", "min_expires", 0) +modparam("presence", "min_expires_action", 2) +modparam("presence", "min_expires", 300) modparam("presence", "max_expires", 3600) - -## use this -#modparam("presence", "db_url", "MY_AMQP_URL/dialoginfo") - -## or this modparam("presence", "db_url", "text:///etc/kazoo/kamailio/dbtext") -modparam("db_kazoo", "db_url", "text:///etc/kazoo/kamailio/dbtext") -modparam("db_kazoo", "pua_mode", 1) - - -modparam("presence_xml", "force_active", 1) - - -######## Presence User Agent module ######## -#loadmodule "pua.so" -#modparam("pua", "db_mode", 0) -#modparam("pua", "db_url", "text:///etc/kazoo/kamailio/dbtext") -#modparam("pua", "update_period", 6) -#modparam("pua", "min_expires", 300) -#modparam("pua", "outbound_proxy", "sip:MY_IP_ADDRESS") +modparam("kazoo", "db_url", "text:///etc/kazoo/kamailio/dbtext") +modparam("kazoo", "pua_mode", 1) ####### Presence Logic ######## route[HANDLE_SUBSCRIBE] diff --git a/kamailio/registrar-role.cfg b/kamailio/registrar-role.cfg index 0dab254..769930a 100644 --- a/kamailio/registrar-role.cfg +++ b/kamailio/registrar-role.cfg @@ -11,10 +11,17 @@ loadmodule "auth.so" ####### User Location Implementation module ########## loadmodule "usrloc.so" -modparam("usrloc", "db_mode", 0) modparam("usrloc", "db_update_as_insert", 1) modparam("usrloc", "use_domain", 1) modparam("usrloc", "nat_bflag", FLB_NATB) +modparam("usrloc", "db_url", "text:///etc/kazoo/kamailio/dbtext") +modparam("usrloc", "db_mode", 1) +modparam("usrloc", "handle_lost_tcp", 1) +modparam("usrloc", "xavp_contact", "ulattrs") +modparam("usrloc", "db_check_update", 1) +modparam("usrloc", "timer_interval", 30) +modparam("usrloc", "timer_procs", 1) + ######## NAT Traversal module - signaling functions ######## #!ifdef NAT-TRAVERSAL-ROLE