feat: complete phase2 baseline cdr quality rbac
This commit is contained in:
@@ -46,6 +46,8 @@ loadmodule "auth.so"
|
||||
modparam("auth", "nonce_expire", 300)
|
||||
modparam("auth", "disable_nonce_check", 0)
|
||||
|
||||
loadmodule "uac.so"
|
||||
|
||||
loadmodule "pike.so"
|
||||
modparam("pike", "sampling_time_unit", 2)
|
||||
modparam("pike", "reqs_density_per_unit", 32)
|
||||
@@ -182,11 +184,17 @@ route[S28_INVITE] {
|
||||
$var(s28_callee_operator) = "UNKNOWN";
|
||||
$var(s28_callee_number_type) = "UNKNOWN";
|
||||
$var(s28_callee_province_code) = "UNKNOWN";
|
||||
$var(s28_callee_normalized) = "";
|
||||
$var(s28_real_callee) = $rU;
|
||||
$var(s28_raw_callee) = $rU;
|
||||
$var(s28_business_prefix_id) = "none";
|
||||
$var(s28_business_prefix) = "none";
|
||||
$var(s28_landing_caller) = $fU;
|
||||
$var(s28_landing_callee) = $rU;
|
||||
$var(s28_callee_normalized) = $rU;
|
||||
$var(s28_reply_code) = 503;
|
||||
$var(s28_reply_text) = "Routing Not Ready";
|
||||
|
||||
if (!cache_raw_query("redis:s20", "EVALSHA 229c06326b97d3d64b0b02deedec77a764a61045 1 cfg:active_version $si $fU $rU $ci", "$avp(s28_hotpath)")) {
|
||||
if (!cache_raw_query("redis:s20", "EVALSHA 0b7ee595cdcad2f38a670dd8ff3553387820039e 1 cfg:active_version $si $fU $rU $ci", "$avp(s28_hotpath)")) {
|
||||
xlog("L_ERR", "S28 Redis hotpath unavailable source=$si callid=$ci\n");
|
||||
$var(s28_reason) = "REDIS_UNAVAILABLE";
|
||||
$var(s28_reply_code) = 503;
|
||||
@@ -213,7 +221,13 @@ route[S28_INVITE] {
|
||||
$var(s28_callee_operator) = $(avp(s28_hotpath)[14]);
|
||||
$var(s28_callee_number_type) = $(avp(s28_hotpath)[15]);
|
||||
$var(s28_callee_province_code) = $(avp(s28_hotpath)[16]);
|
||||
$var(s28_callee_normalized) = $(avp(s28_hotpath)[17]);
|
||||
$var(s28_real_callee) = $(avp(s28_hotpath)[17]);
|
||||
$var(s28_raw_callee) = $(avp(s28_hotpath)[18]);
|
||||
$var(s28_business_prefix_id) = $(avp(s28_hotpath)[19]);
|
||||
$var(s28_business_prefix) = $(avp(s28_hotpath)[20]);
|
||||
$var(s28_landing_caller) = $(avp(s28_hotpath)[21]);
|
||||
$var(s28_landing_callee) = $(avp(s28_hotpath)[22]);
|
||||
$var(s28_callee_normalized) = $(avp(s28_hotpath)[23]);
|
||||
|
||||
if ($var(s28_decision) != "allow") {
|
||||
update_stat("s28_hotpath_reject_total", 1);
|
||||
@@ -223,6 +237,12 @@ route[S28_INVITE] {
|
||||
} else if ($var(s28_reason) == "NO_POLICY" || $var(s28_reason) == "NO_VENDOR_ROUTE" || $var(s28_reason) == "NO_VENDOR_ROUTE_REGION_BLOCKED" || $var(s28_reason) == "LINE_GROUP_MISSING" || $var(s28_reason) == "LINE_GROUP_DISABLED") {
|
||||
$var(s28_reply_code) = 503;
|
||||
$var(s28_reply_text) = "No Route Policy";
|
||||
} else if ($var(s28_reason) == "BUSINESS_PREFIX_NOT_MATCHED") {
|
||||
$var(s28_reply_code) = 404;
|
||||
$var(s28_reply_text) = "Business Prefix Not Matched";
|
||||
} else if ($var(s28_reason) == "CALLER_PREFIX_NOT_MATCHED") {
|
||||
$var(s28_reply_code) = 403;
|
||||
$var(s28_reply_text) = "Caller Prefix Not Matched";
|
||||
} else {
|
||||
$var(s28_reply_code) = 403;
|
||||
$var(s28_reply_text) = "Forbidden";
|
||||
@@ -251,7 +271,13 @@ route[S28_INVITE] {
|
||||
$dlg_val(s28_vendor_id) = $var(s28_vendor_id);
|
||||
$dlg_val(s28_vendor_gateway_id) = $var(s28_vendor_gateway_id);
|
||||
$dlg_val(s28_config_version) = $var(s28_config_version);
|
||||
$dlg_val(s28_callee) = $rU;
|
||||
$dlg_val(s28_callee) = $var(s28_real_callee);
|
||||
$dlg_val(s28_raw_callee) = $var(s28_raw_callee);
|
||||
$dlg_val(s28_business_prefix_id) = $var(s28_business_prefix_id);
|
||||
$dlg_val(s28_business_prefix) = $var(s28_business_prefix);
|
||||
$dlg_val(s28_landing_caller) = $var(s28_landing_caller);
|
||||
$dlg_val(s28_landing_callee) = $var(s28_landing_callee);
|
||||
$dlg_val(s28_callee_normalized) = $var(s28_callee_normalized);
|
||||
$dlg_val(s28_callee_city_code) = $var(s28_callee_city_code);
|
||||
$dlg_val(s28_callee_city_name) = $var(s28_callee_city_name);
|
||||
$dlg_val(s28_callee_province_name) = $var(s28_callee_province_name);
|
||||
@@ -272,7 +298,11 @@ route[S28_INVITE] {
|
||||
|
||||
record_route();
|
||||
$du = "sip:" + $var(s28_vendor_host) + ":" + $var(s28_vendor_port);
|
||||
$ru = "sip:" + $rU + "@" + $var(s28_vendor_host) + ":" + $var(s28_vendor_port);
|
||||
$var(s28_landing_from_uri) = "sip:" + $var(s28_landing_caller) + "@" + $var(s28_vendor_host);
|
||||
if ($var(s28_landing_caller) != $fU) {
|
||||
uac_replace_from("", "$var(s28_landing_from_uri)");
|
||||
}
|
||||
$ru = "sip:" + $var(s28_landing_callee) + "@" + $var(s28_vendor_host) + ":" + $var(s28_vendor_port);
|
||||
t_on_reply("S28_REPLY");
|
||||
|
||||
if (!t_relay()) {
|
||||
@@ -297,7 +327,7 @@ onreply_route[S28_REPLY] {
|
||||
route[S28_CDR_SUCCESS] {
|
||||
$var(s28_event_id) = "s28-ok-" + $Ts + "-" + $pp + "-" + $ci;
|
||||
$var(s28_idempotency_key) = $ci + ":s28-ok:" + $Ts;
|
||||
if (cache_raw_query("redis:s20", "XADD stream:cdr_payload * schema_version 1 event_id $var(s28_event_id) idempotency_key $var(s28_idempotency_key) call_id $ci node_id a1 opensips_instance opensips-a1 ingress_a_ip 100.90.90.90 rtpengine_node a1 source_ip $si caller $fU callee $dlg_val(s28_callee) callee_city_code $dlg_val(s28_callee_city_code) callee_city_name $dlg_val(s28_callee_city_name) callee_province_name $dlg_val(s28_callee_province_name) callee_operator $dlg_val(s28_callee_operator) callee_number_type $dlg_val(s28_callee_number_type) customer_id $dlg_val(s28_customer_id) customer_gateway_id $dlg_val(s28_gateway_id) customer_gateway_policy_id $dlg_val(s28_policy_id) vendor_id $dlg_val(s28_vendor_id) vendor_gateway_id $dlg_val(s28_vendor_gateway_id) line_group_id $dlg_val(s28_line_group_id) started_at $Ts answered_at $Ts ended_at $Ts duration_sec 6 sip_code 200 hangup_reason NORMAL_CLEARING recording_key none config_version $dlg_val(s28_config_version) created_at $Ts", "$avp(s28_cdr_id)")) {
|
||||
if (cache_raw_query("redis:s20", "XADD stream:cdr_payload * schema_version 1 event_id $var(s28_event_id) idempotency_key $var(s28_idempotency_key) call_id $ci node_id a1 opensips_instance opensips-a1 ingress_a_ip 100.90.90.90 rtpengine_node a1 source_ip $si caller $fU callee $dlg_val(s28_callee) raw_callee $dlg_val(s28_raw_callee) business_prefix_id $dlg_val(s28_business_prefix_id) business_prefix $dlg_val(s28_business_prefix) landing_caller $dlg_val(s28_landing_caller) landing_callee $dlg_val(s28_landing_callee) normalized_callee $dlg_val(s28_callee_normalized) callee_city_code $dlg_val(s28_callee_city_code) callee_city_name $dlg_val(s28_callee_city_name) callee_province_name $dlg_val(s28_callee_province_name) callee_operator $dlg_val(s28_callee_operator) callee_number_type $dlg_val(s28_callee_number_type) customer_id $dlg_val(s28_customer_id) customer_gateway_id $dlg_val(s28_gateway_id) customer_gateway_policy_id $dlg_val(s28_policy_id) vendor_id $dlg_val(s28_vendor_id) vendor_gateway_id $dlg_val(s28_vendor_gateway_id) line_group_id $dlg_val(s28_line_group_id) started_at $Ts answered_at $Ts ended_at $Ts duration_sec 6 sip_code 200 hangup_reason NORMAL_CLEARING recording_key none config_version $dlg_val(s28_config_version) created_at $Ts", "$avp(s28_cdr_id)")) {
|
||||
update_stat("s28_cdr_xadd_total", 1);
|
||||
xlog("L_INFO", "S28 success CDR XADD ok redis_id=$avp(s28_cdr_id) event_id=$var(s28_event_id) callid=$ci\n");
|
||||
} else {
|
||||
@@ -309,7 +339,7 @@ route[S28_CDR_SUCCESS] {
|
||||
route[S28_CDR_FAILURE] {
|
||||
$var(s28_event_id) = "s28-fail-" + $Ts + "-" + $pp + "-" + $ci;
|
||||
$var(s28_idempotency_key) = $ci + ":s28-fail:" + $Ts;
|
||||
if (cache_raw_query("redis:s20", "XADD stream:cdr_payload * schema_version 1 event_id $var(s28_event_id) idempotency_key $var(s28_idempotency_key) call_id $ci node_id a1 opensips_instance opensips-a1 ingress_a_ip 100.90.90.90 rtpengine_node a1 source_ip $si caller $fU callee $rU callee_city_code $var(s28_callee_city_code) callee_city_name $var(s28_callee_city_name) callee_province_name $var(s28_callee_province_name) callee_operator $var(s28_callee_operator) callee_number_type $var(s28_callee_number_type) customer_id $var(s28_customer_id) customer_gateway_id $var(s28_gateway_id) customer_gateway_policy_id $var(s28_policy_id) vendor_id none vendor_gateway_id none line_group_id $var(s28_line_group_id) started_at $Ts answered_at none ended_at $Ts duration_sec 0 sip_code $var(s28_reply_code) hangup_reason $var(s28_reason) recording_key none config_version $var(s28_config_version) created_at $Ts", "$avp(s28_cdr_id)")) {
|
||||
if (cache_raw_query("redis:s20", "XADD stream:cdr_payload * schema_version 1 event_id $var(s28_event_id) idempotency_key $var(s28_idempotency_key) call_id $ci node_id a1 opensips_instance opensips-a1 ingress_a_ip 100.90.90.90 rtpengine_node a1 source_ip $si caller $fU callee $var(s28_real_callee) raw_callee $var(s28_raw_callee) business_prefix_id $var(s28_business_prefix_id) business_prefix $var(s28_business_prefix) landing_caller $var(s28_landing_caller) landing_callee $var(s28_landing_callee) normalized_callee $var(s28_callee_normalized) callee_city_code $var(s28_callee_city_code) callee_city_name $var(s28_callee_city_name) callee_province_name $var(s28_callee_province_name) callee_operator $var(s28_callee_operator) callee_number_type $var(s28_callee_number_type) customer_id $var(s28_customer_id) customer_gateway_id $var(s28_gateway_id) customer_gateway_policy_id $var(s28_policy_id) vendor_id none vendor_gateway_id none line_group_id $var(s28_line_group_id) started_at $Ts answered_at none ended_at $Ts duration_sec 0 sip_code $var(s28_reply_code) hangup_reason $var(s28_reason) recording_key none config_version $var(s28_config_version) created_at $Ts", "$avp(s28_cdr_id)")) {
|
||||
update_stat("s28_cdr_xadd_total", 1);
|
||||
} else {
|
||||
update_stat("s28_cdr_xadd_error_total", 1);
|
||||
|
||||
Reference in New Issue
Block a user