Current File : //sbin/nsdb-update-nci
#!/bin/ksh

#
# Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
#

if [ -f /usr/lib/fs/nfs/fedfs_include.sh ]; then
	. /usr/lib/fs/nfs/fedfs_include.sh
else
	. ./fedfs_include.sh
fi

LDAPADD='/bin/openldapadd -x'

while [ $# -gt 1 ]; do
	case $1 in
		-l)             shift; nsdb=$1;;
		-r)             shift; port=$1;;
		-e)		shift; nce=$1;;
		-D)		shift; admin=$1;;
		-w)		shift; pw=$1;;
		--help)		break;;
		*)              break;;
	esac
	shift
done

if [ $# -ne 1 ]; then 
        echo "Usage: nsdb-update-nci [-l <NSDB> ] [-r <PORT>] [-e <NCE>] [-D <BINDDN>] [-w <PW>] <ROOT>"
	exit
fi

root=$1; shift

if [ -z "$nce" ]; then
	nce2=""
else
	nce2=" $nce"
fi

rm -f /tmp/ldap_pw$$
touch /tmp/ldap_pw$$
chmod 600 /tmp/ldap_pw$$
echo $pw\\c >> /tmp/ldap_pw$$

# Install NCE prefix entry
o=`echo $root | sed -e 's/dc=//' -e 's/,.*//'`
rm -f /tmp/ldap_nce$$
touch /tmp/ldap_nce$$
echo "dn: $root" >> /tmp/ldap_nce$$
echo "changetype: add" >> /tmp/ldap_nce$$
echo "objectClass: top" >> /tmp/ldap_nce$$
echo "objectclass: organization" >> /tmp/ldap_nce$$
echo "objectclass: dcObject" >> /tmp/ldap_nce$$
echo "objectClass: fedfsNsdbContainerInfo" >> /tmp/ldap_nce$$
echo "o: $o" >> /tmp/ldap_nce$$
echo "dc: $o" >> /tmp/ldap_nce$$
if [ -z "$nce" ]; then
	echo "fedfsNceDN: $root" >> /tmp/ldap_nce$$
else
	echo "fedfsNceDN: $nce,$root" >> /tmp/ldap_nce$$
fi
$LDAPADD -h $nsdb -p $port -D "$admin,$root" -y /tmp/ldap_pw$$ < /tmp/ldap_nce$$
if [ $? != 0 ]; then
	rm /tmp/ldap_nce$$
	rm /tmp/ldap_pw$$
	exit 1
fi
echo "NCE entry created"
rm /tmp/ldap_nce$$

if [ -z "$nce" ]; then
	rm /tmp/ldap_pw$$
	exit 0;
fi

comp=`echo $nce | sed -e 's/=.*//'`
val=`echo $nce | sed -e 's/.*=//'`
if [ "$comp" == "ou" ]; then
	longcomp=organizationalUnit
fi
if [ "$comp" == "dc" ]; then
	longcomp=dcObject
fi

# Install NCE directory, if not at root
rm -f /tmp/ldap_dir$$
touch /tmp/ldap_dir$$
echo "dn: $nce,$root" >> /tmp/ldap_dir$$
echo "changetype: add" >> /tmp/ldap_dir$$
echo "objectclass: $longcomp" >> /tmp/ldap_dir$$
echo "$comp: $val" >> /tmp/ldap_dir$$
ldapadd -h $nsdb -p $port -D "$admin,$root" -y /tmp/ldap_pw$$ < /tmp/ldap_dir$$
if [ $? != 0 ]; then
	rm /tmp/ldap_dir$$
	rm /tmp/ldap_pw$$
	exit 1
fi
rm /tmp/ldap_dir$$
rm /tmp/ldap_pw$$
echo "NCE dir $nce created"