added cc_dial_prefix and ac_dial_prefix config options


			
			
				2.1@2833
			
			
		
Daniel Tiefnig 17 years ago
parent abc5ae8db1
commit ba6b44e5a2

@ -3,6 +3,8 @@
peering_features="1"
voicemail_features="1"
fax_features="1"
cc_dial_prefix="00"
ac_dial_prefix="0"
>
<subscriber extension_features="1"
audiofile_features="1"

@ -236,8 +236,9 @@ sub do_create_number : Local {
my %messages;
my %settings;
my $ccdp = $c->config->{cc_dial_prefix};
$settings{number} = $c->request->params->{number};
$settings{number} =~ s/^00//;
$settings{number} =~ s/^$ccdp//;
$settings{number} =~ s/^\+//;
$settings{lnp_provider_id} = $c->request->params->{lnp_provider_id};
$settings{start} = $c->request->params->{start}
@ -282,8 +283,9 @@ sub do_update_number : Local {
return;
}
my $ccdp = $c->config->{cc_dial_prefix};
$settings{number} = $c->request->params->{number};
$settings{number} =~ s/^00//;
$settings{number} =~ s/^$ccdp//;
$settings{number} =~ s/^\+//;
$settings{lnp_provider_id} = $c->request->params->{lnp_provider_id};
$settings{start} = $c->request->params->{start}

@ -737,20 +737,40 @@ sub update_preferences : Local {
$$preferences{clir} = $c->request->params->{clir} ? 1 : undef;
$$preferences{cc} = $c->request->params->{cc} || undef;
if(defined $$preferences{cc} and $$preferences{cc} !~ /^[1-9]\d*$/) {
$messages{cc} = 'Client.Voip.MalformedCc';
if(defined $$preferences{cc}) {
my $checkresult;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_cc',
$$preferences{cc}, \$checkresult
);
$messages{cc} = 'Client.Voip.MalformedCc'
unless $checkresult;
}
$$preferences{ac} = $c->request->params->{ac} || undef;
if(defined $$preferences{ac} and $$preferences{ac} !~ /^[1-9]\d*$/) {
$messages{ac} = 'Client.Voip.MalformedAc';
if(defined $$preferences{ac}) {
my $checkresult;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_ac',
$$preferences{ac}, \$checkresult
);
$messages{ac} = 'Client.Voip.MalformedAc'
unless $checkresult;
}
$$preferences{svc_ac} = $c->request->params->{svc_ac} || undef;
if(defined $$preferences{svc_ac} and $$preferences{svc_ac} !~ /^[1-9]\d*$/) {
$messages{svc_ac} = 'Client.Voip.MalformedAc';
if(defined $$preferences{svc_ac}) {
my $checkresult;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_ac',
$$preferences{svc_ac}, \$checkresult
);
$messages{svc_ac} = 'Client.Voip.MalformedAc'
unless $checkresult;
}
$$preferences{emerg_ac} = $c->request->params->{emerg_ac} || undef;
if(defined $$preferences{emerg_ac} and $$preferences{emerg_ac} !~ /^[1-9]\d*$/) {
$messages{emerg_ac} = 'Client.Voip.MalformedAc';
if(defined $$preferences{emerg_ac}) {
my $checkresult;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_ac',
$$preferences{emerg_ac}, \$checkresult
);
$messages{emerg_ac} = 'Client.Voip.MalformedAc'
unless $checkresult;
}
### malicious call trace ###
@ -981,13 +1001,17 @@ sub do_edit_list : Local {
my $add = $c->request->params->{block_add};
if(defined $add) {
if($add =~ /^\+?[?*0-9\[\]-]+$/) {
if($add =~ /^[1-9\[]/) {
$add =~ s/^/$c->session->{subscriber}{cc}.$c->session->{subscriber}{ac}/e;
} elsif($add =~ /^0[^0]/) {
$add =~ s/^0/$c->session->{subscriber}{cc}/e;
my $ccdp = $c->config->{cc_dial_prefix};
my $acdp = $c->config->{ac_dial_prefix};
if($add =~ /^\*/ or $add =~ /^\?/ or $add =~ /^\[/) {
# do nothing
} elsif($add =~ s/^\+// or $add =~ s/^$ccdp//) {
# nothing more to do
} elsif($add =~ s/^$acdp//) {
$add = $c->session->{subscriber}{cc} . $add;
} else {
$add = $c->session->{subscriber}{cc} . $c->session->{subscriber}{ac} . $add;
}
$add =~ s/^\+/00/;
$add =~ s/^00+//;
my $blocklist = $$preferences{$list};
$blocklist = [] unless defined $blocklist;
$blocklist = [ $blocklist ] unless ref $blocklist;
@ -1003,8 +1027,15 @@ sub do_edit_list : Local {
if(defined $del) {
my $blocklist = $$preferences{$list};
if(defined $blocklist) {
$del =~ s/^\+//;
$del =~ s/^0/$c->session->{subscriber}{cc}/e;
my $ccdp = $c->config->{cc_dial_prefix};
my $acdp = $c->config->{ac_dial_prefix};
if($del =~ /^\*/ or $del =~ /^\?/ or $del =~ /^\[/) {
# do nothing
} elsif($del =~ s/^\+// or $del =~ s/^$ccdp//) {
# nothing more to do
} elsif($del =~ s/^$acdp//) {
$del = $c->session->{subscriber}{cc} . $del;
}
$blocklist = [ $blocklist ] unless ref $blocklist;
if($c->request->params->{block_stat}) {
$$preferences{$list} = [ grep { $_ ne $del } @$blocklist ];
@ -1019,8 +1050,15 @@ sub do_edit_list : Local {
if(defined $act) {
my $blocklist = $$preferences{$list};
if(defined $blocklist) {
$act =~ s/^\+//;
$act =~ s/^0/$c->session->{subscriber}{cc}/e;
my $ccdp = $c->config->{cc_dial_prefix};
my $acdp = $c->config->{ac_dial_prefix};
if($act =~ /^\*/ or $act =~ /^\?/ or $act =~ /^\[/) {
# do nothing
} elsif($act =~ s/^\+// or $act =~ s/^$ccdp//) {
# nothing more to do
} elsif($act =~ s/^$acdp//) {
$act = $c->session->{subscriber}{cc} . $act;
}
$blocklist = [ $blocklist ] unless ref $blocklist;
if($c->request->params->{block_stat}) {
$$preferences{$list} = [ grep { $_ ne $act } @$blocklist ];

@ -107,12 +107,14 @@ sub get_contract_contact_form_fields {
sub get_qualified_number_for_subscriber {
my ($c, $number) = @_;
if($number =~ /^\+[1-9][0-9]+$/) {
} elsif($number =~ /^00[1-9][0-9]+$/) {
$number =~ s/^00/+/;
} elsif($number =~ /^0[1-9][0-9]+$/) {
$number =~ s/^0/'+'.$c->session->{subscriber}{cc}/e;
} elsif($number =~ /^[1-9][0-9]+$/) {
my $ccdp = $c->config->{cc_dial_prefix};
my $acdp = $c->config->{ac_dial_prefix};
if($number =~ /^\+/ or $number =~ s/^$ccdp/+/) {
# nothing more to do
} elsif($number =~ s/^$acdp//) {
$number = '+'. $c->session->{subscriber}{cc} . $number;
} else {
$number = '+' . $c->session->{subscriber}{cc} . $c->session->{subscriber}{ac} . $number;
}

Loading…
Cancel
Save