Make all indentation consistent.
[matthijs/upstream/backupninja.git] / handlers / ldap.in
index 5f9040a32ebe056f3f3c24050aa4ada9ab2a2d5f..0b0166ecc4eff999993e07cb4b76372a80834afa 100644 (file)
@@ -13,9 +13,10 @@ getconf method ldapsearch
 getconf passwordfile
 getconf binddn
 getconf ldaphost
-getconf tls yes
+getconf ssl yes
+getconf tls no
 
-if [ $tls = 'yes' ]; then
+if [ $ssl = 'yes' ]; then
    URLBASE="ldaps"
 else
    URLBASE="ldap"
@@ -27,40 +28,43 @@ status="ok"
 [ -d $backupdir ] || mkdir -p $backupdir
 [ -d $backupdir ] || fatal "Backup directory '$backupdir'"
 
-dbsuffixes=(`@AWK@ 'BEGIN {OFS=":"} /[:space:]*^database[:space:]*\w*/ {db=$2}; /^[:space:]*suffix[:space:]*\w*/ {if (db=="bdb"||db=="ldbm") print db,$2}' $conf|@SED@ -e 's/[" ]//g'`)
+dbsuffixes=(`@AWK@ 'BEGIN {OFS=":"} /[:space:]*^database[:space:]*\w*/ {db=$2}; /^[:space:]*suffix[:space:]*\w*/ {if (db=="bdb"||db=="hdb"||db="ldbm") print db,$2}' $conf|@SED@ -e 's/[" ]//g'`)
 
 ## LDIF DUMP
 
 if [ "$ldif" == "yes" ]; then
    dumpdir="$backupdir"
    [ -d $dumpdir ] || mkdir -p $dumpdir
-   
+
    if [ "$databases" == 'all' ]; then
       dbcount=`grep '^database' $conf | wc -l`
       let "dbcount = dbcount - 1"
       databases=`seq 0 $dbcount`;
-   fi  
-   
+   fi
+
    for db in $databases; do
-      if [ `expr index "$dbnum" "="` == "0" ]; then
-                       # db is a number, get the suffix.
+      if [ `expr index "$db" "="` == "0" ]; then
+                        # db is a number, get the suffix.
          dbsuffix=${dbsuffixes[$db]/*:/}
       else
          dbsuffix=$db
       fi
-               # some databases don't have suffix (like monitor), skip these
+                # some databases don't have suffix (like monitor), skip these
       if [ "$dbsuffix" == "" ]; then
          continue;
       fi
-      
+
       if [ "$method" == "slapcat" ]; then
          execstr="$SLAPCAT -f $conf -b $dbsuffix"
-         debug "$execstr"
       else
+         LDAPARGS=""
+         if [ "$tls" == "yes" ]; then
+            LDAPARGS="-ZZ"
+         fi
          if [ -n "$ldaphost" ]; then
-            execstr="$LDAPSEARCH -H $URLBASE://$ldaphost -x -L -b ""$dbsuffix"" -D ""$binddn"" -y $passwordfile"
+            execstr="$LDAPSEARCH $LDAPARGS -H $URLBASE://$ldaphost -x -L -b ""$dbsuffix"" -D ""$binddn"" -y $passwordfile"
          else
-            execstr="$LDAPSEARCH -x -L -b ""$dbsuffix"" -D ""$binddn"" -y $passwordfile"
+            execstr="$LDAPSEARCH -H $URLBASE://$ldaphost -x -L -b ""$dbsuffix"" -D ""$binddn"" -y $passwordfile"
          fi
          [ -f "$passwordfile" ] || fatal "Password file $passwordfile not found. When method is set to ldapsearch, you must also specify a password file."
          debug "$execstr"
@@ -70,21 +74,23 @@ if [ "$ldif" == "yes" ]; then
             debug "Shutting down ldap server..."
             /etc/init.d/slapd stop
          fi
-         
-        ext=
-        if [ "$compress" == "yes" ]; then
-           ext=".gz"
-        fi
+
+         ext=
+         if [ "$compress" == "yes" ]; then
+            ext=".gz"
+         fi
          touch $dumpdir/$dbsuffix.ldif$ext
          if [ ! -f $dumpdir/$dbsuffix.ldif$ext ]; then
             fatal "Couldn't create ldif dump file: $dumpdir/$dbsuffix.ldif$ext"
          fi
-         
+
          if [ "$compress" == "yes" ]; then
-            output=`$execstr | $GZIP > $dumpdir/$dbsuffix.ldif.gz`
+            execstr="$execstr | $GZIP > $dumpdir/$dbsuffix.ldif.gz"
          else
-            output=`$execstr > $dumpdir/$dbsuffix.ldif`
+            execstr="$execstr > $dumpdir/$dbsuffix.ldif"
          fi
+         debug "$execstr"
+         output=`su root -c "$execstr" 2>&1`
          code=$?
          if [ "$code" == "0" ]; then
             debug $output
@@ -93,13 +99,13 @@ if [ "$ldif" == "yes" ]; then
             warning $output
             warning "Failed ldif export of $dbsuffix"
          fi
-         
+
          if [ "$restart" == "yes" ]; then
             debug "Starting ldap server..."
             /etc/init.d/slapd start
          fi
       fi
-   done        
+   done
 fi
 
 return 0