#!/bin/bash
#VARIABLES
IPMI_VER=$(ipmicfg -ver | cut -d: -f2- | sed 's/^ *//' | sed 's/ //g')
MOTHERBOARD=$(dmidecode -t 2 |grep 'Product Name' |cut -d " " -f 3)
#MAC=`ipmicfg -m | grep -i MAC | cut -d'=' -f2 | sed 's/://g'`
#KEY=`eval echo $MAC | xxd -r -p | openssl dgst -sha1 -mac HMAC -macopt hexkey:8544E3B47ECA58F9583043F8 | awk '{print $2}' | cut -c 1-24 | sed 's/.\{4\}/&-/g' | sed 's/.$//'`
DIRECTORY=x12stw-tf
EXPECTED_BOARD=X12STW-TF

#UPDATE THESE WHEN UPDATING SCRIPT FOR NEW IPMI FILE#
IPMI_FILE1=x12stw-tf_01.07.09.bin
IPMI_FILE2=x12stw-tf_01.08.08.bin
LATEST_VER=01.08.08



#ACTIVATE BIOS KEY


echo "=====================INSTALLING SUM====================="
cd /root
wget -qc 216.104.40.250//tools/bios/sum_2.9.0_Linux_x86_64.zip
unzip sum_2.9.0_Linux_x86_64.zip > /dev/null
cd sum_2.9.0_Linux_x86_64
chmod +x sum
echo "=====================SUM INSTALLED====================="
#echo "=====================ACTIVATING NOW=====================" -- Currently not supported for this mobo.
#./sum -c ActivateProductKey --key $KEY > /dev/null

#APPLY UPDATE
cd /root/sum_2.9.0_Linux_x86_64
if [ $MOTHERBOARD != "$EXPECTED_BOARD" ]; then
echo "MOTHERBOARD IS NOT $EXPECTED_BOARD!"
echo "$MOTHERBOARD DETECTED!"
echo "EXITING SCRIPT!"
rm -f "/root/$(basename "$0")"
exit 0
else
echo "$MOTHERBOARD DETECTED -- PROCEEDING!"
fi
echo "CHECKING IPMI VERSION" &&
if [[ $IPMI_VER = $LATEST_VER ]]
then
echo "IPMI IS AT LATEST VERSION - Version: $IPMI_VER"
echo "This board is currently at the latest version of this script. If a newer version is available, script will need to be updated."
echo "EXITING SCRIPT!"
rm -f "/root/$(basename "$0")"
exit 0
elif [[ "$(printf '%s\n' "$IPMI_VER" "01.07.09" | sort -V | head -1)" == "$IPMI_VER" && "$IPMI_VER" != "01.07.09" ]]; then
  echo "IPMI_VER: $IPMI_VER DETECTED!"
  echo "THIS MOBO REQUIRES BEING UPDATED TO IPMI VERSION 01.07.09 BEFORE IT CAN PROCEED WITH LATEST UPDATE!"
  echo "UPDATING TO VERSION 01.07.09 NOW, YOU WILL NEED TO REBOOT AND RE-RUN SCRIPT TO UPDATE TO $LATEST_VER!"
  ifconfig usb0 up &&
  ip a add 169.254.3.1/255.255.255.0 dev usb0 &&
  wget 216.104.40.250/tools/ipmi/$DIRECTORY/$IPMI_FILE1 &&
  ./sum -I Redfish_HI -u ADMIN -p ADMIN -c UpdateBmc --file $IPMI_FILE1 &&
  echo "UPDATE COMPLETE -- REBOOT AND RERUN SCRIPT TO UPDATE TO LATEST VERSION: $LATEST_VER"
  rm -f "/root/$(basename "$0")"
  exit 0
else
  echo "IPMI_VERSION: $IPMI_VER DETECTED, PROCEEDING WITH UPDATE!"
  ifconfig usb0 up &&
  ip a add 169.254.3.1/255.255.255.0 dev usb0 &&
  wget 216.104.40.250/tools/ipmi/$DIRECTORY/$IPMI_FILE2 &&
  ./sum -I Redfish_HI -u ADMIN -p ADMIN -c UpdateBmc --file $IPMI_FILE2 &&
  echo "UPDATE COMPLETE!"
  rm -f "/root/$(basename "$0")"
  exit 0
fi




