#!/usr/bin/perl -w use strict; use esmith::AccountsDB; use esmith::ConfigDB; my $a = esmith::AccountsDB->open_ro() || die "Couldn't open the accounts database"; my $c = esmith::ConfigDB->open_ro() || die "Couldn't open the configuration database"; sub uniq { my %seen; grep !$seen{$_}++, @_; } print "\n" . '^ Dossiers partagés ^ Accès en écriture ^ Accès en lecture seule ^' . "\n"; # Pour chaques Share Folder : foreach my $share ($a->get_all_by_prop(type => 'share')) { my $name = $share->key; my $wu = $share->prop('WriteUsers'); my $wg = $share->prop('WriteGroups'); my $ru = $share->prop('ReadUsers'); my $rg = $share->prop('ReadGroups'); my @list_rw; my @list_ro; # Pour chaque groupe ayant un accès RW : foreach my $wgroup (split(/,/, $wg)) { my $rec_wg = $a->get($wgroup); my $wg_members = $rec_wg->prop('Members'); my @acces_members_rw = split(/,/, $wg_members); # Coloration en gris des comptes verrouillés : foreach my $user_rw (@acces_members_rw) { my $urw = $a->get($user_rw); my $lock_rw = $urw->prop('PasswordSet'); if ($lock_rw eq 'no') { # Injection des utilisateurs verrouillés des groupes RW dans la liste : push @list_rw, "" . $user_rw . ""; } else { # Injection des utilisateurs actifs des groupes RW dans la liste : push @list_rw, $user_rw; } } } # Pour chaque utilisateur ayant un accès RW : foreach (split(/,/, $wu)) { my @acces_members_rw = split(/,/, $wu); # Coloration en gris des comptes verrouillés : foreach my $user_rw (@acces_members_rw) { my $urw = $a->get($user_rw); my $lock_rw = $urw->prop('PasswordSet'); if ($lock_rw eq 'no') { # Injection des utilisateurs verrouillés des groupes RW dans la liste : push @list_rw, "" . $user_rw . ""; } else { # Injection des utilisateurs actifs des groupes RW dans la liste : push @list_rw, $user_rw; } } } # Pour chaque groupe ayant un accès RO : foreach my $rgroup (split(/,/, $rg)) { my $rec_rg = $a->get($rgroup); my $rg_members = $rec_rg->prop('Members'); my @acces_members_ro = split(/,/, $rg_members); # Coloration en gris des comptes verrouillés : foreach my $user_ro (@acces_members_ro) { my $uro = $a->get($user_ro); my $lock_ro = $uro->prop('PasswordSet'); if ($lock_ro eq 'no') { # Injection des utilisateurs verrouillés des groupes RO dans la liste : push @list_ro, "" . $user_ro . ""; } else { # Injection des utilisateurs actifs des groupes RO dans la liste : push @list_ro, $user_ro; } } } # Pour chaque utilisateur ayant un accès RO : foreach (split(/,/, $ru)) { my @acces_members_ro = split(/,/, $ru); # Coloration en gris des comptes verrouillés : foreach my $user_ro (@acces_members_ro) { my $uro = $a->get($user_ro); my $lock_ro = $uro->prop('PasswordSet'); if ($lock_ro eq 'no') { # Injection des utilisateurs verrouillés des groupes RO dans la liste : push @list_ro, "" . $user_ro . ""; } else { # Injection des utilisateurs actifs des groupes RO dans la liste : push @list_ro, $user_ro; } } } # Affichage du resultat sous forme d'un tableau : my @list_rw_uniq = uniq(@list_rw); my @list_ro_uniq = uniq(@list_ro); print "^ " . $name . " | "; foreach (@list_rw_uniq) { print "$_ "; } print " | "; foreach (@list_ro_uniq) { print "$_ "; } print " |" . "\n"; } print "\n\n\n";