diff --git a/lib/NGCP/Panel/Utils/Kamailio.pm b/lib/NGCP/Panel/Utils/Kamailio.pm index 18582ad712..772cd9ac46 100644 --- a/lib/NGCP/Panel/Utils/Kamailio.pm +++ b/lib/NGCP/Panel/Utils/Kamailio.pm @@ -40,6 +40,23 @@ EOF } +sub delete_location_by_aor { + my ($c, $aors) = @_; + + foreach my $aor (@$aors) { + my $ret = NGCP::Panel::Utils::XMLDispatcher::dispatch($c, "proxy-ng", 1, 1, < + +ul.rm + +location +$aor + + +EOF + } +} + sub create_location { my ($c, $prov_subscriber, $params) = @_; my($contact, $q, $expires, $flags, $cflags) = @$params{qw/contact q expires flags cflags/}; diff --git a/lib/NGCP/Panel/Utils/Subscriber.pm b/lib/NGCP/Panel/Utils/Subscriber.pm index 431311a8e5..fb9966cd2e 100644 --- a/lib/NGCP/Panel/Utils/Subscriber.pm +++ b/lib/NGCP/Panel/Utils/Subscriber.pm @@ -1664,6 +1664,7 @@ sub terminate { my $prov_subscriber = $subscriber->provisioning_voip_subscriber; my @events_to_create = (); + my @aors = (); my $aliases_before = NGCP::Panel::Utils::Events::get_aliases_snapshot( c => $c, schema => $schema, @@ -1704,6 +1705,16 @@ sub terminate { #} } if($prov_subscriber && !$prov_subscriber->is_pbx_pilot) { + my $devid_aliases = $prov_subscriber->voip_dbaliases->search( + { + is_devid => 1, + subscriber_id => $prov_subscriber->id + } + ); + foreach my $devid ($devid_aliases->all) { + push @aors, $devid->username . '@' . $devid->domain->domain; + } + my $pilot_rs = $schema->resultset('voip_subscribers')->search({ contract_id => $subscriber->contract_id, status => { '!=' => 'terminated' }, @@ -1749,7 +1760,6 @@ sub terminate { my $auth_prefs = {}; NGCP::Panel::Utils::Preferences::get_peer_auth_params($c, $prov_subscriber, $auth_prefs); NGCP::Panel::Utils::Preferences::update_sems_peer_auth($c, $prov_subscriber, $auth_prefs, {}); - NGCP::Panel::Utils::Kamailio::delete_location($c, $prov_subscriber); foreach my $pref(qw/allowed_ips_grp man_allowed_ips_grp/) { my $aig_rs = NGCP::Panel::Utils::Preferences::get_usr_preference_rs( c => $c, prov_subscriber => $prov_subscriber, attribute => $pref, @@ -1766,9 +1776,11 @@ sub terminate { ); #ready for number change events here + push @aors, $prov_subscriber->username . '@' . $prov_subscriber->domain->domain; $prov_subscriber->delete; } $subscriber->update({ status => 'terminated' }); + NGCP::Panel::Utils::Kamailio::delete_location_by_aor($c, \@aors); }); }