diff --git a/ACU/LDAP.pm b/ACU/LDAP.pm index 4a0c846..59f0e1f 100644 --- a/ACU/LDAP.pm +++ b/ACU/LDAP.pm @@ -128,7 +128,7 @@ sub get_dn($$@) scope => "base" ); if ($mesg->code != 0) { ACU::Log::do_warn($mesg->error); return undef; } - if ($mesg->count != 1) { ACU::Log::do_warn("$cn not found or multiple entries match"); return undef; } + if ($mesg->count != 1) { ACU::Log::do_warn("$dn not found or multiple entries match"); return undef; } return $mesg->entry(0); } @@ -145,7 +145,7 @@ sub add_attribute($$$@) my @data = $entry->get_value($what); for my $value (@_) { - if (! grep(/^$value$/, @data)) { + if (! grep("^$value\$", @data)) { $mod = 1; ACU::Log::do_debug("Add attribute $value to $dn"); @@ -160,7 +160,7 @@ sub add_attribute($$$@) my $mesg = $entry->update($ldap) or die $!; if ($mesg->code != 0) { ACU::Log::do_warn($mesg->error); return 0; } - if ($mesg->count != 1) { ACU::Log::do_warn("$cn not found or multiple entries match"); return 0; } + if ($mesg->count != 1) { ACU::Log::do_warn("$dn not found or multiple entries match"); return 0; } return 1; } @@ -181,12 +181,15 @@ sub delete_attribute($$$@) my @data = $entry->get_value($what); for my $value (@_) { - if (grep(/^$value$/, @data)) { + if (grep("^$value\$", @data)) { ACU::Log::do_debug("Remove attribute $what ($value) from $dn"); - @data = grep(!/$value$/, @data); + @data = grep(!"^$value\$", @data); $mod = 1; } + else { + ACU::Log::do_warn("No attribute $what with value $value for $dn"); + } } if ($mod) @@ -217,7 +220,7 @@ sub flush_attribute($$@) my $ldap = shift // ldap_connect(); my $dn = shift; - $ldap->modify($dn, delete => \@_)->code; + my $mesg = $ldap->modify($dn, delete => \@_)->code; if ($mesg->code != 0) { ACU::Log::do_warn($mesg->error); return 0; } @@ -250,7 +253,7 @@ sub search_dn($$@) scope => "sub" ); if ($mesg->code != 0) { ACU::Log::do_warn($mesg->error); return undef; } - if ($mesg->count != 1) { ACU::Log::do_warn("$cn not found or multiple entries match"); return undef; } + if ($mesg->count != 1) { ACU::Log::do_warn("$filter not found or multiple entries match"); return undef; } return $mesg->entry(0)->dn; } diff --git a/ACU/Log.pm b/ACU/Log.pm index f9fbacc..53a3541 100644 --- a/ACU/Log.pm +++ b/ACU/Log.pm @@ -6,9 +6,10 @@ use v5.10.1; use strict; use warnings; use Term::ANSIColor qw(:constants); +use Data::Dumper; our $verbosity = 1; -our $debug = 0; +our $debug = 1; sub do_err(@) { @@ -40,4 +41,11 @@ sub do_debug(@) } } +sub do_dump(@) +{ + if ($debug) { + print Dumper(@_); + } +} + 1; diff --git a/ACU/Process.pm b/ACU/Process.pm index 1d1e361..76ce2e8 100644 --- a/ACU/Process.pm +++ b/ACU/Process.pm @@ -12,6 +12,8 @@ use XML::SAX::ParserFactory; use List::Util "reduce"; use Scalar::Util qw(looks_like_number); +use ACU::Log; + use constant COEFF_OLD => 25; use constant WAITING_LOAD => 2; @@ -39,6 +41,9 @@ sub do_work ($$$@) my $given_args = shift; my $priority = shift; + ACU::Log::do_debug("Starting job"); + ACU::Log::do_dump($_[0]); + my $old = 0; # Check the load isn't to high for this process sleep WAITING_LOAD while ! check_load ($priority + (++$old / COEFF_OLD));