#!/bin/bash

usage () 
{
	[[ -z $1 ]] || echo -e $1
	echo -e "\nUsage:\t$(basename $0) <user>\n"
	exit 1
}

passwd="./passwd"
[ -e ${passwd} ] || usage "'passwd' file missing!"
shadow="./shadow"
[ -e ${shadow} ] || usage "'shadow' file missing!"

user=$1
[[ -n ${user} ]] || usage "Username missing!"
echo "User: ${user}"

count=$(grep -c -E "^${user}:" ${passwd})
echo "Count: $count"
[[ ${count} -eq 0 ]] && usage "Invalid username!"
[[ ${count} -eq 1 ]] || usage "Invalid 'passwd' file!"

count=$(grep -c -E "^${user}:" ${shadow})
echo "Count: $count"
#[[ ${count} -eq 1 ]] || usage "Invalid 'shadow' file!"
[[ ${count} -le 1 ]] || usage "Invalid 'shadow' file!"

hash=$(doveadm pw -s sha256-crypt -u ${user})
echo "Hash: ${hash}"

if [[ ${count} -eq 1 ]]; then
	sed -i -E "s/^${user}:.*$/${user}:${hash}/" ${shadow}
else
	echo "${user}:${hash}" >> ${shadow}
fi
