|
|
|
@ -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 |
|
|
|
@ -202,7 +205,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"); |
|
|
|
@ -322,16 +325,55 @@ route[HANDLE_NOTIFY] |
|
|
|
|
|
|
|
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); |
|
|
|
#!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 { |
|
|
|
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(); |
|
|
|
} |
|
|
|
#!else |
|
|
|
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()) { |
|
|
|
@ -625,7 +667,21 @@ event_route[kazoo:mod-init] |
|
|
|
kazoo_subscribe("$var(payload)"); |
|
|
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
|
|
|
|
#!ifdef MESSAGE-ROLE |
|
|
|
|
|
|
|
$var(key) = "kamailio@MY_HOSTNAME"; |
|
|
|
$var(payload) = '{ "exchange" : "sms" , "type" : "topic", "queue" : "MSG-QUEUE-MY_HOSTNAME", "routing" : "message.route.' + $(var(key){kz.encode}) + '.*", "auto_delete" : 1, "durable" : 0, "no_ack" : 0, "wait_for_consumer_ack" : 1 }'; |
|
|
|
kazoo_subscribe("$var(payload)"); |
|
|
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
#!ifdef REGISTRAR-ROLE |
|
|
|
|
|
|
|
$var(payload) = "{ 'exchange' : 'callmgr' , 'type' : 'topic', 'queue' : 'MSG-FLUSH-MY_HOSTNAME', 'routing' : 'registration.flush.*', 'auto_delete' : 1, 'durable' : 0, 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }"; |
|
|
|
kazoo_subscribe("$var(payload)"); |
|
|
|
|
|
|
|
#!endif |
|
|
|
} |
|
|
|
|
|
|
|
event_route[kazoo:consumer-event] |
|
|
|
|