#!/bin/sh
#
# $FreeBSD$
#

# PROVIDE: ix-pre-samba
# REQUIRE: FILESYSTEMS mountlate
# REQUIRE: ix-pam
# BEFORE: samba_server

. /etc/rc.freenas

get_sambaSID()
{
	local sambaSID

	${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} "
	SELECT
		cifs_SID
	FROM
		services_cifs
	ORDER BY
		-id
	LIMIT
		1
	" | while read sambaSID
	do
		echo ${sambaSID}
	done
}

set_sambaSID()
{
	local sambaSID="$(get_sambaSID)"

	if [ -n "${sambaSID}" ]
	then
		export LOGNAME=anonymous
		/usr/local/bin/net setlocalsid "${sambaSID}"
	fi
}

save_sambaSID()
{
	local sambaSID

	export LOGNAME=anonymous
	sambaSID="$(/usr/local/bin/net getlocalsid | \
		cut -f2 -d: | awk '{ print $1 }')"

	${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} "
	UPDATE
		services_cifs
	SET
		cifs_SID = '${sambaSID}'
	"
}

generate_smb_config()
{
	/usr/local/libexec/nas/generate_smb4_conf.py
}

backup_secrets_tdb()
{
	cp /var/db/samba4/private/secrets.tdb /root/secrets.tdb
}


restore_secrets_tdb()
{
	mv /root/secrets.tdb /var/db/samba4/private/secrets.tdb
}

samba_pre_init()
{
	local sambaSID="$(get_sambaSID)"

	if [ -z "${sambaSID}" ]
	then
		save_sambaSID
	fi

	set_sambaSID
	backup_secrets_tdb
	generate_smb_config
	restore_secrets_tdb
}

name="ix-pre-samba"
start_cmd='samba_pre_init'
stop_cmd=':'

load_rc_config $name
run_rc_command "$1"
