#!/bin/sh

SMBEXEC=/usr/bin/smbpasswd
SMBCONF=/etc/samba/smb.conf
DAVEXEC=/usr/bin/htpasswd
DAVPASSCONF=/etc/httpd/.htpasswd

usage_update="Usage:`basename $0` -o[update] -u[username] -p[password]"
usage_add="Usage:`basename $0` -o[add] -u[username] -p[password]"
usage_remove="Usage:`basename $0` -o[remove] -u[username]"

action=update
username=""
password=""

while getopts "o:u:p:" opt
do
	case $opt in
		o) action=$OPTARG ;; # get action
		u) username=$OPTARG ;; # get username
		p) password=$OPTARG ;; # get password
	esac
done

update_user(){
	local uname=$1
	local upass=$2
	#add or update userpass for samba
	#echo -e "${upass}\n${upass}" | ${SMBEXEC} -c ${SMBCONF} -a "${uname}"
/usr/bin/expect <<EOF
	set time 10
	spawn $SMBEXEC -c $SMBCONF -a "$uname"
	expect {
		"New SMB password:" { send "$upass\r"; exp_continue }
		"Retype new SMB password:" { send "$upass\r" }
	}
	expect eof
EOF

	#add or update userpass for webdav
	if [ -f ${DAVPASSCONF} ]; then
		${DAVEXEC} -bm ${DAVPASSCONF} "${uname}" "${upass}"
	else
		${DAVEXEC} -cbm ${DAVPASSCONF} "${uname}" "${upass}"
	fi
}

remove_user(){
	local uname=$1
	# remove user from samba
	${SMBEXEC} -c ${SMBCONF} -x "${uname}"
	# remove user from webdav
	${DAVEXEC} -D ${DAVPASSCONF} "${uname}"
}

case $action in
	update)
		if [ -z "$username" -o -z "$password" ]; then
			echo -e $usage_update
			exit 1
		else
			update_user "$username"  "$password"
		fi
		;;
	remove)
		if [ -z "$username" ]; then
			echo -e $usage_remove
			exit 1
		else
			remove_user "$username"
		fi
		;;
	add)
		if [ -z "$username" -o -z "$password" ]; then
			echo -e $usage_add
			exit 1
		else
			update_user "$username"  "$password"
		fi
		;;
esac
exit 0
