#!/bin/bash

# Test if archive can be restored

# Usage:
#   sng-archive-test <archive name>

# Scenario
# 1/ Extract /var/tmp/backup directory from archive
# 2/ Compare content of /var/tmp/backup/type to 'system'
# 3/ Create identity in /var/tmp/backup/identity.self
# 4/ Compare identity and identity.self
# 5/ Return success
#
# Exceptions
# 1.1/ On error return 0 (most likely an old archive version)
# 2.1/ On error return 0 - No identity validation for 'non system' archive
# 4.1/ On error return -1 and error msg + content of identity file (from  archive)

# Cleanup 
rm -rf /var/tmp/backup
/bin/tar -xpszf $1 -C / var/tmp/backup > /dev/null 2>&1
if [ $? -ne 0 ]; then
  exit 0
fi

TYPE=`cat /var/tmp/backup/type`
case $TYPE in
  "system")
    ;;
  * )
    rm -rf /var/tmp/backup
    exit 0;;
esac

# Create self identity
/usr/local/sng/bin/sng-system-identity > /var/tmp/backup/identity.self
# Taint for test
#echo $TYPE >> /var/tmp/backup/identity.self
diff /var/tmp/backup/identity.self /var/tmp/backup/identity -y > /var/tmp/backup/identity.diff
if [ $? -eq 0 ]; then
# Same identity
  exit 0
fi
echo "Error: Identity mismatch."
echo "Name : "${1##*/} 
echo "Type : $TYPE"
echo "System Identity:"
cat /var/tmp/backup/identity.self
echo "Archive Identity:"
cat /var/tmp/backup/identity
rm -rf /var/tmp/backup
exit -1

