#!/bin/bash
################################################################################
# cbu-updater-init -- Initialize Cloud Backup Updater service for ServerMill.  #
#   Version: 1.0.000098                                                        #
#   Run with: "*/5 * * * * root ${initscript} > /var/log/cbu-init.log 2>&1"    #
################################################################################

################################################################################
# Check for required tools and environment variables.                          # 
################################################################################
export agentrepo=REPLACE_AGENTREPO
export USERNAME=REPLACE_USERNAME
export DATACENTER=REPLACE_DATACENTER
export API_KEY=REPLACE_APIKEY

export PATH=${PATH}:/bin:/usr/bin
export searchtools="curl bzip2 tar ls echo grep sed chmod cp rm date sleep"
export missingtools=''
export initfailure=no
for i in ${searchtools}; do which $i >/dev/null 2>&1; if [ $? -ne 0 ]; then missingtools="${missingtools} $i"; fi; done
if [ ! -z "${missingtools}" ]; then
  echo "FATAL: missing required apps: ${missingtools}" >&2
  initfailure=yes
fi
if [ -z "${agentrepo}" ]; then
  echo "FATAL: missing agentrepo URL" >&2
  initfailure=yes
fi
if [ -z "${USERNAME}" ]; then
  echo "FATAL: missing user name" >&2
  initfailure=yes
fi
if [ -z "${DATACENTER}" ]; then
  echo "FATAL: missing data center code" >&2
  initfailure=yes
fi
if [ -z "${API_KEY}" ]; then
  echo "FATAL: missing API key" >&2
  initfailure=yes
fi
if [ "${initfailure}" = "yes" ]; then
  echo "EXITING WITH FAILURE" >&2
  exit 1
fi

################################################################################
# CBU Installer Status Check                                                   # 
################################################################################
date
echo "CBU installer initialization"
ps -ef | grep 'setup.driveclient.sh' | grep -v grep >/dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "WARNING! ServerMill seems to be still running. Trying again later." >&2
  exit 0
fi
if [ -f /usr/bin/cloudbackup-updater ]; then
  echo "Cloud Backup updater seems to be already installed." >&2
  grep AgentFingerprint /etc/driveclient/bootstrap.json >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    echo "Removing this job from crontab." >&2
    cp /etc/crontab /etc/temp.crontab && grep -v 'cbu.updater.init' /etc/temp.crontab > /etc/crontab
    rm -f /etc/temp.crontab 2>/dev/null
    echo 'sleep 3; rm -f /root/cbu-updater-init' | sh
    exit 0
  fi
  echo "Agent not yet installed. Trying again later." >&2
  exit 0
fi
ps -ef | grep 'cloudbackup-updater' | grep -v grep >/dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "WARNING! Cloud Backup updater seems to be already running. Trying again later." >&2
  exit 0
fi

################################################################################
# CBU Installer Initialization                                                 # 
################################################################################
# NOTE: If we got here, updater is not running and not in /usr/bin.
if [ -f /tmp/cloudbackup-updater-latest.tar.bz2 ]; then
  echo "WARNING! Updater already attempted download. Disabling initializer to prevent DDOS of agent repo."
  exit 1
fi
curl -s -k ${agentrepo}/updater/cloudbackup-updater-latest.tar.bz2 -o /tmp/latest.tar.bz2
( cd /tmp && tar jxvf latest.tar.bz2 )
if [ "${DATACENTER}" = "lon" ]; then
  DATACENTER=LON
fi
if [ "${DATACENTER}" = "LON" ]; then
  /tmp/cloudbackup-updater*/cloudbackup-updater --configure --flavor raxcloudserver --datacenter LON --user ${USERNAME} --apikey ${API_KEY} --apihost api.drivesrvr.co.uk
else
  /tmp/cloudbackup-updater*/cloudbackup-updater --configure --flavor raxcloudserver --datacenter ${DATACENTER} --user ${USERNAME} --apikey ${API_KEY}
fi

