ldap/admin/src/scripts/60upgradeconfigfiles.pl | 69 +++++++++++++++++++++++++
1 file changed, 69 insertions(+)
New commits:
commit 5950daa74ef929d6543b04baf2255c65e606a97d
Author: Noriko Hosoi <nhosoi(a)redhat.com>
Date: Fri Oct 4 11:38:33 2013 -0700
Ticket #53 - Need to update supported locales
commit e0c78d5b87d4d798a936eba9c90f5db5347bcb3c did not include
the upgreade script: 60upgradeconfigfiles.pl.
Note: This is a part of 389-ds-base-1.3.2.0.
(cherry picked from commit 64e0b3799971fa17aae7260ae238e9f68f66c3bd)
diff --git a/ldap/admin/src/scripts/60upgradeconfigfiles.pl b/ldap/admin/src/scripts/60upgradeconfigfiles.pl
new file mode 100644
index 0000000..4b37353
--- /dev/null
+++ b/ldap/admin/src/scripts/60upgradeconfigfiles.pl
@@ -0,0 +1,69 @@
+use File::Copy;
+use Mozilla::LDAP::LDIF;
+use DSCreate qw(installSchema);
+
+sub runinst {
+ my ($inf, $inst, $dseldif, $conn) = @_;
+
+ if (!$inf->{slapd}->{config_dir} or (! -d $inf->{slapd}->{config_dir})) {
+ return ('error_reading_config_dir', $inf->{slapd}->{config_dir});
+ }
+
+ # these files are obsolete, or we want to replace
+ # them with newer versions
+ my @toremove = qw(slapd-collations.conf);
+
+ # make a backup directory to store the deleted config file, then
+ # don't really delete it, just move it to that directory
+ my $mode = (stat($inf->{slapd}->{config_dir}))[2];
+ my $bakdir = $inf->{slapd}->{bak_dir} . ".bak";
+ if (! -d $bakdir) {
+ $! = 0; # clear
+ mkdir $bakdir, $mode;
+ if ($!) {
+ return ('error_creating_directory', $bakdir, $!);
+ }
+ }
+
+ my @errs;
+ for my $file (@toremove) {
+ my $oldname = $inf->{slapd}->{config_dir} . "/" . $file;
+ next if (! -f $oldname); # does not exist - skip - already (re)moved
+ my $newname = "$bakdir/$file";
+ $! = 0; # clear
+ rename $oldname, $newname;
+ if ($!) {
+ push @errs, ["error_renaming_config", $oldname, $newname, $!];
+ }
+ }
+
+ my $configsrcdir = $inf->{slapd}->{config_dir} . "/../config";
+ for my $file (@toremove) {
+ my $srcname = "$configsrcdir/$file";
+ my $newname = $inf->{slapd}->{config_dir} . "/" . $file;
+
+ copy $srcname, $newname;
+ if ($!) {
+ push @errs, ["error_renaming_config", $srcname, $newname, $!];
+ }
+ }
+
+ # If we've encountered any errors up to this point, restore
+ # the original file.
+ if (@errs) {
+ # restore the original files
+ for my $file (@toremove) {
+ my $oldname = "$bakdir/$file";
+ next if (! -f $oldname); # does not exist - not backed up
+ my $newname = $inf->{slapd}->{config_dir} . "/" . $file;
+ next if (-f $newname); # not removed
+ rename $oldname, $newname;
+ }
+ return @errs;
+ }
+
+ if (-d $bakdir) {
+ system("rm -rf $bakdir");
+ }
+ return ();
+}