MT#21775 tune the "username" interception regexp to tolerate vsc codes

Change-Id: Iddd57aa27c3110ee29b7ad887bec652e91af3d0c
changes/13/7713/2
Rene Krenn 10 years ago committed by Richard Fuchs
parent 11b82f1a6f
commit 7f4212adaa

@ -195,7 +195,7 @@ sub POST :Allow {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number is not active");
last;
}
$resource->{sip_username} = NGCP::Panel::Utils::Interception::username_to_regexp_pattern($num_rs->first,$sub->username);
$resource->{sip_username} = NGCP::Panel::Utils::Interception::username_to_regexp_pattern($c,$num_rs->first,$sub->username);
$resource->{sip_domain} = $sub->domain->domain;
if($resource->{x3_required} && (!defined $resource->{x3_host} || !defined $resource->{x3_port})) {
@ -227,7 +227,7 @@ sub POST :Allow {
liid => $resource->{liid},
uuid => $resource->{uuid},
number => $resource->{number},
sip_username => NGCP::Panel::Utils::Interception::username_to_regexp_pattern($num_rs->first,$sub->username),
sip_username => NGCP::Panel::Utils::Interception::username_to_regexp_pattern($c,$num_rs->first,$sub->username),
sip_domain => $sub->domain->domain,
delivery_host => $resource->{x2_host},
delivery_port => $resource->{x2_port},

@ -129,7 +129,7 @@ sub update_item {
return unless($sub && $reseller);
$resource->{reseller_id} = $reseller->id;
$resource->{sip_username} = NGCP::Panel::Utils::Interception::username_to_regexp_pattern($voip_number,$sub->username);
$resource->{sip_username} = NGCP::Panel::Utils::Interception::username_to_regexp_pattern($c,$voip_number,$sub->username);
$resource->{sip_domain} = $sub->domain->domain;
if($resource->{liid} && ($old_resource->{liid} ne $resource->{liid})) {
@ -157,7 +157,7 @@ sub update_item {
my $res = NGCP::Panel::Utils::Interception::request($c, 'PUT', $item->uuid, {
number => $resource->{number},
sip_username => NGCP::Panel::Utils::Interception::username_to_regexp_pattern($voip_number,$sub->username),
sip_username => NGCP::Panel::Utils::Interception::username_to_regexp_pattern($c,$voip_number,$sub->username),
sip_domain => $sub->domain->domain,
delivery_host => $resource->{delivery_host},
delivery_port => $resource->{delivery_port},

@ -84,15 +84,28 @@ sub _init {
sub username_to_regexp_pattern {
my ($voip_number,$username) = @_;
my ($c,$voip_number,$username) = @_;
# $c is intended to use $c->config vars here.
# vsc.clir_code is not part of the panel conf, so
# the global conf would be required to load to get it.
# as this is not done elsewhere in panel code yet, we leave
# that as todo for now, and capture any vsc codes.
my $vsc_pattern = '(\*\d+\*)?';
#my $vsc_pattern = '(\*31\*)?';
my @pattern_elements = ();
#1. "local format": concat(concat('0',ac),sn):
push(@pattern_elements,'0' . $voip_number->ac . $voip_number->sn);
#2. "e164 format": concat(cc,ac,sn):
push(@pattern_elements,$voip_number->cc . $voip_number->ac . $voip_number->sn);
#3. "international format": concat(concat('00',cc),ac,sn):
push(@pattern_elements,'00' . $voip_number->cc . $voip_number->ac . $voip_number->sn);
push(@pattern_elements,quotemeta($username));
# longest to shortest:
#1. the sip username itself:
push(@pattern_elements,$vsc_pattern . quotemeta($username));
#2. "international format": concat(concat('00',cc),ac,sn):
push(@pattern_elements,$vsc_pattern . '00' . $voip_number->cc . $voip_number->ac . $voip_number->sn);
#3. "e164 format": concat(cc,ac,sn):
push(@pattern_elements,$vsc_pattern . $voip_number->cc . $voip_number->ac . $voip_number->sn);
#4. "local format": concat(concat('0',ac),sn):
push(@pattern_elements,$vsc_pattern . '0' . $voip_number->ac . $voip_number->sn);
return '^(' . join('|',@pattern_elements) . ')$';
}

Loading…
Cancel
Save