From b803c1ae3ec5a45b07178a851775d510e119ca33 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Mon, 24 Apr 2017 10:09:13 +0200 Subject: [PATCH] TT#11701 check existence of voip number in InterceptionDB Change-Id: I6a4af38dcdcbcfb6491d0bfd3d2a4b99f6a14112 --- lib/NGCP/Panel/Controller/API/Interceptions.pm | 11 ++++++++++- lib/NGCP/Panel/Role/API/Interceptions.pm | 12 +++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/NGCP/Panel/Controller/API/Interceptions.pm b/lib/NGCP/Panel/Controller/API/Interceptions.pm index ed7dfd82b0..13e725e9a4 100644 --- a/lib/NGCP/Panel/Controller/API/Interceptions.pm +++ b/lib/NGCP/Panel/Controller/API/Interceptions.pm @@ -185,10 +185,19 @@ sub POST :Allow { my $num_rs = $c->model('DB')->resultset('voip_numbers')->search( \[ 'concat(cc,ac,sn) = ?', [ {} => $resource->{number} ]] ); - unless($num_rs->first) { + if(not $num_rs->first) { $c->log->error("invalid number '$$resource{number}'"); $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number does not exist"); last; + } else { + my $intercept_num_rs = $c->model('InterceptDB')->resultset('voip_numbers')->search( + \[ 'concat(cc,ac,sn) = ?', [ {} => $resource->{number} ]] + ); + if(not $intercept_num_rs->first) { + $c->log->error("invalid local number '$$resource{number}'"); + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number does not exist locally"); + last; + } } # use the long way, since with ossbss provisioning, the reseller_id # is not set in this case diff --git a/lib/NGCP/Panel/Role/API/Interceptions.pm b/lib/NGCP/Panel/Role/API/Interceptions.pm index 4c47015f03..eeb09c321c 100644 --- a/lib/NGCP/Panel/Role/API/Interceptions.pm +++ b/lib/NGCP/Panel/Role/API/Interceptions.pm @@ -181,11 +181,21 @@ sub subresnum_from_number { my $num_rs = $c->model('DB')->resultset('voip_numbers')->search( \[ 'concat(cc,ac,sn) = ?', [ {} => $number ]] ); - unless($num_rs->first) { + if (not $num_rs->first) { $c->log->error("invalid number '$number'"); $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number does not exist"); return; + } else { + my $intercept_num_rs = $c->model('InterceptDB')->resultset('voip_numbers')->search( + \[ 'concat(cc,ac,sn) = ?', [ {} => $number ]] + ); + if(not $intercept_num_rs->first) { + $c->log->error("invalid local number '$number'"); + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number does not exist locally"); + return; + } } + my $sub = $num_rs->first->subscriber; unless($sub) { $c->log->error("invalid number '$number', not assigned to any subscriber");