From d67c4b19bb57161c692785d3fec9af34b8721692 Mon Sep 17 00:00:00 2001 From: qgarnier Date: Mon, 10 Jan 2022 09:18:29 +0100 Subject: [PATCH] fix(office365): mode site-usage - add --use-pseudonymize option (#3390) --- .../office365/sharepoint/mode/listsites.pm | 44 ++++++++----- .../office365/sharepoint/mode/siteusage.pm | 65 +++++++++---------- 2 files changed, 61 insertions(+), 48 deletions(-) diff --git a/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/listsites.pm b/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/listsites.pm index eeb2c7fba..a8bfdbae6 100644 --- a/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/listsites.pm +++ b/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/listsites.pm @@ -30,12 +30,12 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $options{options}->add_options(arguments => - { - "filter-url:s" => { name => 'filter_url' }, - "filter-id:s" => { name => 'filter_id' }, - }); - + $options{options}->add_options(arguments => { + 'filter-url:s' => { name => 'filter_url' }, + 'filter-id:s' => { name => 'filter_id' }, + 'use-pseudonymize:s' => { name => 'use_pseudonymize' } + }); + return $self; } @@ -48,8 +48,12 @@ sub manage_selection { my ($self, %options) = @_; my $results = $options{custom}->office_get_sharepoint_site_usage(param => "period='D7'"); + foreach my $site (@$results) { + if ($site->{'Site URL'} !~ /^(https|http):/ && !defined($self->{option_results}->{use_pseudonymize})) { + $self->{output}->add_option_msg(short_msg => "reports pseudonymize user-level information is enabled. use option --use-pseudonymize or disable it"); + $self->{output}->option_exit(); + } - foreach my $site (@{$results}) { if (defined($self->{option_results}->{filter_url}) && $self->{option_results}->{filter_url} ne '' && $site->{'Site URL'} !~ /$self->{option_results}->{filter_url}/) { $self->{output}->output_add(long_msg => "skipping '" . $site->{'Site URL'} . "': no matching filter name.", debug => 1); @@ -61,9 +65,9 @@ sub manage_selection { next; } - $self->{sites}->{$site->{'Site Id'}} = { + $self->{sites}->{ $site->{'Site Id'} } = { id => $site->{'Site Id'}, - url => $site->{'Site URL'}, + url => $site->{'Site URL'} } } } @@ -73,13 +77,19 @@ sub run { $self->manage_selection(%options); foreach my $site (sort keys %{$self->{sites}}) { - $self->{output}->output_add(long_msg => sprintf("[id = %s] [url = %s]", - $self->{sites}->{$site}->{id}, - $self->{sites}->{$site}->{url})); + $self->{output}->output_add( + long_msg => sprintf( + "[id: %s] [url: %s]", + $self->{sites}->{$site}->{id}, + $self->{sites}->{$site}->{url} + ) + ); } - $self->{output}->output_add(severity => 'OK', - short_msg => 'List sites:'); + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List sites:' + ); $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); $self->{output}->exit(); } @@ -97,7 +107,7 @@ sub disco_show { foreach my $site (sort keys %{$self->{sites}}) { $self->{output}->add_disco_entry( id => $self->{sites}->{$site}->{id}, - url => $self->{sites}->{$site}->{url}, + url => $self->{sites}->{$site}->{url} ); } } @@ -117,6 +127,10 @@ List sites. Filter sites. Can be: 'url', 'id' (can be a regexp). +=item B<--use-pseudonymize> + +Use pseudonymize user-level information. + =back =cut diff --git a/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/siteusage.pm b/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/siteusage.pm index ed2a5129d..f1ee08cb5 100644 --- a/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/siteusage.pm +++ b/centreon-plugins/cloud/microsoft/office365/sharepoint/mode/siteusage.pm @@ -306,11 +306,12 @@ sub new { bless $self, $class; $options{options}->add_options(arguments => { - 'filter-url:s' => { name => 'filter_url' }, - 'filter-id:s' => { name => 'filter_id' }, - 'units:s' => { name => 'units', default => '%' }, - 'free' => { name => 'free' }, - 'filter-counters:s' => { name => 'filter_counters', default => 'active-sites|total' } + 'filter-url:s' => { name => 'filter_url' }, + 'filter-id:s' => { name => 'filter_id' }, + 'use-pseudonymize:s' => { name => 'use_pseudonymize' } + 'units:s' => { name => 'units', default => '%' }, + 'free' => { name => 'free' }, + 'filter-counters:s' => { name => 'filter_counters', default => 'active-sites|total' } }); return $self; @@ -318,7 +319,7 @@ sub new { sub manage_selection { my ($self, %options) = @_; - + $self->{active} = { active => 0, total => 0, report_date => '' }; $self->{global} = { storage_used_active => 0, storage_used_inactive => 0, @@ -335,6 +336,11 @@ sub manage_selection { } foreach my $site (@{$results}, @{$results_daily}) { + if ($site->{'Site URL'} !~ /^(https|http):/ && !defined($self->{option_results}->{use_pseudonymize})) { + $self->{output}->add_option_msg(short_msg => "reports pseudonymize user-level information is enabled. use option --use-pseudonymize or disable it"); + $self->{output}->option_exit(); + } + if (defined($self->{option_results}->{filter_url}) && $self->{option_results}->{filter_url} ne '' && $site->{'Site URL'} !~ /$self->{option_results}->{filter_url}/) { $self->{output}->output_add(long_msg => "skipping '" . $site->{'Site URL'} . "': no matching filter name.", debug => 1); @@ -389,39 +395,32 @@ https://docs.microsoft.com/en-us/microsoft-365/admin/activity-reports/sharepoint =over 8 -=item B<--filter-*> - -Filter sites. -Can be: 'url', 'id' (can be a regexp). - -=item B<--warning-*> - -Threshold warning. -Can be: 'active-sites', -'total-usage-active' (count), 'total-usage-inactive' (count), -'total-file-count-active' (count), 'total-file-count-inactive' (count), -'total-active-file-count' (count), 'total-visited-page-count' (count), -'total-page-view-count' (count), -'usage' (count), 'file-count' (count), 'active-file-count' (count), -'visited-page-count' (count), 'page-view-count' (count). - -=item B<--critical-*> - -Threshold critical. -Can be: 'active-sites', -'total-usage-active' (count), 'total-usage-inactive' (count), -'total-file-count-active' (count), 'total-file-count-inactive' (count), -'total-active-file-count' (count), 'total-visited-page-count' (count), -'total-page-view-count' (count), -'usage' (count), 'file-count' (count), 'active-file-count' (count), -'visited-page-count' (count), 'page-view-count' (count). - =item B<--filter-counters> Only display some counters (regexp can be used). Example to hide per user counters: --filter-counters='active-sites|total' (Default: 'active-sites|total') +=item B<--filter-*> + +Filter sites. +Can be: 'url', 'id' (can be a regexp). + +=item B<--use-pseudonymize> + +Use pseudonymize user-level information. + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'active-sites', +'total-usage-active' (count), 'total-usage-inactive' (count), +'total-file-count-active' (count), 'total-file-count-inactive' (count), +'total-active-file-count' (count), 'total-visited-page-count' (count), +'total-page-view-count' (count), +'usage' (count), 'file-count' (count), 'active-file-count' (count), +'visited-page-count' (count), 'page-view-count' (count). + =item B<--units> Unit of thresholds (Default: '%') ('%', 'count').