|
|
|
@ -54,8 +54,6 @@ modparam("dispatcher", "xavp_dst", "ds_dst") |
|
|
|
modparam("dispatcher", "xavp_ctx", "ds_ctx") |
|
|
|
modparam("dispatcher", "ds_hash_size", KZ_DISPATCHER_HASH_SIZE) |
|
|
|
|
|
|
|
#!import_file "dispatcher-network-params.cfg" |
|
|
|
|
|
|
|
## Dispatcher Groups: |
|
|
|
## 1 - Primary media servers |
|
|
|
## 2 - Backup media servers |
|
|
|
@ -70,28 +68,30 @@ modparam("rtimer", "exec", "timer=dispatcher_reload;route=DISPATCHER_RELOAD") |
|
|
|
####### Dispatcher Logic ######## |
|
|
|
route[DISPATCHER_CLASSIFY_SOURCE] |
|
|
|
{ |
|
|
|
#!import_file "dispatcher-network-classify.cfg" |
|
|
|
|
|
|
|
if (is_myself("$ou")) { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); |
|
|
|
} else { |
|
|
|
$var(classify_dispatcher_flag) = $(sel(cfg_get.kazoo.dispatcher_classify_flags){s.int}); |
|
|
|
if (ds_is_from_list(KZ_DISPATCHER_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_CLASSIFY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET1_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET1_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET2_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET2_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_PRESENCE_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_PRESENCE_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP, "$var(classify_dispatcher_flag)")) { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|originated from internal sources\n"); |
|
|
|
setflag(FLAG_INTERNALLY_SOURCED); |
|
|
|
} else { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|originated from external sources\n"); |
|
|
|
} |
|
|
|
route_if_exists("DISPATCHER_CUSTOM_NETWORK_CLASSIFY"); |
|
|
|
|
|
|
|
if (!isflagset(FLAG_NETWORK_CLASSIFIED)) { |
|
|
|
if (is_myself("$ou")) { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); |
|
|
|
} else { |
|
|
|
$var(classify_dispatcher_flag) = $(sel(cfg_get.kazoo.dispatcher_classify_flags){s.int}); |
|
|
|
if (ds_is_from_list(KZ_DISPATCHER_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_CLASSIFY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET1_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET1_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET2_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_ALTNET2_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_PRESENCE_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_PRESENCE_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") || |
|
|
|
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP, "$var(classify_dispatcher_flag)")) { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|originated from internal sources\n"); |
|
|
|
setflag(FLAG_INTERNALLY_SOURCED); |
|
|
|
} else { |
|
|
|
xlog("$var(log_request_level)", "$ci|log|originated from external sources\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -121,7 +121,7 @@ route[DISPATCHER_FIND_ROUTES] |
|
|
|
route(PRESENCE_FAST_PICKUP_ATTEMPT); |
|
|
|
#!endif |
|
|
|
|
|
|
|
#!import_file "dispatcher-network-find.cfg" |
|
|
|
route_if_exists("DISPATCHER_CUSTOM_SET_GROUPS"); |
|
|
|
|
|
|
|
$var(ds_group) = $var(ds_primary_group); |
|
|
|
|
|
|
|
@ -142,7 +142,18 @@ route[DISPATCHER_FIND_ROUTES] |
|
|
|
route(PRINT_ROUTES); |
|
|
|
|
|
|
|
$var(user_source) = $(ct{tobody.user}) + "@" + $si + ":" + $sp; |
|
|
|
if ($sht(associations=>$var(user_source)) != $null) { |
|
|
|
$var(redirect) = @from.uri.user + "@" + @from.uri.host + "->" |
|
|
|
+ @ruri.user + "@" + @ruri.host; |
|
|
|
if ($sht(redirects=>$var(redirect)) != $null) { |
|
|
|
$var(prefered_route) = $sht(redirects=>$var(redirect)); |
|
|
|
xlog("L_INFO", "$ci|route|found redirect for $var(redirect)\n"); |
|
|
|
if (route(DISPATCHER_PREFERRED_ROUTE)) { |
|
|
|
$avp(AVP_REDIRECT_KEY) = $var(redirect); |
|
|
|
xlog("L_INFO", "$ci|route|REORDER OK $var(redirect)\n"); |
|
|
|
} else { |
|
|
|
xlog("L_INFO", "$ci|route|REORDER KO $var(redirect)\n"); |
|
|
|
} |
|
|
|
} else if ($sht(associations=>$var(user_source)) != $null) { |
|
|
|
if($sel(cfg_get.kazoo.dispatcher_route_to_associated_media) == 1) { |
|
|
|
$var(prefered_route) = $sht(associations=>$var(user_source)); |
|
|
|
xlog("L_INFO", "$ci|route|found association for contact uri $var(user_source)\n"); |
|
|
|
@ -238,7 +249,7 @@ route[DISPATCHER_CHECK_MEDIA_SERVER] |
|
|
|
} |
|
|
|
$var(flags) = KZ_DISPATCHER_ADD_FLAGS; |
|
|
|
$var(attrs) = $_s(zone=$var(Zone);profile=$var(MediaProfile);duid=$(var(MediaUrl){s.corehash, MEDIA_SERVERS_HASH_SIZE});node=$var(MediaName)); |
|
|
|
#!import_file "dispatcher-custom-media-check.cfg" |
|
|
|
route_if_exists("DISPATCHER_CUSTOM_MEDIA_CHECK"); |
|
|
|
sql_query("exec", "KZQ_CHECK_MEDIA_SERVER_INSERT"); |
|
|
|
if($sqlrows(exec) > 0) { |
|
|
|
$shv(dispatcher_reload) = 1; |
|
|
|
@ -251,6 +262,7 @@ route[DISPATCHER_CHECK_MEDIA_SERVER] |
|
|
|
$var(MediaUrl) = $_s($(var(MediaUrlBack){uri.scheme}):$var(MediaIP):$(var(MediaUrlBack){uri.port})); |
|
|
|
$var(attrs) = $_s(zone=$var(Zone);profile=$var(MediaProfile);duid=$(var(MediaUrl){s.corehash, MEDIA_SERVERS_HASH_SIZE});node=$var(MediaName)); |
|
|
|
$var(SetId) = $sel(cfg_get.kazoo.dispatcher_add_secondary_ip_group); |
|
|
|
route_if_exists("DISPATCHER_CUSTOM_MEDIA_CHECK"); |
|
|
|
sql_query("exec", "KZQ_CHECK_MEDIA_SERVER_INSERT"); |
|
|
|
if($sqlrows(exec) > 0) { |
|
|
|
$shv(dispatcher_reload) = 1; |
|
|
|
|