#!/bin/bash
# Get args generated by realmd
TMPARGS=$@
echo "net-realmd-wrapper supplied args -> $TMPARGS"

get_realmd_wrapper_style () {
	# Get OS_TYPE to determine which package manager to use
	OS_TYPE=$(grep ID_LIKE /etc/os-release | sed -E 's/ID_LIKE=(.*)$/\1/g' | sed -E 's/"//g')
	if [[ "$OS_TYPE" == "rhel centos fedora" ]]; then
			# Redhat package manager
			REALM_PKG=$(rpm -qa | grep realmd | sed -E 's/realmd-(\S+)(.el.*)/\1/g')
			MAJ=$(echo "$REALM_PKG" | cut -d '-' -f 1)
			BUILD=$(echo "$REALM_PKG" | cut -d '-' -f 2)
			TARGET_BUILD="25"
			TARGET_VERSION="0.16.3"
			if [[ "$BUILD" -lt "$TARGET_BUILD" && "$MAJ" == "$TARGET_VERSION" ]]; then
					echo 0
			else
					echo 1
			fi
	elif [[ "$OS_TYPE" == "debian" ]]; then
			# Use dpkg
			REALM_PKG=$(dpkg-query -W | grep realmd | sed -E 's/realmd\s+(\S+)/\1/g' | sed -E 's/(.*-[0-9]*)([a-z]).*/\1/g')
			MAJ=$(echo "$REALM_PKG" | cut -d '-' -f 1)
			BUILD=$(echo "$REALM_PKG" | cut -d '-' -f 2)
			TARGET_BUILD="25"
			TARGET_VERSION="0.16.3"
			if [[ "$BUILD" -lt "$TARGET_BUILD" && "$MAJ" == "$TARGET_VERSION" ]]; then
					echo 0
			else
					echo 1
			fi
	fi
}

#determine which wrapper style to use based on realmd package installed on system
USE_UPDATED_WRAPPER="$(get_realmd_wrapper_style)"
if [ $USE_UPDATED_WRAPPER -eq 1 ]; then
	echo "net-realmd-wrapper -> Using realmd (version >= 0.16.3-25) style substitution (new)"
	ARGS=$(echo $TMPARGS | sed -E 's/(--configfile|-s)[[:space:]]([^ ]+[[:space:]])(-U[[:space:]][^ ]+)?.*(-k[[:space:]])?(ads.*$)/\5 --configfile \/etc\/samba\/smb.conf.tmp \3 --use-kerberos=required/g')
	echo "net-realmd-wrapper substitution -> /usr/bin/net $ARGS"
	BASH_COMMAND=("/usr/bin/net $ARGS")
	echo "net-realmd-wrapper bash command -> $BASH_COMMAND"
	bash -c "$BASH_COMMAND"
else
	echo "net-realmd-wrapper -> Using realmd (version < 0.16.3-25) style substitution (old)"
	ARGS=$(echo $TMPARGS | sed -E 's/-s[[:space:]]([^ ]+)//g')
	echo "net-realmd-wrapper substitution -> /usr/bin/net -s /etc/samba/smb.conf.tmp $ARGS"
	BASH_COMMAND=("/usr/bin/net -s /etc/samba/smb.conf.tmp $ARGS")
	echo "net-realmd-wrapper bash command -> $BASH_COMMAND"
	bash -c "$BASH_COMMAND"
fi