Browse Source

support kamailio 5.1/5.2

update-rsyslog-config
lazedo 6 years ago
parent
commit
834ff614cd
5 changed files with 294 additions and 2 deletions
  1. +1
    -2
      kamailio/default.cfg
  2. +2
    -0
      kamailio/defs.cfg
  3. +0
    -0
      kamailio/dispatcher-role-5.1.cfg
  4. +289
    -0
      kamailio/dispatcher-role-5.2.cfg
  5. +2
    -0
      kamailio/kamailio.cfg

+ 1
- 2
kamailio/default.cfg View File

@ -159,7 +159,6 @@ modparam("maxfwd", "max_limit", 50)
loadmodule "siputils.so" loadmodule "siputils.so"
######## Text operations module ######## ######## Text operations module ########
loadmodule "textops.so"
loadmodule "textopsx.so" loadmodule "textopsx.so"
######## sdp operations module ######## ######## sdp operations module ########
@ -219,7 +218,7 @@ include_file "kazoo-bindings.cfg"
include_file "authorization-role.cfg" include_file "authorization-role.cfg"
#!endif #!endif
#!ifdef DISPATCHER_ROLE #!ifdef DISPATCHER_ROLE
include_file "dispatcher-role.cfg"
include_file "dispatcher-role-MAJOR.cfg"
#!endif #!endif
#!ifdef REGISTRAR_ROLE #!ifdef REGISTRAR_ROLE
include_file "registrar-role.cfg" include_file "registrar-role.cfg"


+ 2
- 0
kamailio/defs.cfg View File

@ -5,6 +5,8 @@
#!ifndef DEFAULTS_INCLUDED #!ifndef DEFAULTS_INCLUDED
#!define DEFAULTS_INCLUDED #!define DEFAULTS_INCLUDED
#!substdef "!MAJOR!$(version(num){re.subst,/^(([^\.])*\.([^\.])*)\..*/\1/})!g"
#!ifndef MY_HOSTNAME #!ifndef MY_HOSTNAME
#!substdef "!MY_HOSTNAME!$HN(f)!g" #!substdef "!MY_HOSTNAME!$HN(f)!g"
#!endif #!endif


kamailio/dispatcher-role.cfg → kamailio/dispatcher-role-5.1.cfg View File


+ 289
- 0
kamailio/dispatcher-role-5.2.cfg View File

@ -0,0 +1,289 @@
######## Generic Hash Table container in shared memory ########
modparam("htable", "htable", "failover=>size=16;autoexpire=120")
#!trydef KZ_DISPATCHER_PROBE_MODE 1
#!trydef DISPATCHER_ADD_SERVERS 1
#!trydef DISPATCHER_ALG 0
#!trydef KZ_DISPATCHER_ADD_FLAGS 10
#!trydef KZ_DISPATCHER_PRIMARY_GROUP 1
#!trydef KZ_DISPATCHER_SECONDARY_GROUP 2
#!trydef KZ_DISPATCHER_CLASSIFY_GROUP 3
#!trydef KZ_DISPATCHER_ALTNET1_PRIMARY_GROUP 51
#!trydef KZ_DISPATCHER_ALTNET1_SECONDARY_GROUP 52
#!trydef KZ_DISPATCHER_ALTNET2_PRIMARY_GROUP 53
#!trydef KZ_DISPATCHER_ALTNET2_SECONDARY_GROUP 54
#!trydef KZ_DISPATCHER_PRESENCE_PRIMARY_GROUP 10
#!trydef KZ_DISPATCHER_PRESENCE_SECONDARY_GROUP 11
#!trydef KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP 20
#!trydef KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP 21
#!trydef KZ_DISPATCHER_PRINT_ROUTES 0
#!trydef KZ_DISPATCHER_MAX_RETRIES 0
kazoo.dispatcher_auto_add = DISPATCHER_ADD_SERVERS descr "adds media servers reported by ecallmgr"
kazoo.dispatcher_algorithm = DISPATCHER_ALG descr "dispatcher algorithm to use"
kazoo.dispatcher_primary_group = KZ_DISPATCHER_PRIMARY_GROUP descr "dispatcher primary group"
kazoo.dispatcher_secondary_group = KZ_DISPATCHER_SECONDARY_GROUP descr "dispatcher secondary group"
kazoo.dispatcher_print_routes = KZ_DISPATCHER_PRINT_ROUTES descr "should we log the selected routes"
kazoo.dispatcher_max_retries = KZ_DISPATCHER_MAX_RETRIES descr "max number of retries for media servers"
####### Dispatcher module ########
loadmodule "dispatcher.so"
modparam("dispatcher", "db_url", "KAZOO_DB_URL")
modparam("dispatcher", "flags", 2)
modparam("dispatcher", "use_default", 0)
modparam("dispatcher", "force_dst", 1)
modparam("dispatcher", "hash_pvar", "$avp(ds_grp)")
modparam("dispatcher", "setid_pvname", "$var(setid)")
modparam("dispatcher", "ds_ping_method", "OPTIONS")
modparam("dispatcher", "ds_ping_interval", 10)
modparam("dispatcher", "ds_probing_threshold", 3)
modparam("dispatcher", "ds_probing_mode", KZ_DISPATCHER_PROBE_MODE)
modparam("dispatcher", "ds_ping_reply_codes", "501,403,404,400,200")
modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME")
###modparam("dispatcher", "dst_avp", "$avp(ds_dst)")
###modparam("dispatcher", "attrs_avp", "$avp(ds_attrs)")
###modparam("dispatcher", "grp_avp", "$avp(ds_grp)")
###modparam("dispatcher", "cnt_avp", "$avp(ds_cnt)")
modparam("dispatcher", "xavp_dst", "ds_dst")
modparam("dispatcher", "xavp_ctx", "ds_ctx")
#!import_file "dispatcher-network-params.cfg"
## Dispatcher Groups:
## 1 - Primary media servers
## 2 - Backup media servers
## 3 - Alternate media server IPs (used only for classification)
## 10 - Presence servers (if not locally handled)
## 20 - Registrar servers (if not locally handled)
modparam("rtimer", "timer", "name=dispatcher_reload;interval=20;mode=1;")
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 if (
ds_is_from_list(KZ_DISPATCHER_PRIMARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_SECONDARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_CLASSIFY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_ALTNET1_PRIMARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_ALTNET1_SECONDARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_ALTNET2_PRIMARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_ALTNET2_SECONDARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_PRESENCE_PRIMARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_PRESENCE_SECONDARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP, 3) ||
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP, 3)
) {
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");
}
}
# Take the routes from dispatcher - hash over callid
# If prefered route defined, reorder the destionations
route[DISPATCHER_FIND_ROUTES]
{
if ($sht(failover=>$ci::current) != $null) {
$du = $sht(failover=>$ci::current);
return;
}
$var(ds_primary_group) = $sel(cfg_get.kazoo.dispatcher_primary_group);
$var(ds_backup_group) = $sel(cfg_get.kazoo.dispatcher_secondary_group);
#!ifndef PRESENCE_ROLE
if (is_method("SUBSCRIBE")) {
$var(ds_primary_group) = KZ_DISPATCHER_PRESENCE_PRIMARY_GROUP;
$var(ds_backup_group) = KZ_DISPATCHER_PRESENCE_SECONDARY_GROUP;
}
#!endif
#!ifndef REGISTRAR_ROLE
if (is_method("REGISTER")) {
$var(ds_primary_group) = KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP;
$var(ds_backup_group) = KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP;
}
#!endif
#!ifdef PRESENCE_ROLE
route(PRESENCE_FAST_PICKUP_ATTEMPT);
#!endif
#!import_file "dispatcher-network-find.cfg"
$var(ds_group) = $var(ds_primary_group);
$var(ds_alg) = $sel(cfg_get.kazoo.dispatcher_algorithm);
$var(ds_rule) = $_s($var(ds_primary_group)=$var(ds_alg);$var(ds_backup_group)=$var(ds_alg));
ds_select_routes("$var(ds_rule)", "2");
if ($xavp(ds_ctx=>cnt) == 0) {
xlog("L_WARN", "$ci|end|no servers available in primary or backup group\n");
sl_send_reply("480", "All servers busy");
exit;
}
route(PRINT_ROUTES);
$var(user_source) = $(ct{tobody.user}) + "@" + $si + ":" + $sp;
$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|log|found redirect for $var(redirect)\n");
if (route(DISPATCHER_REORDER_ROUTES)) {
$avp(AVP_REDIRECT_KEY) = $var(redirect);
xlog("L_INFO", "$ci|log|REORDER OK $var(redirect)\n");
} else {
xlog("L_INFO", "$ci|log|REORDER KO $var(redirect)\n");
}
} else if ($sht(associations=>$var(user_source)) != $null) {
$var(prefered_route) = $sht(associations=>$var(user_source));
xlog("L_INFO", "$ci|log|found association for contact uri $var(user_source)\n");
if (route(DISPATCHER_REORDER_ROUTES)) {
$sht(associations=>$var(user_source)) = $null;
xlog("L_DEBUG", "$ci|log|REORDER OK $var(user_source)\n");
} else {
xlog("L_WARNING", "$ci|log|REORDER KO $var(user_source)\n");
}
}
$avp(ds_group) = $xavp(ds_dst=>grp);
$avp(ds_retries) = 0;
ds_set_dst();
}
route[DISPATCHER_REORDER_ROUTES]
{
$var(i) = 0;
$var(count) = $xavp(ds_ctx=>cnt);
while($var(i) < $xavp(ds_ctx=>cnt)) {
if($xavp(ds_dst[$var(i)]=>uri) == $var(prefered_route)) {
xlog("L_INFO", "$ci|route|found preferred route $xavp(ds_dst[$var(i)]=>uri)\n");
$var(uri) = $xavp(ds_dst[$var(i)]=>uri);
$var(grp) = $xavp(ds_dst[$var(i)]=>grp);
$var(attrs) = $xavp(ds_dst[$var(i)]=>attrs);
$xavp(ds_dst[$var(i)]=>*) = $null;
$xavp(ds_dst=>uri) = $var(uri);
$xavp(ds_dst[0]=>grp) = $var(grp);
$xavp(ds_dst[0]=>attrs) = $var(attrs);
return 1;
}
$var(i) = $var(i) + 1;
}
return -1;
}
route[PRINT_ROUTES]
{
if($sel(cfg_get.kazoo.dispatcher_print_routes) == 0) return;
$var(i) = 0;
while($xavp(ds_dst[$var(i)]=>uri) != $null) {
xlog("L_INFO", "$ci|route|group $xavp(ds_dst[$var(i)]=>grp) => $xavp(ds_dst[$var(i)]=>uri) => zone $(xavp(ds_dst[$var(i)]=>attrs){param.value,zone})\n");
$var(i) = $var(i) + 1;
}
}
#!import_file "dispatcher-next-route.cfg"
#!ifndef CUSTOM_DISPATCHER_NEXT_ROUTE
# Try next destinations in failure route
route[DISPATCHER_NEXT_ROUTE]
{
if($avp(ds_retries) >= $sel(cfg_get.kazoo.dispatcher_max_retries)) return;
$avp(ds_retries) = $avp(ds_retries) + 1;
if(ds_next_dst()) {
xlog("L_INFO", "$ci|log|routing call to next media server $du\n");
setflag(FLAG_SKIP_NAT_CORRECTION);
# relay the request to the new media server
route(RELAY);
exit;
}
}
#!endif
event_route[dispatcher:dst-down]
{
xlog("L_WARNING", "Destination down: $ru\n");
}
event_route[dispatcher:dst-up]
{
xlog("L_WARNING", "Destination up: $ru\n");
}
route[DISPATCHER_CHECK_MEDIA_SERVER]
{
if($sel(cfg_get.kazoo.dispatcher_auto_add) == 1) {
$var(SetId) = 1;
if($var(Zone) != "MY_AMQP_ZONE") {
$var(SetId) = 2;
}
$var(flags) = KZ_DISPATCHER_ADD_FLAGS;
$var(attrs) = $_s(zone=$var(Zone);profile=$var(MediaProfile);idx=$(var(MediaUrl){s.corehash, MEDIA_SERVERS_HASH_SIZE});node=$var(MediaName));
#!import_file "dispatcher-custom-media-check.cfg"
sql_query("exec", "KZQ_CHECK_MEDIA_SERVER_INSERT");
if($sqlrows(exec) > 0) {
$shv(dispatcher_reload) = 1;
return 1;
}
}
return 0;
}
route[DISPATCHER_RELOAD]
{
if($shv(dispatcher_reload) == 1) {
xlog("L_WARNING", "reloading dispatcher table\n");
ds_reload();
};
$shv(dispatcher_reload) = 0;
}
route[DISPATCHER_STATUS]
{
jsonrpc_exec('{"jsonrpc": "2.0", "method": "dispatcher.list", "id": 1}');
$var(Sets) = $(jsonrpl(body){kz.json, result.NRSETS});
$var(i) = 0;
$var(ds_groups_json)="";
$var(Sep1) = "";
while($var(i) < $var(Sets)) {
$var(Set) = $(jsonrpl(body){kz.json, result.RECORDS[$var(i)].SET});
$var(SetCount) = $(var(Set){kz.json.count,TARGETS});
$var(Sep2)="";
$var(ds_group_json)="";
$var(c) = 0;
while($var(c) < $var(SetCount)) {
$var(Dest) = $(var(Set){kz.json,TARGETS[$var(c)].DEST});
$var(record) = $_s("$(var(Dest){kz.json,URI})" : {"destination" : "$(var(Dest){kz.json,URI})", "flags" : "$(var(Dest){kz.json,FLAGS})", "priority" : $(var(Dest){kz.json,PRIORITY}), "attrs" : "$(var(Dest){kz.json,ATTRS.BODY})"});
$var(ds_group_json) = $var(ds_group_json) + $var(Sep2) + $var(record);
$var(Sep2) = ",";
$var(c) = $var(c) + 1;
}
$var(ds_groups_json) = $var(ds_groups_json) + $var(Sep1) + $_s("$(var(Set){kz.json,ID})" : { $var(ds_group_json) });
$var(Sep1)=", ";
$var(i) = $var(i) + 1;
}
}
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab

+ 2
- 0
kamailio/kamailio.cfg View File

@ -31,11 +31,13 @@
# #
# ipops - ip , domain, hostname # ipops - ip , domain, hostname
# pv - $def(existing definition) # pv - $def(existing definition)
# textops - apply regexp
# #
# #
################ ################
loadmodule "ipops.so" loadmodule "ipops.so"
loadmodule "pv.so" loadmodule "pv.so"
loadmodule "textops.so"
####### Local Configuration ######## ####### Local Configuration ########


Loading…
Cancel
Save