diff --git a/ngcp/ngcp.lua b/ngcp/ngcp.lua index 18e8caa..a8fef7a 100644 --- a/ngcp/ngcp.lua +++ b/ngcp/ngcp.lua @@ -170,7 +170,55 @@ NGCP_MT = { __index = NGCP } {"caller_sst_refresh_method", "sst_refresh_method"} } }, - callee_usr_load = {} + callee_usr_load = { + callee_usr_prefs = { + {"callee_account_id", "account_id"}, + {"callee_cc", "cc"}, + {"callee_ac", "ac"}, + {"callee_cfu", "cfu"}, + {"callee_cfna", "cfna"}, + {"callee_cfb", "cfb"}, + {"callee_cft", "cft"}, + {"callee_ringtimeout", "ringtimeout"}, + {"callee_lock", "lock"}, + {"callee_e164_to_ruri", "e164_to_ruri"}, + {"callee_block_in_mode", "block_in_mode"}, + {"callee_block_in_list", "block_in_list"}, + {"callee_block_in_clir", "block_in_clir"}, + {"callee_adm_block_in_mode", "adm_block_in_mode"}, + {"callee_adm_block_in_list", "adm_block_in_list"}, + {"callee_adm_block_in_clir", "adm_block_in_clir"}, + {"callee_ext_subscriber_id", "ext_subscriber_id"}, + {"callee_ext_contract_id", "ext_contract_id"}, + {"callee_peer_auth_user", "peer_auth_user"}, + {"callee_peer_auth_pass", "peer_auth_pass"}, + {"callee_peer_auth_realm", "peer_auth_realm"}, + {"concurrent_max_out"}, + {"concurrent_max_out_per_account"}, + {"callee_prepaid", "prepaid"}, + }, + callee_real_prefs = { + {"callee_force_inbound_calls_to_peer", "force_inbound_calls_to_peer"}, + {"callee_concurrent_max", "concurrent_max"}, + {"callee_concurrent_max_per_account", "concurrent_max_per_account"}, + {"callee_sound_set", "sound_set"}, + {"callee_use_rtpproxy", "usr_rtpproxy"}, + {"callee_ipv46_for_rtpproxy", "ipv46_for_rtpproxy"}, + {"callee_outbound_from_user", "outbound_from_user"}, + {"callee_outbound_from_display", "outbound_from_display"}, + {"callee_outbound_pai_user", "outbound_pai_user"}, + {"callee_outbound_ppi_user", "outbound_ppi_user"}, + {"callee_outbound_diversion", "outbound_diversion"}, + {"rewrite_caller_out_dpid", "rewrite_caller_out_dpid"}, + {"rewrite_callee_out_dpid", "rewrite_callee_out_dpid"}, + {"callee_sst_enable", "sst_enable"}, + {"callee_sst_expires", "sst_expires"}, + {"callee_sst_min_timer", "sst_min_timer"}, + {"callee_sst_max_timer", "sst_max_timer"}, + {"callee_sst_refresh_method", "sst_refresh_method"}, + {"callee_mobile_push_enable", "mobile_push_enable"}, + } + } } return t end @@ -266,6 +314,11 @@ NGCP_MT = { __index = NGCP } end self.prefs.real:callee_usr_load(unique_keys) self:_set_vars("callee_usr_load") + + -- if 0 => use dom pref if not 0 + NGCP._set_dom_priority("callee_concurrent_max", xavp, "concurrent_max") + NGCP._set_dom_priority("callee_concurrent_max_per_account", xavp, "concurrent_max_per_account") + return unique_keys end diff --git a/tests/ngcp.lua b/tests/ngcp.lua index 1f62e2c..4dd1321 100644 --- a/tests/ngcp.lua +++ b/tests/ngcp.lua @@ -79,10 +79,6 @@ TestNGCP = {} --class assertEquals(self.ngcp:caller_usr_load(), {}) end - function TestNGCP:test_callee_usr_load_empty() - assertEquals(self.ngcp:callee_usr_load(), {}) - end - function TestNGCP:test_caller_usr_load() local c = self.ngcp.config env:connect(c.db_database, c.db_username, c.db_pass, c.db_host, c.db_port) ;mc :returns(self.con) @@ -113,6 +109,40 @@ TestNGCP = {} --class assertEquals(sr.pv.get("$avp(caller_sst_refresh_method)"), "UPDATE_FALLBACK_INVITE") end + function TestNGCP:test_callee_usr_load_empty() + assertEquals(self.ngcp:callee_usr_load(), {}) + end + + function TestNGCP:test_callee_usr_load() + local c = self.ngcp.config + env:connect(c.db_database, c.db_username, c.db_pass, c.db_host, c.db_port) ;mc :returns(self.con) + self.con:execute("SELECT * FROM dom_preferences WHERE domain ='192.168.51.56'") ;mc :returns(self.cur) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.dp_vars:val("d_192_168_51_56")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.dp_vars:val("d_192_168_51_56")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(nil) + self.cur:close() + self.con:close() + env:connect(c.db_database, c.db_username, c.db_pass, c.db_host, c.db_port) ;mc :returns(self.con) + self.con:execute("SELECT * FROM usr_preferences WHERE uuid ='ae736f72-21d1-4ea6-a3ea-4d7f56b3887c'") ;mc :returns(self.cur) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.up_vars:val("ae736f72_21d1_4ea6_a3ea_4d7f56b3887c")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.up_vars:val("ae736f72_21d1_4ea6_a3ea_4d7f56b3887c")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.up_vars:val("ae736f72_21d1_4ea6_a3ea_4d7f56b3887c")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(self.up_vars:val("ae736f72_21d1_4ea6_a3ea_4d7f56b3887c")) + self.cur:fetch(mc.ANYARGS) ;mc :returns(nil) + self.cur:close() + self.con:close() + + mc:replay() + local keys = self.ngcp:callee_usr_load("ae736f72-21d1-4ea6-a3ea-4d7f56b3887c", "192.168.51.56") + mc:verify() + + assertEquals(sr.pv.get("$xavp(callee_usr_prefs=>dummy)"), "callee") + assertEquals(sr.pv.get("$xavp(callee_real_prefs=>sst_enable)"), "no") + assertEquals(sr.pv.get("$avp(callee_sst_enable)"), "no") + assertEquals(sr.pv.get("$xavp(callee_real_prefs=>sst_refresh_method)"), "UPDATE_FALLBACK_INVITE") + assertEquals(sr.pv.get("$avp(callee_sst_refresh_method)"), "UPDATE_FALLBACK_INVITE") + end + function TestNGCP:test_caller_peer_load_empty() assertEquals(self.ngcp:caller_peer_load(), {}) end @@ -249,7 +279,7 @@ TestNGCP = {} --class self.ngcp:clean("callee", v) assertEquals(sr.pv.get(string.format("$xavp(callee_%s_prefs=>dummy)", v)), "callee") end - assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),'foofighters') + assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),nil) assertError(self.ngcp.clean, self.ngcp, "callee", "whatever") end