#!/bin/bash

# Operator Backups

# Added: 2023-11-10

# Back up Operator directories to seperate archive

#------------------------------------------------------------------------------

# Configuration
PGNAME="awsbackup-operator"
PGDESC="Backup archive of Operator files"
LOGFILE="/usr/ns/log/${PGNAME}.log"
OPERATOR_SHARE_DIR='/usr/share/nsoperator/assets'
OPERATOR_VAR_DIR='/var/lib/nsoperator'
BAKDIR="/usr/ns/bak"


# Functions

cleanup() {
  SIGNAL=$?
  # Clean up temp files
  # Show exit code
  echo "Exit code: ${1:-$SIGNAL}"
}


# Main Program

# Trap signals
trap cleanup HUP INT QUIT ABRT TERM

# Send all output to log and screen
exec &> >(tee -a "$LOGFILE")

echo 
echo "***********************************************************"
echo "$(nstime) Starting $PGNAME..."

# Add path to aws-cli for cron to find it.
export PATH=$PATH:/usr/local/bin

echo "Loading Configuration file..."
# Load custom client config file settings
if [ ! -f /usr/ns/cus/awsbackup.config  ]; then
  echo "ERROR: Configuration not found!"
  exit 1
fi

source /usr/ns/cus/awsbackup.config

# Assign date variables and build the date code
DAYOFWEEK="$(date '+%u')"
DAYOFMONTH="$(date '+%d')"
DATECODE="$(date +%Y%m%d)"

# Set the S3 destination directory & nscus archive filename
S3DIR="$CUSTCODE/NovaStar/OperatorBackups"
BACKUP_FILE="$DATECODE-$CUSTCODE-$HOSTNAME-$NODECODE-Operator.tar.gz"
# cd to backup directory and create archive.
cd "$BAKDIR"
tar -cvzhf "$BACKUP_FILE" "$OPERATOR_SHARE_DIR" "$OPERATOR_VAR_DIR"
   
# Upload the file to FTP Server, using datecode for remote filename.
if [ "${FTP_SERVER:=none}" == "none" ] ; then
  echo "Skipping FTP upload per configuration."
else
  echo "Uploading file $BACKUP_FILE to $FTP_SERVER via FTP..."
  ftp -ni $FTP_SERVER << __EOF__
user $FTP_USERNAME $FTP_PASSWORD
cd $FTP_DIR
put $BACKUP_FILE
quit
__EOF__

fi

echo "Uploading file $BACKUP_FILE to S3..." 
aws s3 cp "$BACKUP_FILE" "s3://$S3BUCKET/$S3DIR/$BACKUP_FILE" --profile "$AWSCLIPROFILE"

echo "$(nstime) $PGDESC finished"
cleanup 0
