Browse Source

merged the various changes for Kamailio 4.2

3.19 3.19.3
karl anderson 11 years ago
parent
commit
f421aab008
8 changed files with 146 additions and 40 deletions
  1. +0
    -0
      kamailio/dbtext/active_watchers
  2. +0
    -0
      kamailio/dbtext/location
  3. +1
    -0
      kamailio/dbtext/location_attrs
  4. +69
    -13
      kamailio/default.cfg
  5. +5
    -5
      kamailio/dispatcher-role.cfg
  6. +55
    -0
      kamailio/message-role.cfg
  7. +8
    -21
      kamailio/presence-role.cfg
  8. +8
    -1
      kamailio/registrar-role.cfg

+ 0
- 0
kamailio/dbtext/active_watchers View File


+ 0
- 0
kamailio/dbtext/location View File


+ 1
- 0
kamailio/dbtext/location_attrs View File

@ -0,0 +1 @@
id(int,auto) ruid(string) username(string) domain(string,null) aname(string) atype(int) avalue(string) last_modified(int)

+ 69
- 13
kamailio/default.cfg View File

@ -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]


+ 5
- 5
kamailio/dispatcher-role.cfg View File

@ -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);


+ 55
- 0
kamailio/message-role.cfg View File

@ -0,0 +1,55 @@
modparam("htable", "htable", "msg=>size=32;autoexpire=60;")
event_route[kazoo:consumer-event-message-route]
{
$var(uri_username) = "";
kazoo_json($kzE, "Endpoints[0].To-Username", "$var(uri_username)");
$var(x) = $(kzE{kz.json,Endpoints[0].To-Username});
xlog("L_INFO", "received message route for $(kzE{kz.json,Endpoints[0].To-DID})");
if( $var(uri_username) != "" ) {
$var(from_uri) = "sip:" + $(kzE{kz.json,Caller-ID-Number}) + "@" + $(kzE{kz.json,Endpoints[0].To-Realm});
$var(to_uri) = "sip:" + $(kzE{kz.json,Endpoints[0].To-Username}) + "@" + $(kzE{kz.json,Endpoints[0].To-Realm});
} else {
$var(from_uri) = "sip:" + $(kzE{kz.json,Caller-ID-Number}) + $(kzE{kz.json,Endpoints[0].To-Realm});
$var(to_uri) = $(kzE{kz.json,Endpoints[0].Route});
}
$sht(msg=>$(kzE{kz.json,Call-ID})) = $kzE;
$uac_req(method)="MESSAGE";
$uac_req(body)= $(kzE{kz.json,Body});
$uac_req(hdrs)="Content-Type: text/plain\r\n";
$uac_req(turi) = $var(to_uri);
$uac_req(ruri) = $var(to_uri);
$uac_req(furi) = $var(from_uri);
$uac_req(ouri) = "sip:MY_IP_ADDRESS:5060";
$uac_req(callid) = $(kzE{kz.json,Call-ID});
xlog("L_INFO", "sending message from $var(from_uri) to $var(to_uri) ");
uac_req_send();
}
onreply_route[MESSAGE_REPLY]
{
if( $(sht(msg=>$ci)) == $null) {
exit();
}
if($T_reply_code != 200 && $T_reply_code != 202) {
$var(Result) = "Failure";
} else {
$var(Result) = "Success";
}
$var(Payload) = '{ "Event-Category" : "message", "Event-Name" : "delivery", "Call-ID" : "' + $(sht(msg=>$ci){kz.json,Call-ID}) + '", "Message-ID" : "' + $(sht(msg=>$ci){kz.json,Message-ID}) +'" , "Delivery-Result-Code" : "sip:" + $T_reply_code + '" , "Msg-ID" : "' + $(sht(msg=>$ci){kz.json,Msg-ID}) + '" , "Status" : "' + $var(Result) + '"}';
$var(RoutingKey) = $(sht(msg=>$ci){kz.json,Server-ID});
$var(exchange) = "targeted";
if($var(RoutingKey) == "") {
$var(exchange) = "sms";
$var(RoutingKey) = "message.delivery." + $(sht(msg=>$ci){kz.json,Call-ID}{kz.encode});
}
xlog("L_INFO", "sending delivery message for $ci");
kazoo_publish($var(exchange), $var(RoutingKey), $var(Payload));
}
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab

+ 8
- 21
kamailio/presence-role.cfg View File

@ -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]


+ 8
- 1
kamailio/registrar-role.cfg View File

@ -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


Loading…
Cancel
Save