Browse Source

Merge pull request #43 from 2600hz/extra-net

allow custom network handling
4.2 4.2.5
bitbashing 8 years ago
committed by GitHub
parent
commit
1ddd8d7fc3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 11 deletions
  1. +18
    -10
      kamailio/dispatcher-role.cfg
  2. +9
    -1
      kamailio/registrar-role.cfg

+ 18
- 10
kamailio/dispatcher-role.cfg View File

@ -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_reply_codes", "501,403,404,400,200")
modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME")
#!include_file "dispatcher-network-params.cfg"
## Dispatcher Groups: ## Dispatcher Groups:
## 1 - Primary media servers ## 1 - Primary media servers
@ -33,6 +34,8 @@ modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME")
####### Dispatcher Logic ######## ####### Dispatcher Logic ########
route[DISPATCHER_CLASSIFY_SOURCE] route[DISPATCHER_CLASSIFY_SOURCE]
{ {
#!include_file "dispatcher-network-classify.cfg"
if (is_myself("$ou")) { if (is_myself("$ou")) {
xlog("L_INFO", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); xlog("L_INFO", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n");
} else if ( } else if (
@ -59,17 +62,20 @@ route[DISPATCHER_FIND_ROUTES]
return; return;
} }
$var(ds_group) = 1;
$var(ds_primary_group) = 1;
$var(ds_backup_group) = 2;
#!ifndef PRESENCE_ROLE #!ifndef PRESENCE_ROLE
if (is_method("SUBSCRIBE")) { if (is_method("SUBSCRIBE")) {
$var(ds_group) = 10;
$var(ds_primary_group) = 10;
$var(ds_backup_group) = 11;
} }
#!endif #!endif
#!ifndef REGISTRAR_ROLE #!ifndef REGISTRAR_ROLE
if (is_method("REGISTER")) { if (is_method("REGISTER")) {
$var(ds_group) = 20;
$var(ds_primary_group) = 20;
$var(ds_backup_group) = 21;
} }
#!endif #!endif
@ -77,16 +83,18 @@ route[DISPATCHER_FIND_ROUTES]
route(FAST_PICKUP_ATTEMPT); route(FAST_PICKUP_ATTEMPT);
#!endif #!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"); sl_send_reply("480", "All servers busy");
exit; exit;
} }
} else { } 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"); sl_send_reply("480", "All servers busy");
exit; exit;
} }


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

@ -281,7 +281,15 @@ route[SAVE_LOCATION]
$var(ip) = "[" + $Ri + "]"; $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}); $var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $(fU{kz.encode});
kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request)); kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request));


Loading…
Cancel
Save