MT#18663 MT#20893 row bulk processing framework WIP

+dedicated '356' prefix for subscriber usernames
+add (reimplement) setting allowed_ips
 +WIP

Change-Id: If09b6841b7ed9abf7ea545c1f51ee9c494f40ffe
changes/67/7467/3
Rene Krenn 9 years ago
parent 0c667af245
commit 0332ec4fc3

@ -30,6 +30,7 @@ my $builder = Module::Build->new(
'URI::Escape' => 0,
'String::MkPasswd::mkpasswd' => 0,
#'List::Util' => 0,
'Data::Validate::IP' => 0,
'Config::Any' => 0,
'YAML::Tiny' => 0,

3
debian/control vendored

@ -26,7 +26,8 @@ Depends:
libtie-ixhash-perl,
libany-uri-escape-perl,
libstring-mkpasswd-perl,
libyaml-tiny-perl,
libdata-validate-ip-perl,
libyaml-tiny-perl,
liblog-log4perl-perl,
libmime-base64-perl,
libmime-lite-perl,

@ -30,7 +30,7 @@ use NGCP::BulkProcessor::LogError qw(
use YAML::Tiny qw();
use Config::Any qw();
use NGCP::BulkProcessor::Utils qw(format_number);
use NGCP::BulkProcessor::Utils qw(format_number trim);
require Exporter;
our @ISA = qw(Exporter);
@ -45,7 +45,7 @@ our @EXPORT_OK = qw(
my $tuplesplitpattern = join('|',(quotemeta(','),
quotemeta(';'),
quotemeta('/')
#quotemeta('/')
)
);
@ -154,7 +154,7 @@ sub _parse_config {
sub split_tuple {
my $token = shift;
return split(/$tuplesplitpattern/,$token);
return map { local $_ = $_; trim($_); } split(/$tuplesplitpattern/,$token);
}

@ -13,6 +13,7 @@ use NGCP::BulkProcessor::Projects::Migration::IPGallery::Settings qw(
$domain_name
$reseller_id
$subsciber_username_prefix
$set_call_forwards_multithreading
$set_call_forwards_numofthreads
@ -357,7 +358,7 @@ sub _reset_context {
my $userpassword = NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::UsernamePassword::findby_fqdn($context->{cli});
if (defined $userpassword) {
$context->{username} = $userpassword->{username};
$context->{username} = (defined $subsciber_username_prefix ? $subsciber_username_prefix : '') . $userpassword->{username};
$context->{password} = $userpassword->{password};
$context->{userpassworddelta} = $userpassword->{delta};
} else {

@ -13,6 +13,7 @@ use NGCP::BulkProcessor::Projects::Migration::IPGallery::Settings qw(
$domain_name
$reseller_id
$subsciber_username_prefix
$set_barring_profiles_multithreading
$set_barring_profiles_numofthreads
$barring_profiles
@ -20,6 +21,10 @@ use NGCP::BulkProcessor::Projects::Migration::IPGallery::Settings qw(
$set_peer_auth_multithreading
$set_peer_auth_numofthreads
$peer_auth_realm
$set_allowed_ips_multithreading
$set_allowed_ips_numofthreads
$allowed_ips
);
use NGCP::BulkProcessor::Logging qw (
@ -64,6 +69,9 @@ our @EXPORT_OK = qw(
set_peer_auth
set_peer_auth_batch
set_allowed_ips
set_allowed_ips_batch
clear_preferences
set_preference
@ -384,7 +392,7 @@ sub _reset_context {
my $userpassword = NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::UsernamePassword::findby_fqdn($context->{cli});
if (defined $userpassword) {
$context->{username} = $userpassword->{username};
$context->{username} = (defined $subsciber_username_prefix ? $subsciber_username_prefix : '') . $userpassword->{username};
$context->{password} = $userpassword->{password};
$context->{userpassworddelta} = $userpassword->{delta};
} else {
@ -680,6 +688,313 @@ sub _reset_set_peer_auth_context {
}
sub set_allowed_ips {
my ($mode) = @_;
my $static_context = { mode => $mode };
my $result = _set_allowed_ips_checks($static_context);
destroy_all_dbs();
my $warning_count :shared = 0;
return ($result && NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::Subscriber::process_records(
static_context => $static_context,
process_code => sub {
my ($context,$records,$row_offset) = @_;
my $rownum = $row_offset;
foreach my $imported_subscriber (@$records) {
$rownum++;
next unless _reset_set_allowed_ips_context($context,$imported_subscriber,$rownum);
_set_allowed_ips($context);
}
#return 0;
return 1;
},
init_process_context_code => sub {
my ($context)= @_;
$context->{db} = &get_xa_db();
$context->{error_count} = 0;
$context->{warning_count} = 0;
# below is not mandatory..
_check_insert_tables();
},
uninit_process_context_code => sub {
my ($context)= @_;
undef $context->{db};
destroy_all_dbs();
{
lock $warning_count;
$warning_count += $context->{warning_count};
}
},
load_recursive => 0,
multithreading => $set_allowed_ips_multithreading,
numofthreads => $set_allowed_ips_numofthreads,
),$warning_count);
}
sub set_allowed_ips_batch {
my ($mode) = @_;
my $static_context = { mode => $mode };
my $result = _set_allowed_ips_checks($static_context);
destroy_all_dbs();
my $warning_count :shared = 0;
return ($result && NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::Batch::process_records(
static_context => $static_context,
process_code => sub {
my ($context,$records,$row_offset) = @_;
my $rownum = $row_offset;
foreach my $record (@$records) {
$rownum++;
my $imported_subscriber = NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::Subscriber::findby_subscribernumber($record->{number});
if (defined $imported_subscriber) {
next unless _reset_set_allowed_ips_context($context,$imported_subscriber,$rownum);
_set_allowed_ips($context);
} else {
if ($skip_errors) {
_warn($context,'record ' . $rownum . ' - no subscriber record for batch number found: ' . $record->{number});
next;
} else {
_error($context,'record ' . $rownum . ' - no subscriber record for batch number found: ' . $record->{number});
}
}
}
#return 0;
return 1;
},
init_process_context_code => sub {
my ($context)= @_;
$context->{db} = &get_xa_db();
$context->{error_count} = 0;
$context->{warning_count} = 0;
# below is not mandatory..
_check_insert_tables();
},
uninit_process_context_code => sub {
my ($context)= @_;
undef $context->{db};
destroy_all_dbs();
{
lock $warning_count;
$warning_count += $context->{warning_count};
}
},
load_recursive => 0,
multithreading => $set_allowed_ips_multithreading,
numofthreads => $set_allowed_ips_numofthreads,
),$warning_count);
}
sub _set_allowed_ips {
my ($context) = @_;
_set_subscriber_preference($context,\&_set_allowed_ips_preferences);
}
sub _set_allowed_ips_checks {
my ($context) = @_;
my $result = _checks($context);
eval {
$context->{peer_auth_user_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_USER);
};
if ($@ or not defined $context->{peer_auth_user_attribute}) {
rowprocessingerror(threadid(),'cannot find peer_auth_user attribute',getlogger(__PACKAGE__));
$result = 0; #even in skip-error mode..
}
eval {
$context->{peer_auth_pass_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_PASS);
};
if ($@ or not defined $context->{peer_auth_pass_attribute}) {
rowprocessingerror(threadid(),'cannot find peer_auth_pass attribute',getlogger(__PACKAGE__));
$result = 0; #even in skip-error mode..
}
eval {
$context->{peer_auth_realm_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_REALM);
};
if ($@ or not defined $context->{peer_auth_realm_attribute}) {
rowprocessingerror(threadid(),'cannot find peer_auth_realm attribute',getlogger(__PACKAGE__));
$result = 0; #even in skip-error mode..
}
eval {
$context->{peer_auth_register_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_REGISTER);
};
if ($@ or not defined $context->{peer_auth_register_attribute}) {
rowprocessingerror(threadid(),'cannot find peer_auth_register attribute',getlogger(__PACKAGE__));
$result = 0; #even in skip-error mode..
}
eval {
$context->{force_inbound_calls_to_peer_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::FORCE_INBOUND_CALLS_TO_PEER);
};
if ($@ or not defined $context->{force_inbound_calls_to_peer_attribute}) {
rowprocessingerror(threadid(),'cannot find force_inbound_calls_to_peer attribute',getlogger(__PACKAGE__));
$result = 0; #even in skip-error mode..
}
#eval {
# $context->{force_outbound_calls_to_peer_attribute} = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
# $NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::FORCE_OUTBOUND_CALLS_TO_PEER);
#};
#if ($@ or not defined $context->{force_outbound_calls_to_peer_attribute}) {
# rowprocessingerror(threadid(),'cannot find force_outbound_calls_to_peer attribute',getlogger(__PACKAGE__));
# $result = 0; #even in skip-error mode..
#}
return $result;
}
sub _set_allowed_ips_preferences {
my ($context) = @_;
#if ($INIT_PEER_AUTH_MODE eq $context->{mode}) {
#
# $context->{peer_auth_user_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_user_attribute},$context->{username});
# $context->{peer_auth_pass_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_pass_attribute},$context->{password});
# $context->{peer_auth_realm_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_realm_attribute},$context->{realm});
#
# $context->{peer_auth_register_attribute_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_register_attribute},$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::FALSE);
# $context->{force_inbound_calls_to_peer_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{force_inbound_calls_to_peer_attribute},$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::TRUE);
#
# _info($context,"($context->{rownum}) " . $context->{mode} . ' peer authentication preferences for subscriber ' . $context->{cli},1);
#
#} elsif ($SWITCHOVER_PEER_AUTH_MODE eq $context->{mode}) {
#
# $context->{peer_auth_user_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_user_attribute},$context->{username});
# $context->{peer_auth_pass_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_pass_attribute},$context->{password});
# $context->{peer_auth_realm_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_realm_attribute},$context->{realm});
#
# $context->{peer_auth_register_attribute_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_register_attribute},$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::TRUE);
# $context->{force_inbound_calls_to_peer_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{force_inbound_calls_to_peer_attribute},$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::FALSE);
#
# _info($context,"($context->{rownum}) " . $context->{mode} . ' peer authentication preferences for subscriber ' . $context->{cli},1);
#
#} elsif ($CLEAR_PEER_AUTH_MODE eq $context->{mode}) {
#
# $context->{peer_auth_user_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_user_attribute},undef);
# $context->{peer_auth_pass_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_pass_attribute},undef);
# $context->{peer_auth_realm_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_realm_attribute},undef);
#
# $context->{peer_auth_register_attribute_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{peer_auth_register_attribute},undef);
# $context->{force_inbound_calls_to_peer_preference_id} = set_preference($context,$context->{provisioning_voip_subscriber}->{id},
# $context->{force_inbound_calls_to_peer_attribute},undef);
#
# _info($context,"($context->{rownum}) " . $context->{mode} . ' peer authentication preferences for subscriber ' . $context->{cli},1);
#
#}
}
sub _reset_set_allowed_ips_context {
my ($context,$imported_subscriber,$rownum) = @_;
my $result = _reset_context($context,$imported_subscriber,$rownum);
$context->{realm} = $peer_auth_realm;
#$context->{mode} = $mode;
delete $context->{peer_auth_user_preference_id};
delete $context->{peer_auth_pass_preference_id};
delete $context->{peer_auth_realm_preference_id};
delete $context->{peer_auth_register_attribute_preference_id};
delete $context->{force_inbound_calls_to_peer_preference_id};
return $result;
}

@ -14,6 +14,7 @@ use NGCP::BulkProcessor::Projects::Migration::IPGallery::Settings qw(
$reseller_id
$domain_name
$subsciber_username_prefix
$billing_profile_id
$contact_email_format
$webpassword_length
@ -565,7 +566,7 @@ sub _reset_context {
my $userpassword = NGCP::BulkProcessor::Projects::Migration::IPGallery::Dao::import::UsernamePassword::findby_fqdn($context->{cli});
if (defined $userpassword) {
$context->{username} = $userpassword->{username};
$context->{username} = (defined $subsciber_username_prefix ? $subsciber_username_prefix : '') . $userpassword->{username};
$context->{password} = $userpassword->{password};
$context->{userpassworddelta} = $userpassword->{delta};
} else {

@ -26,7 +26,7 @@ use NGCP::BulkProcessor::LoadConfig qw(
split_tuple
parse_regexp
);
use NGCP::BulkProcessor::Utils qw(format_number prompt);
use NGCP::BulkProcessor::Utils qw(format_number check_ipnet prompt);
require Exporter;
our @ISA = qw(Exporter);
@ -81,6 +81,7 @@ our @EXPORT_OK = qw(
$reseller_id
$domain_name
$subsciber_username_prefix
$billing_profile_id
$contact_email_format
$webpassword_length
@ -98,6 +99,10 @@ our @EXPORT_OK = qw(
$set_peer_auth_numofthreads
$peer_auth_realm
$set_allowed_ips_multithreading
$set_allowed_ips_numofthreads
$allowed_ips
$set_call_forwards_multithreading
$set_call_forwards_numofthreads
$cfb_priorities
@ -165,6 +170,7 @@ our $billing_profile_id = undef; #1
our $contact_email_format = undef; #%s@melita.mt
our $webpassword_length = undef;
our $generate_webpassword = 1;
our $subsciber_username_prefix = undef;
our $provision_subscriber_multithreading = $enablemultithreading;
our $provision_subscriber_numofthreads = $cpucount;
@ -178,6 +184,10 @@ our $set_peer_auth_multithreading = $enablemultithreading;
our $set_peer_auth_numofthreads = $cpucount;
our $peer_auth_realm = undef;
our $set_allowed_ips_multithreading = $enablemultithreading;
our $set_allowed_ips_numofthreads = $cpucount;
our $allowed_ips = [];
our $set_call_forwards_multithreading = $enablemultithreading;
our $set_call_forwards_numofthreads = $cpucount;
our $cfb_priorities = [];
@ -256,6 +266,7 @@ sub update_settings {
$result = 0;
}
$generate_webpassword = $data->{generate_webpassword} if exists $data->{generate_webpassword};
$subsciber_username_prefix = $data->{subsciber_username_prefix} if exists $data->{subsciber_username_prefix};
$provision_subscriber_multithreading = $data->{provision_subscriber_multithreading} if exists $data->{provision_subscriber_multithreading};
$provision_subscriber_numofthreads = _get_import_numofthreads($cpucount,$data,'provision_subscriber_numofthreads');
@ -268,6 +279,16 @@ sub update_settings {
$set_peer_auth_numofthreads = _get_import_numofthreads($cpucount,$data,'set_peer_auth_numofthreads');
$peer_auth_realm = $data->{peer_auth_realm} if exists $data->{peer_auth_realm};
$set_allowed_ips_multithreading = $data->{set_peer_auth_multithreading} if exists $data->{set_allowed_ips_multithreading};
$set_allowed_ips_numofthreads = _get_import_numofthreads($cpucount,$data,'set_allowed_ips_numofthreads');
$allowed_ips = [ split_tuple($data->{allowed_ips}) ] if exists $data->{allowed_ips};
foreach my $ipnet (@$allowed_ips) {
if (not check_ipnet($ipnet)) {
configurationerror($configfile,"invalid allowed_ip '$ipnet'",getlogger(__PACKAGE__));
$result = 0;
}
}
$set_call_forwards_multithreading = $data->{set_call_forwards_multithreading} if exists $data->{set_call_forwards_multithreading};
$set_call_forwards_numofthreads = _get_import_numofthreads($cpucount,$data,'set_call_forwards_numofthreads');
$cfb_priorities = [ split_tuple($data->{cfb_priorities}) ] if exists $data->{cfb_priorities};

@ -109,6 +109,9 @@ use NGCP::BulkProcessor::Projects::Migration::IPGallery::Preferences qw(
set_peer_auth
set_peer_auth_batch
set_allowed_ips
set_allowed_ips_batch
$INIT_PEER_AUTH_MODE
$SWITCHOVER_PEER_AUTH_MODE
$CLEAR_PEER_AUTH_MODE
@ -177,6 +180,9 @@ push(@TASK_OPTS,$switchover_peer_auth_task_opt);
my $clear_peer_auth_task_opt = 'clear_peer_auth';
push(@TASK_OPTS,$clear_peer_auth_task_opt);
#my $set_allowed_ips_task_opt = 'set_allowed_ips';
#push(@TASK_OPTS,$set_allowed_ips_task_opt);
my $set_call_forwards_task_opt = 'set_call_forwards';
push(@TASK_OPTS,$set_call_forwards_task_opt);
@ -295,6 +301,13 @@ sub main() {
$completion |= 1;
}
#} elsif (lc($set_allowed_ips_task_opt) eq lc($task)) {
# if (taskinfo($set_allowed_ips_task_opt,$result,1) and ($result = batchinfo($result))) {
# next unless check_dry();
# $result &= set_allowed_ips_task(\@messages);
# $completion |= 1;
# }
} elsif (lc($set_call_forwards_task_opt) eq lc($task)) {
if (taskinfo($set_call_forwards_task_opt,$result,1) and ($result = batchinfo($result))) {
next unless check_dry();
@ -424,7 +437,7 @@ sub cleanup_task {
sub import_features_define_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = import_features_define($features_define_filename);
};
@ -502,7 +515,7 @@ sub import_truncate_features_task {
sub import_subscriber_define_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = import_subscriber_define($subscriber_define_filename);
};
@ -560,7 +573,7 @@ sub import_truncate_subscriber_task {
sub import_lnp_define_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = import_lnp_define($lnp_define_filename);
};
@ -625,7 +638,7 @@ sub import_truncate_lnp_task {
sub import_user_password_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = import_user_password($user_password_filename);
};
@ -688,7 +701,7 @@ sub import_truncate_user_password_task {
sub import_batch_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = import_batch($batch_filename);
};
@ -749,7 +762,7 @@ sub import_truncate_batch_task {
sub provision_subscriber_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
if ($batch) {
($result,$warning_count) = provision_subscribers_batch();
@ -801,7 +814,7 @@ sub provision_subscriber_task {
sub set_barring_profiles_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
if ($batch) {
($result,$warning_count) = set_barring_profiles_batch();
@ -843,7 +856,7 @@ sub set_barring_profiles_task {
sub set_peer_auth_task {
my ($messages,$mode) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
if ($batch) {
($result,$warning_count) = set_peer_auth_batch($mode);
@ -886,18 +899,71 @@ sub set_peer_auth_task {
push(@$messages,"$mode subscribers\' peer auth preference INCOMPLETE$stats");
} else {
push(@$messages,"$mode subscribers\' peer auth preference completed$stats");
push(@$messages,"YOU MIGHT WANT TO RESTART SEMS NOW ...");
if (not $dry) {
push(@$messages,"YOU MIGHT WANT TO RESTART SEMS NOW ...");
}
}
destroy_all_dbs(); #every task should leave with closed connections.
return $result;
}
sub set_allowed_ips_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0);
eval {
if ($batch) {
($result,$warning_count) = set_allowed_ips_batch();
} else {
($result,$warning_count) = set_allowed_ips();
}
};
my $err = $@;
my $stats = ($skip_errors ? ": $warning_count warnings" : '');
eval {
my $peer_auth_user_attribute = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_USER);
my $peer_auth_pass_attribute = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_PASS);
my $peer_auth_realm_attribute = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_REALM);
my $peer_auth_register_attribute = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::PEER_AUTH_REGISTER);
my $force_inbound_calls_to_peer_attribute = NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::findby_attribute(
$NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_preferences::FORCE_INBOUND_CALLS_TO_PEER);
$stats .= "\n " . $peer_auth_user_attribute->{attribute} . "': " .
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::countby_subscriberid_attributeid_value(undef,
$peer_auth_user_attribute->{id},undef) . ' rows';
$stats .= "\n " . $peer_auth_pass_attribute->{attribute} . "': " .
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::countby_subscriberid_attributeid_value(undef,
$peer_auth_pass_attribute->{id},undef) . ' rows';
$stats .= "\n " . $peer_auth_realm_attribute->{attribute} . "': " .
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::countby_subscriberid_attributeid_value(undef,
$peer_auth_realm_attribute->{id},undef) . ' rows';
$stats .= "\n " . $peer_auth_register_attribute->{attribute} . "': " .
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::countby_subscriberid_attributeid_value(undef,
$peer_auth_register_attribute->{id},undef) . ' rows';
$stats .= "\n " . $force_inbound_calls_to_peer_attribute->{attribute} . "': " .
NGCP::BulkProcessor::Dao::Trunk::provisioning::voip_usr_preferences::countby_subscriberid_attributeid_value(undef,
$force_inbound_calls_to_peer_attribute->{id},undef) . ' rows';
};
if ($err or !$result) {
push(@$messages,"set subscribers\' allowed_ips preference INCOMPLETE$stats");
} else {
push(@$messages,"set subscribers\' allowed_ips preference completed$stats");
}
destroy_all_dbs(); #every task should leave with closed connections.
return $result;
}
sub set_call_forwards_task {
my ($messages,$mode) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
if ($batch) {
($result,$warning_count) = set_call_forwards_batch($mode);
@ -937,7 +1003,7 @@ sub set_call_forwards_task {
sub create_lnps_task {
my ($messages) = @_;
my ($result,$warning_count) = (0,0,0);
my ($result,$warning_count) = (0,0);
eval {
($result,$warning_count) = create_lnps();
};

@ -33,6 +33,7 @@ generate_webpassword = 1
webpassword_length = 8
provision_subscriber_multithreading = 1
#provision_subscriber_numofthreads = 6
subsciber_username_prefix = 356
set_barring_profiles_multithreading = 1
#set_barring_profiles_numofthreads = 6
@ -42,6 +43,10 @@ set_peer_auth_multithreading = 1
#set_peer_auth_numofthreads = 6
peer_auth_realm = myrealm
set_allowed_ips_multithreading = 1
#set_allowed_ips_numofthreads = 6
allowed_ips=127.0.0.1/24
set_call_forwards_multithreading = 1
#set_call_forwards_numofthreads = 6
cfb_priorities =

@ -12,6 +12,8 @@ setlocale(LC_NUMERIC, 'C');
use Data::UUID qw();
use UUID qw();
use Data::Validate::IP qw(is_ipv4 is_ipv6);
use Net::Address::IP::Local qw();
#use FindBin qw($Bin);
#use File::Spec::Functions qw(splitdir catdir);
@ -101,6 +103,8 @@ our @EXPORT_OK = qw(
$chmod_umask
prompt
check_int
check_ipnet
);
our $chmod_umask = 0644;
@ -851,4 +855,31 @@ sub prompt {
return $answer;
}
sub check_ipnet {
my ($ipnet) = @_;
my ($ip, $net) = split(/\//,$ipnet);
if (is_ipv4($ip)) {
if (defined $net) {
return check_int($net) && $net >= 0 && $net <= 32;
} else {
return 1;
}
} elsif (is_ipv6($ip)) {
if (defined $net) {
return check_int($net) && $net >= 0 && $net <= 128;
} else {
return 1;
}
}
return 0;
}
sub check_int {
my $val = shift;
if($val =~ /^[+-]?[0-9]+$/) {
return 1;
}
return 0;
}
1;

Loading…
Cancel
Save