diff options
Diffstat (limited to 'ldap/admin/src/scripts')
| -rw-r--r-- | ldap/admin/src/scripts/DSDialogs.pm | 6 | ||||
| -rw-r--r-- | ldap/admin/src/scripts/DSMigration.pm.in | 9 | ||||
| -rw-r--r-- | ldap/admin/src/scripts/Migration.pm.in | 22 | ||||
| -rw-r--r-- | ldap/admin/src/scripts/Util.pm.in | 18 |
4 files changed, 42 insertions, 13 deletions
diff --git a/ldap/admin/src/scripts/DSDialogs.pm b/ldap/admin/src/scripts/DSDialogs.pm index ee7bf0f3..0af12b14 100644 --- a/ldap/admin/src/scripts/DSDialogs.pm +++ b/ldap/admin/src/scripts/DSDialogs.pm @@ -86,10 +86,10 @@ my $dsserverid = new Dialog ( if (!defined($serverid)) { $serverid = $self->{manager}->{inf}->{General}->{FullMachineName}; if (!defined($serverid)) { - $serverid = hostname; - } else { # strip out the leftmost domain component - $serverid =~ s/\..*$//; + $serverid = hostfqdn; } + # strip out the leftmost domain component + $serverid =~ s/\..*$//; } return $serverid; }, diff --git a/ldap/admin/src/scripts/DSMigration.pm.in b/ldap/admin/src/scripts/DSMigration.pm.in index 09f0e034..e3cda816 100644 --- a/ldap/admin/src/scripts/DSMigration.pm.in +++ b/ldap/admin/src/scripts/DSMigration.pm.in @@ -191,9 +191,12 @@ sub copyDatabaseDirs { debug(1, "The destination directory $destdir already exists, copying files/dirs individually\n"); $! = 0; debug(1, "Removing any existing db files in $destdir\n"); - unlink glob("$destdir/*"); - if ($!) { - return ("error_removing_temp_db_files", $destdir, $!); + foreach my $file (glob("$destdir/*")) { + next if (! -f $file); + unlink($file); + if ($!) { + return ("error_removing_temp_db_files", $destdir, $!); + } } foreach my $file (glob("$srcdir/*")) { if (-f $file) { diff --git a/ldap/admin/src/scripts/Migration.pm.in b/ldap/admin/src/scripts/Migration.pm.in index d61b7a59..b1e6ccde 100644 --- a/ldap/admin/src/scripts/Migration.pm.in +++ b/ldap/admin/src/scripts/Migration.pm.in @@ -213,7 +213,7 @@ sub init { if ($pkgname =~ /-(core|base)$/) { $pkgname =~ s/-(core|base)$//; } - my $oldpkgname = $pkgname; + my $oldpkgname = "@brand@-ds"; $self->{pkgname} = $pkgname; $self->{oldsroot} = $oldsroot || "/opt/$oldpkgname"; @@ -274,10 +274,26 @@ sub init { $self->{instances} = \@instances; } +# log only goes the the logfile +sub log { + my $self = shift; + my $level = shift; + $self->{log}->logMessage($level, "Migration", @_); +} + sub doExit { my $self = shift; - $self->msg($FATAL, 'migration_exiting', $self->{log}->{filename}); - exit 1; + my $code = shift; + if (!defined($code)) { + $code = 1; + } + + if ($code) { + $self->msg($FATAL, 'migration_exiting', $self->{log}->{filename}); + } else { + $self->msg($SUCCESS, 'migration_exiting', $self->{log}->{filename}); + } + exit $code; } sub migrateSecurityFiles { diff --git a/ldap/admin/src/scripts/Util.pm.in b/ldap/admin/src/scripts/Util.pm.in index b6e3e0ea..ad7347ed 100644 --- a/ldap/admin/src/scripts/Util.pm.in +++ b/ldap/admin/src/scripts/Util.pm.in @@ -697,6 +697,7 @@ sub addSuffix { sub process_maptbl { my ($mapper, $errs, @infdata) = @_; + my @deferredkeys = (); if (defined($mapper->{""})) { $mapper = $mapper->{""}; # side effect of Inf with no sections @@ -712,10 +713,7 @@ sub process_maptbl } elsif ($value =~ /^\`/) { - $value =~ tr/\`//d; # value is a perl expression to eval - my $returnvalue; # set in eval expression - eval $value; - $mapper->{$key} = $returnvalue; # perl expression sets $returnvalue + push @deferredkeys, $key; # process these last } else { @@ -751,6 +749,18 @@ sub process_maptbl } } } + + # we have to process the perl expressions to eval last, because those + # expressions may use mappings defined elsewhere in the file, and we are not + # guaranteed of the order in which hash keys are enumerated + foreach my $key (@deferredkeys) { + my $value = $mapper->{$key}; + $value =~ tr/\`//d; # value is a perl expression to eval + my $returnvalue; # set in eval expression + eval $value; + $mapper->{$key} = $returnvalue; # perl expression sets $returnvalue + } + return $mapper; } |
