#!/bin/bash

# Filename: dailyaws-nslogs-backup
# Author's: Mark Bogner,
#           Thaddeus M. Diede


# Updated 2016-09-15 - Updated to clean up after itself 
# Updated 2016-11-03 - Renamed from "copy-nsrecdatalog" to "dailyaws-nsrecdatalog-backup"
# Updated 2017-01-17 - Added nssyslog backups, renamed to "nslogs-daily-awsbackup"

# This script is for generating Novastar nsrecdata.log & nssyslogbackup files and uploading
# to the Trilynx AWS S3 cloud storage.
# This is achieved via the use of Amazon Web Services Command Line Interface (AWS-CLI)

# NovaStar generates a new log file at approx. 06:30 each day. This script
# backs up the previous day's logfile since it is the most recent file that
# encompasses a full day of system activity.

# AWS-CLI communicates on TCP Port 443. 
# It is likely that this port will not be open by default on NovaStar systems.

# The following variables are imported from /usr/ns/cus/s3backup.config
# $S3BUCKET
# $CUSTCODE
# $HOSTNAME
# $AWSCLIPROFILE

###############################################################################################

# Configuration
PGNAME="awsbackup-nslogs-daily"
PGDESC="Backup previous day's nsrecdata.log and nssyslog files to TriLynx Client AWS-S3"
LOGFILE="/usr/ns/log/${PGNAME}.log"
BAKDIR="/usr/ns/bak"


# Functions

cleanup() {
  SIGNAL=$?
  # Clean up temp files
  rm -f $lockfile
  # 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 "$(nstime) Starting $PGNAME..."
echo

if [ ! -r /usr/ns/cus/awsbackup.config ]; then
  echo "ERROR: Config file not found!"
  exit 1
fi

source /usr/ns/cus/awsbackup.config

# Output the confiig file variables
echo "S3 Bucket: $S3BUCKET"
echo "Customer Code: $CUSTCODE"
echo "Node Code: $NODECODE"
echo "Host Name: $HOSTNAME"
echo "AWS-CLI Profile: $AWSCLIPROFILE"
echo

# Create yesterday's date prefix for backup files
YDATECODE=$(date +%Y%m%d -d yesterday)
echo "Yesterday's Date: $YDATECODE"

# assign the location and name of the log file we will be zipping up and moving
NSRECLOGSOURCE=/usr/ns/log/nsrecdata.log.1
NSSYSLOGSOURCE=/usr/ns/log/nssyslog.1

RECLOG_S3DIR="$CUSTCODE/NovaStar/nsrecdatalogBackups"
SYSLOG_S3DIR="$CUSTCODE/NovaStar/nssyslogBackups"


# assign the name of the new filename with timestamp 
NSRECFILE=$YDATECODE-$CUSTCODE-$HOSTNAME-$NODECODE-nsrecdata.log
NSSYSFILE=$YDATECODE-$CUSTCODE-$HOSTNAME-$NODECODE-nssyslog

echo "Archiving Yesterday's nsrecdata and nssyslog..."
# Copy NS5 source logs for gzip and upload
cp $NSRECLOGSOURCE $NSRECFILE
cp $NSSYSLOGSOURCE $NSSYSFILE
gzip -f $NSRECFILE
gzip -f $NSSYSFILE


# Copy to client S3 storage via aws-cli on port 443
echo "Uploading log files to S3..."
aws s3 cp ${NSRECFILE}.gz s3://$S3BUCKET/$RECLOG_S3DIR/${NSRECFILE}.gz --profile $AWSCLIPROFILE
aws s3 cp ${NSSYSFILE}.gz s3://$S3BUCKET/$SYSLOG_S3DIR/${NSSYSFILE}.gz --profile $AWSCLIPROFILE

echo
echo "Daily logfiles aws-cli S3 transfer exiting..."

# Delete the copied version of the logfiles.
rm $NSRECFILE.gz
rm $NSSYSFILE.gz

echo
echo "$(nstime) $PGDESC complete." >> $LOGFILE
echo

