diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index 6a95c3c..9b69432 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -22,6 +22,7 @@ modparam("dispatcher", "ds_probing_mode", 1) modparam("dispatcher", "ds_ping_reply_codes", "501,403,404,400,200") modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") +#!include_file "dispatcher-network-params.cfg" ## Dispatcher Groups: ## 1 - Primary media servers @@ -33,6 +34,8 @@ modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") ####### Dispatcher Logic ######## route[DISPATCHER_CLASSIFY_SOURCE] { + #!include_file "dispatcher-network-classify.cfg" + if (is_myself("$ou")) { xlog("L_INFO", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); } else if ( @@ -59,17 +62,20 @@ route[DISPATCHER_FIND_ROUTES] return; } - $var(ds_group) = 1; - + $var(ds_primary_group) = 1; + $var(ds_backup_group) = 2; + #!ifndef PRESENCE_ROLE if (is_method("SUBSCRIBE")) { - $var(ds_group) = 10; + $var(ds_primary_group) = 10; + $var(ds_backup_group) = 11; } #!endif #!ifndef REGISTRAR_ROLE if (is_method("REGISTER")) { - $var(ds_group) = 20; + $var(ds_primary_group) = 20; + $var(ds_backup_group) = 21; } #!endif @@ -77,16 +83,18 @@ route[DISPATCHER_FIND_ROUTES] route(FAST_PICKUP_ATTEMPT); #!endif - if (!ds_select_dst("$var(ds_group)", "0") || $(avp(ds_dst)[0]) == $null) { - # if we selected from group 1, try again in group 2 - if ($var(ds_group) == 1) { - if (!ds_select_dst("2", "0")) { - xlog("L_WARN", "$ci|end|no servers available in group 1 or 2\n"); + #!include_file "dispatcher-network-find.cfg" + + if (!ds_select_dst("$var(ds_primary_group)", "0") || $(avp(ds_dst)[0]) == $null) { + # if we selected from primary group, try again in backup group + if ($var(ds_primary_group) == 1) { + if (!ds_select_dst("$var(ds_backup_group)", "0")) { + xlog("L_WARN", "$ci|end|no servers available in primary or backup group\n"); sl_send_reply("480", "All servers busy"); exit; } } else { - xlog("L_INFO", "$ci|end|no servers available in group $var(ds_group)\n"); + xlog("L_INFO", "$ci|end|no servers available in group $var(ds_primary_group)\n"); sl_send_reply("480", "All servers busy"); exit; } diff --git a/kamailio/registrar-role.cfg b/kamailio/registrar-role.cfg index 2f2c2be..e7451fb 100644 --- a/kamailio/registrar-role.cfg +++ b/kamailio/registrar-role.cfg @@ -281,7 +281,15 @@ route[SAVE_LOCATION] $var(ip) = "[" + $Ri + "]"; } - $var(amqp_payload_request) = $_s({"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common}{s.replace,\','}{s.replace,$$,})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common}{s.replace,\','}{s.replace,$$,})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:$var(ip)", "Proxy-IP" : "$var(ip)", "Proxy-Port" : "$Rp", "Source-IP": "$si", "Source-Port": "$sp" }); + $var(port) = $Rp; + + $var(AdvIP) = $RAi; + if(af==INET6) { + $var(AdvIP) = "[" + $RAi + "]"; + } + + + $var(amqp_payload_request) = $_s({"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common}{s.replace,\','}{s.replace,$$,})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common}{s.replace,\','}{s.replace,$$,})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:$var(ip):$var(port)", "Proxy-IP" : "$var(AdvIP)", "Proxy-Port" : "$RAp", "Source-IP": "$si", "Source-Port": "$sp" }); $var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $(fU{kz.encode}); kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request));