diff --git a/kamailio/auth.cfg b/kamailio/auth.cfg index aca5bec..ffa5c32 100644 --- a/kamailio/auth.cfg +++ b/kamailio/auth.cfg @@ -30,6 +30,25 @@ route[AUTH_HEADERS] } +route[AUTH_HEADERS_JSON] +{ + xavp_params_implode("hf", "$var(outx)"); + $var(out) = $(var(outx){re.subst,/^(.*);$$/\1/}); + $var(c) = $(var(out){param.count}); + $var(headers_json) = ""; + $var(sep) = ""; + xlog("L_DEBUG", "$ci|auth|headers $var(c) => $var(out) => $var(outx)\n"); + while($var(c) > 0) { + $var(idx) = $var(c) - 1; + xlog("L_DEBUG", "$ci|auth|adding $(var(out){param.name,$var(idx)}): $(var(out){param.valueat,$var(idx)}{s.unescape.param})\n"); + append_hf("$(var(out){param.name,$var(idx)}): $(var(out){param.valueat,$var(idx)}{s.unescape.param})\r\n"); + $var(headers_json) = $_s($var(headers_json)$var(sep)"$(var(out){param.name,$var(idx)})" : "$(var(out){param.valueat,$var(idx)}{s.unescape.param})"); + $var(c) = $var(c) - 1; + $var(sep) = " , "; + } + $var(headers_json) = $_s({ $var(headers_json) }); +} + route[SETUP_AUTH_HEADERS] { @@ -37,11 +56,18 @@ route[SETUP_AUTH_HEADERS] $xavp(hf[0]=>X-AUTH-PORT) = $sp; #!ifdef REGISTRAR_ROLE + + $avp(is_registred) = "false"; + $xavp(regcfg=>match_received) = $su; + if (registered("location","$fu", 2, 1) != 1) return; + + $avp(is_registred) = "true"; #!ifdef WITH_AUTH_TOKEN route(AUTH_TOKEN); #!else route(AUTH_CCVS); #!endif + #!endif } @@ -50,23 +76,17 @@ route[SETUP_AUTH_HEADERS] route[AUTH_TOKEN] { - $xavp(regcfg=>match_received) = $su; - if (registered("location","$fu", 2, 1) == 1) { - if($(xavp(ulattrs=>token){s.len}) > 0) { - $xavp(hf[0]=>X-AUTH-Token) = $xavp(ulattrs=>token); - } else { - if($(xavp(ulattrs=>Authorizing-ID){s.len}) > 0 && $(xavp(ulattrs=>Account-ID){s.len})) { - $xavp(hf[0]=>X-AUTH-Token) = $_s($(xavp(ulattrs=>custom_channel_vars){kz.json,Authorizing-ID})@$(xavp(ulattrs=>custom_channel_vars){kz.json,Account-ID})); - } - } + if($(xavp(ulattrs=>token){s.len}) > 0) { + $xavp(hf[0]=>X-AUTH-Token) = $xavp(ulattrs=>token); + } else { + if($(xavp(ulattrs=>Authorizing-ID){s.len}) > 0 && $(xavp(ulattrs=>Account-ID){s.len})) { + $xavp(hf[0]=>X-AUTH-Token) = $_s($(xavp(ulattrs=>custom_channel_vars){kz.json,Authorizing-ID})@$(xavp(ulattrs=>custom_channel_vars){kz.json,Account-ID})); + } } } route[AUTH_CCVS] { - $xavp(regcfg=>match_received) = $su; - if (registered("location","$fu", 2, 1) != 1) return; - if($(xavp(ulattrs=>custom_channel_vars){kz.json,Account-ID}{s.len}) > 0) $xavp(hf[0]=>X-ecallmgr_Account-ID) = $(xavp(ulattrs=>custom_channel_vars){kz.json,Account-ID});