#!/bin/sh

#
# (c) spd_at_daphne.cps.unizar.es
# Thu Nov 18 09:05:31 CET 2004
# License: Cantoware - Si te gusta ya te puedes dar con un canto en los dientes
#
# This script change some user name
# Needs: root privileges
#

ECHO=/usr/bin/echo
DO=

usage()
{
	echo "Use: `basename $0` [-hqn] old_uname new_uname"
	echo "-q: quiet"
	echo "-n: do nothing"
}


set -- `getopt hqn $*`
for i in $*
do
	case $i in
	-q) ECHO=:; shift;;
	-n) DO=echo; shift;;
	-h)
		usage
		exit 0
		;;
	esac
done

if [ $# -ne 3 ]
then
	usage
	exit 1
fi


umask 077

set -e
TMPDIR=/tmp/mvhome.$$

oldname=$2
newname=$3

uid=`/usr/bin/id $oldname | sed -e 's/^uid=//' -e 's/(.*//'`


domain=`domainname`

if nismatch name=$oldname passwd.org_dir
then
	if nismatch name=$newname passwd.org_dir
	then
		echo user \"$newname\" already exists in NIS+
	else
		$DO nistbladm -m name=$newname "[name=$oldname]",passwd.org_dir
		$DO nistbladm -m home=/home/$newname "[name=$newname]",passwd.org_dir
		$DO nistbladm -m cname=$newname.$domain. \
		"[cname=$oldname.$domain.,auth_type=DES]",cred.org_dir
		$DO nistbladm -m cname=$newname.$domain. \
		"[cname=$oldname.$domain.,auth_type=LOCAL]",cred.org_dir
		$DO nischown $newname.$domain. "[uid=$uid],passwd.org_dir"
		$DO nischown $newname.$domain. \
		"[cname=$newname.$domain.,auth_type=DES],cred.org_dir"
		rm -rf $TMPDIR
		mkdir $TMPDIR
		nismatch $oldname auto_home.org_dir > $TMPDIR/auto_home.tmp && \
		(
			$DO nistbladm -r key=$oldname auto_home.org_dir 
			sed -e "s/$oldname/$newname/g" $TMPDIR/auto_home.tmp |\
				tee $TMPDIR/auto_home_new.tmp
			$DO nisaddent -vf $TMPDIR/auto_home_new.tmp 	\
				-t auto_home.org_dir key-value
		)
		rm -rf $TMPDIR
	fi
else
	echo user \"$oldname\" not found in NIS+
fi



