#!/bin/bash
#determine safe uid/gid

NIUTIL_PRESENT=`which niutil`

if [ -z $NIUTIL_PRESENT] ; then
	echo "No niutil"
	OPENFIRE_USER=`dscl . -search /Users name openfire | awk '{print $1}'`

	OPENFIRE_GID=`dscl . -readall /Users PrimaryGroupID | awk '/PrimaryGroupID/{print $2}' | sort -n | egrep -v "\b[5-9][0-9]{2,5}\b" | tail -n 1`
	let "OPENFIRE_GID=$OPENFIRE_GID+1"
	echo $OPENFIRE_GID > /private/tmp/openfiregid

	if [ -z $OPENFIRE_USER ] ; then
		OPENFIRE_UID=`dscl . -readall /Users UniqueID | awk '/UniqueID/{print $2}' | sort -n | egrep -v "\b[5-9][0-9]{2,5}\b" | tail -n 1`
		let "OPENFIRE_UID=$OPENFIRE_UID+1"
		echo $OPENFIRE_UID

		#create user
		dscl . -create /Users/openfire

		#set properties
		dscl . -create /Users/openfire PrimaryGroupID $OPENFIRE_GID
		dscl . -create /Users/openfire UniqueID $OPENFIRE_UID
		dscl . -create /Users/openfire UserShell /usr/bin/false
		dscl . -create /Users/openfire NFSHomeDirectory /usr/local/openfire/
		dscl . -create /Users/openfire RealName "Jive Openfire"
		dscl . -passwd /Users/openfire '*'
	fi
else
	OPENFIRE_USER=`nireport / /users name | grep "openfire"`

	OPENFIRE_GID=`nireport / /users gid | sort -n | egrep -v "\b[5-9][0-9]{2,5}\b" | tail -n 1`
	let "OPENFIRE_GID=$OPENFIRE_GID+1"
	echo $OPENFIRE_GID > /private/tmp/openfiregid

	if [ -z $OPENFIRE_USER] ; then
		OPENFIRE_UID=`nireport / /users uid | sort -n | egrep -v "\b[5-9][0-9]{2,5}\b" | tail -n 1`
		let "OPENFIRE_UID=$OPENFIRE_UID+1"
		echo $OPENFIRE_UID

		#create user
		niutil -create . /users/openfire

		#set properties
		niutil -createprop . /users/openfire gid $OPENFIRE_GID
		niutil -createprop . /users/openfire uid $OPENFIRE_UID
		niutil -createprop . /users/openfire shell /usr/bin/false
		niutil -createprop . /users/openfire home /usr/local/openfire/
		niutil -createprop . /users/openfire realname "Jive Openfire"
		niutil -createprop . /users/openfire passwd '*'
	fi
fi