#!/bin/sh
#
# Script args:
# $0: full path to script
# $1: full path to top level package dir, no trailing slash
# $2: full path to installed location
# $3:  ????? Path to install Volume????
# $4:  ?????

# MacOS Notes
# 10.7 Lion
# 10.8 Mountain Lion
# 10.9 Mavericks - Clang not gcc
# 10.10 Yosemite - No longer uses StartupItems
# 10.11 El Capitan - Old installer deprecated -pkgbuild

OSVERSION=`sw_vers -productVersion | awk -F '.' '{print $2}'`
echo "OSVersion =" $OSVERSION

FB_FW="/Library/Frameworks/Firebird.framework"
FB_RES="$FB_FW/Versions/A/Resources"

# Now create the firebird group
echo "Create the Firebird group 10.7+"
if dscl localhost -read /Local/Default/Groups/firebird 2&>1 /dev/null; then
	echo "Group Found" 
else
gid=501
dscl localhost -search /Local/Default/Groups PrimaryGroupID $gid | grep $gid 
while [ "$?" = "0" ]; do 
	let "gid =$gid+1"
	dscl localhost -search /Local/Default/Groups PrimaryGroupID $gid | grep $gid
done
	dscl localhost -create /Local/Default/Groups/firebird
	dscl localhost -create /Local/Default/Groups/firebird Password "*"
	dscl localhost -create /Local/Default/Groups/firebird PrimaryGroupID $gid
	dscl localhost -create /Local/Default/Groups/firebird RecordName firebird
fi


# Now create the firebird user
echo "Create the Firebird user 10.7+"
if dscl localhost -read /Local/Default/Users/firebird 2&>1 /dev/null; then
	echo "User Found"
else
ugid=501
dscl localhost -search /Local/Default/Users UniqueID $ugid | grep $ugid 
while [ "$?" = "0" ]; do 
	let "ugid=$ugid+1"
	dscl localhost -search /Local/Default/Users UniqueID $ugid | grep $ugid 
done
echo "create the firebird user 10.7+"
	dscl localhost -create /Local/Default/Users/firebird
	dscl localhost -create /Local/Default/Users/firebird NFSHomeDirectory /Library/Frameworks/firebird.framework
	dscl localhost -create /Local/Default/Users/firebird Password "*"
	dscl localhost -create /Local/Default/Users/firebird UserShell /bin/tcsh
	dscl localhost -create /Local/Default/Users/firebird RecordName firebird
	dscl localhost -create /Local/Default/Users/firebird PrimaryGroupID $gid 
	dscl localhost -create /Local/Default/Users/firebird UniqueID $ugid
	dscl localhost -create /Local/Default/Users/firebird RealName "Firebird Database"
fi

# Shutdown any existing servers
echo "Shutdown any existing servers"
if [ -x /sbin/service ]; then
	service firebird stop
fi

# Install the framework
echo "Install the framework"
chown -R firebird:firebird "$FB_FW"

# set the permissions correctly
echo "Set the permissions correctly"
    chmod 777 "$FB_FW/Resources/"
    chmod 660 "$FB_FW/Resources/security3.fdb"
    chmod 444 "$FB_FW/Resources/help/help.fdb"
    chmod a+s "$FB_FW/Resources/bin/firebird"

# Remove all older traces of Classic first
echo "Remove all older traces of Classic first"
if [ -f /etc/inetd.conf ]; then
	grep -s gds_db /etc/inetd.conf  > /dev/null 2>&1
	if test $? != 0 ; then
		cat /etc/inetd.conf | grep -v gds_db > /etc/.firebird.temp.install.inetd.conf
		mv /etc/.firebird.temp.install.inetd.conf /etc/inetd.conf
		HUPNEEDED='y'
	fi
fi

if [ -f /etc/xinetd.d/firebird ]; then
	rm /etc/xinetd.d/firebird
	HUPNEEDED='y'
fi

# Make sure hosts.equiv files are set correctly
echo "Make sure hosts.equiv files are set correctly"

cp /etc/hosts.equiv /etc/hosts.equiv.fbsave
if grep -x "localhost" /etc/hosts.equiv > /dev/null; then                
	echo -n
else     
    echo "localhost" >> /etc/hosts.equiv                
fi    
if grep -x "localhost.localdomain" /etc/hosts.equiv > /dev/null; then    
	echo -n
else     
    echo "localhost.localdomain" >> /etc/hosts.equiv    
fi    

# Install the saved security2 database, if any
echo "Install the saved security2 database"
if test -f /tmp/fb-security-database-update2fdb; then
	mv -f /tmp/fb-security-database-update2.fdb "$FB_RES/security2.fdb"
fi
# Install the saved security database, if any
echo "Install the saved security database"
if test -f /tmp/fb-security-database-update3.fdb; then
	mv -f /tmp/fb-security-database-update3.fdb "$FB_RES/security3.fdb"
	rm -f /tmp/fb-security-database-update3.fdb
fi

#Install the saved aliases.conf, if any
echo "Install the saved aliases.conf file"
if test -f /tmp/fb-aliases.conf; then
	mv -f /tmp/fb-aliases.conf "$FB_RES/English.lproj/var/aliases.conf"
fi

#Install the saved databases.conf, if any
echo "Install the saved databases.conf file"
if test -f /tmp/fb-databases.conf; then
	mv -f /tmp/fb-databases.conf "$FB_RES/databases.conf"
fi

#Install the saved UDF libraries, if any
echo "Install the saved UDF libraries"
cp /tmp/UDF_Save/*.* $FB_RES/UDF/

rm -fr /tmp/UDF_save

# Test for saved security database
if test -f "$FB_FW/Versions/A/Resources/security2.fdb"; then
echo "Legacy 2.x Security database has been preserved"
fi

if test -f "$FB_FW/Versions/A/Resources/security3.fdb"; then
echo "Security database has been preserved"
fi

# Initilise the security database with default user
echo "Add SYSDBA and password"
$FB_FW/Versions/A/Resources/bin/gsec -add sysdba -pw masterkey -user sysdba 
rm -fr /tmp/firebird

# And last but not least, start the Server
echo "Start the Server via launchctl"

cp $FB_FW/Resources/org.firebird.gds.plist /Library/LaunchDaemons/org.firebird.gds.plist
launchctl load /Library/LaunchDaemons/org.firebird.gds.plist	

