From c5724239ded28df593eded2f2c637005f5bea5f3 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Mon, 11 Mar 2019 13:33:40 +0100 Subject: [PATCH] TT#54760 .ama exporter: chown/chmod settings Change-Id: If93d0e1b38ad035362d397fff3d14e83061ba4e3 (cherry picked from commit f301ad6f9f4de7381e9559c510de3f6944786585) --- .../Projects/Export/Ama/Ccs/settings.cfg | 7 +++++-- .../Export/Ama/Ccs/settings.debug.cfg | 7 +++++-- .../Projects/Export/Ama/Format/File.pm | 19 ++++++++++++++++++- .../Projects/Export/Ama/Format/Settings.pm | 12 ++++++++++++ 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.cfg b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.cfg index 878979c..d8f5f0d 100755 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.cfg +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.cfg @@ -15,6 +15,9 @@ export_cdr_rollover_fsn = 1 use_tempfiles = 1 make_dir = 1 ama_filename_format = %1$sP%3$02d%4$02d%5$02d%6$02d%7$02d%9$02dAMA%10$s +files_owner = +files_group = +files_mask = ama_max_blocks = 1000 @@ -22,5 +25,5 @@ ama_sensor_id = 438716 ama_recording_office_id = 438716 ama_incoming_trunk_group_number = 2999 ama_outgoing_trunk_group_number = 2014 -ama_originating_digits_cdr_field = source_user -ama_terminating_digits_cdr_field = destination_user +ama_originating_digits_cdr_field = source_cli +ama_terminating_digits_cdr_field = destination_user_in diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.debug.cfg b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.debug.cfg index 14537d6..b956387 100755 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.debug.cfg +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Ccs/settings.debug.cfg @@ -16,6 +16,9 @@ export_cdr_rollover_fsn = 1 use_tempfiles = 1 make_dir = 1 ama_filename_format = %1$sdebug/P%3$02d%4$02d%5$02d%6$02d%7$02d%9$02dAMA.debug%10$s +files_owner = +files_group = +files_mask = ama_max_blocks = 1000 @@ -23,5 +26,5 @@ ama_sensor_id = 438716 ama_recording_office_id = 438716 ama_incoming_trunk_group_number = 2999 ama_outgoing_trunk_group_number = 2014 -ama_originating_digits_cdr_field = source_user -ama_terminating_digits_cdr_field = destination_user \ No newline at end of file +ama_originating_digits_cdr_field = source_cli +ama_terminating_digits_cdr_field = destination_user_in \ No newline at end of file diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/File.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/File.pm index b1da455..06d0330 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/File.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/File.pm @@ -12,6 +12,9 @@ use NGCP::BulkProcessor::Projects::Export::Ama::Format::Settings qw( $tempfile_path $make_dir $ama_max_blocks + $files_owner + $files_group + $files_mask ); use NGCP::BulkProcessor::Projects::Export::Ama::Format::Block qw(); @@ -135,7 +138,9 @@ sub get_filesize { sub _rename { my $self = shift; my ($filename) = @_; - return rename($self->{tempfilename},$filename); + $filename = rename($self->{tempfilename},$filename); + _chownmod($filename,$files_owner,$files_group,oct(666),$files_mask); + return $filename; } sub _makedir { @@ -147,6 +152,18 @@ sub _makedir { } +sub _chownmod { + my ($file, $user, $group, $defmode, $mask) = @_; + + if ($user || $group) { + my @arg = (-1, -1, $file); + $user and ($arg[0] = (getpwnam($user) || -1)); + $group and ($arg[1] = (getgrnam($group) || -1)); + chown(@arg); + } + $mask and chmod($defmode & ~oct($mask), $file); +} + sub flush { my $self = shift; my %params = @_; diff --git a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Settings.pm b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Settings.pm index 411e143..fa9c052 100644 --- a/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Settings.pm +++ b/lib/NGCP/BulkProcessor/Projects/Export/Ama/Format/Settings.pm @@ -46,6 +46,10 @@ our @EXPORT_OK = qw( $use_tempfiles $ama_max_blocks + + $files_owner + $files_group + $files_mask ); our $output_path = $working_path . 'output/'; @@ -61,6 +65,10 @@ our $ama_max_blocks = 1000; our $make_dir = 0; our $ama_filename_format = '%1$sP%3$02d%4$02d%5$02d%6$02d%7$02d%9$02dAMA%10$s'; +our $files_owner = ''; +our $files_group = ''; +our $files_mask = ''; + sub update_settings { my ($data,$configfile) = @_; @@ -88,6 +96,10 @@ sub update_settings { $ama_max_blocks = $data->{ama_max_blocks} if exists $data->{ama_max_blocks}; + $files_owner = $data->{files_owner} if exists $data->{files_owner}; + $files_group = $data->{files_group} if exists $data->{files_group}; + $files_mask = $data->{files_mask} if exists $data->{files_mask}; + return $result; }