summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/src/scripts')
-rw-r--r--ldap/admin/src/scripts/DSDialogs.pm6
-rw-r--r--ldap/admin/src/scripts/DSMigration.pm.in9
-rw-r--r--ldap/admin/src/scripts/Migration.pm.in22
-rw-r--r--ldap/admin/src/scripts/Util.pm.in18
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;
}