#!/bin/sh

#
# (c) spd_at_daphne.cps.unizar.es
# Tue Nov 23 13:54:27 MET 2004
# License: Cantoware - Si te gusta ya te puedes dar con un canto en los dientes
#
# This script change some user password
# Needs: root privileges
# Needs: crp <ftp://ivo.cps.unizar.es/pub/SPDsoft/crp-0.0.tgz>
#

ECHO=/usr/bin/echo
DO=echo

usage()
{
	echo "Use: `basename $0` [-hqn] name [new_password]"
	echo "-q: quiet"
	echo "-n: do nothing"
	echo "-y: do it"
}


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

if [ $# -lt 2 ]
then
	usage
	exit 1
fi


umask 077

set -e

name=$2
upass="$3"

if [ "_$upass" = "_" ]
then
	upass=`mkpw.pl`
	$ECHO "# Using new password: \"$upass\" for \"$name\""
fi
pass=`/usr/local/etc/crp "$upass"`


domain=`domainname`

$DO : "##    Warning! doing nothing (use -y)"
$ECHO "####    Creating/Updating DES and LOCAL credentials..."

uid=`nismatch $name passwd.org_dir | awk -F: '{print $3}'`

$ECHO "# user: $name"
$ECHO "# passwd: $upass ($pass)"
$ECHO "# domain: $domain"
$ECHO "# uid: $uid"

$DO nisaddcred \
	-p$uid -P$name.${domain}. -l "$upass" local ${domain}.
$DO nisaddcred \
	-punix.$uid@${domain} -P$name.${domain}. -l "$upass" des ${domain}.
#$DO nischown $name.$domain. "[uid=$uid],passwd.org_dir"
#$DO nischown $name.$domain. \
#        "[cname=$name.$domain.,auth_type=DES],cred.org_dir"

echo "####    Cred updated"

if [ "_$DO" != "echo" ]
then
	echo "####    Creating/Updating Unix password..."
	# name:passwd:uid:gid:gcos:home:shell:shadow

	$DO nistbladm -m passwd="$pass" "[name=$name]",passwd.org_dir
	# lastchg min max warn inactive expire flag
	$DO nistbladm -m shadow="11250:0:99999:7:::134536908" "[name=$name]",passwd.org_dir
fi

$ECHO "####    NIS+ updated"

