summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/src')
-rw-r--r--ldap/admin/src/scripts/90subtreerename.pl52
-rw-r--r--ldap/admin/src/scripts/DSUpdate.pm.in2
-rwxr-xr-xldap/admin/src/scripts/template-dn2rdn.in24
3 files changed, 77 insertions, 1 deletions
diff --git a/ldap/admin/src/scripts/90subtreerename.pl b/ldap/admin/src/scripts/90subtreerename.pl
new file mode 100644
index 00000000..e4746d7b
--- /dev/null
+++ b/ldap/admin/src/scripts/90subtreerename.pl
@@ -0,0 +1,52 @@
+use Mozilla::LDAP::Conn;
+use Mozilla::LDAP::Utils qw(normalizeDN);
+use Mozilla::LDAP::API qw(:constant ldap_url_parse ldap_explode_dn);
+
+sub runinst {
+ my ($inf, $inst, $dseldif, $conn) = @_;
+
+ my @errs;
+
+ my $ent0 = $conn->search("cn=config", "base", "(objectclass=*)");
+ if (!$ent0) {
+ return ('error_finding_config_entry', 'cn=config',
+ $conn->getErrorString());
+ }
+ my $rundir = $ent0->getValues('nsslapd-rundir');
+
+ # Check if the server is up or not
+ my $pidfile = $rundir . "/" . $inst . ".pid";
+ if (-e $pidfile) {
+ return (); # server is running; do nothing.
+ }
+
+ my $ent1 = $conn->search("cn=config,cn=ldbm database,cn=plugins,cn=config",
+ "base", "(objectclass=*)");
+ if (!$ent1) {
+ return ('error_finding_config_entry',
+ 'cn=config,cn=ldbm database,cn=plugins,cn=config',
+ $conn->getErrorString());
+ }
+
+ # Get the value of nsslapd-subtree-rename-switch.
+ my $need_update = 0;
+ my $switch = $ent1->getValues('nsslapd-subtree-rename-switch');
+ if ("" eq $switch) {
+ $ent1->addValue('nsslapd-subtree-rename-switch', "on");
+ $need_update = 1;
+ } elsif ("off" eq $switch || "OFF" eq $switch) {
+ $ent1->setValues('nsslapd-subtree-rename-switch', "on");
+ $need_update = 1;
+ }
+
+ if (1 == $need_update) {
+ $conn->update($ent1);
+ # Convert the database format from entrydn to entryrdn
+ my $instdir = $ent0->getValue('nsslapd-instancedir');
+ my $prog = $instdir . "/dn2rdn";
+ my $output = `$prog 2>&1`;
+ my $stat = $?;
+ }
+
+ return ();
+}
diff --git a/ldap/admin/src/scripts/DSUpdate.pm.in b/ldap/admin/src/scripts/DSUpdate.pm.in
index 20bb40d1..3792afe2 100644
--- a/ldap/admin/src/scripts/DSUpdate.pm.in
+++ b/ldap/admin/src/scripts/DSUpdate.pm.in
@@ -449,7 +449,7 @@ sub initInfFromInst {
$inf->{slapd}->{bak_dir} = $entry->getValue('nsslapd-bakdir');
}
if (!$inf->{slapd}->{config_dir}) {
- $inf->{slapd}->{config_dir} = $configdir;
+ $inf->{slapd}->{config_dir} = $configdir."/".$inst;
}
if (!$inf->{slapd}->{inst_dir}) {
$inf->{slapd}->{inst_dir} = $entry->getValue('nsslapd-instancedir');
diff --git a/ldap/admin/src/scripts/template-dn2rdn.in b/ldap/admin/src/scripts/template-dn2rdn.in
new file mode 100755
index 00000000..f8232df1
--- /dev/null
+++ b/ldap/admin/src/scripts/template-dn2rdn.in
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+prefix="{{DS-ROOT}}"
+if [ "$prefix" = "/" ] ; then
+ prefix=""
+fi
+LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@
+if [ -n "$prefix" ] ; then
+ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
+fi
+export LD_LIBRARY_PATH
+SHLIB_PATH=$LD_LIBRARY_PATH
+export SHLIB_PATH
+
+cd {{SERVERBIN-DIR}}
+if [ $# -eq 0 ]
+then
+ bak_dir={{BAK-DIR}}/reindex_`date +%Y_%m_%d_%H_%M_%S`
+ ./ns-slapd upgradedb -D {{CONFIG-DIR}} -f -r -a "$bak_dir"
+else
+ echo "Usage: dn2rdn"
+ exit 1
+fi
+