fis-gtm/sr_unix/add_db_key.sh

67 lines
2.6 KiB
Bash

#!/bin/sh
#################################################################
# #
# Copyright 2010, 2011 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
#############################################################################################
#
# add_db_key.sh - Adds a new entry into the db key file. All paths provided in the
# command line are converted to absolute paths and stored in the db key file.
#
# Arguments:
# $1 - relative/absolute path of the database file (does not need to exist)
# $2 - relative/absolute path of the encrypted key file for this database($1)
# (must exist)
# $3 - (optional) if provided, denotes the output file (db key file).
# If not supplied, the value is taken from $gtm_dbkeys.
# If $gtm_dbkeys doesn't exist, looks for $HOME/.gtm_dbkeys, which is
# created if it does not exist.
#
#############################################################################################
# echo and options
ECHO=/bin/echo
ECHO_OPTIONS=""
#Linux honors escape sequence only when run with -e
if [ "Linux" = "`uname -s`" ] ; then ECHO_OPTIONS="-e" ; fi
# Database filename and key file name are required; master can default
if [ $# -lt 2 ]; then $ECHO "Usage: `basename $0` database_file key_file [master_key_file]" ; exit 1 ; fi
case $2 in
/*) keyfile=$2 ;;
*) keyfile=$PWD/$2 ;;
esac
if [ ! -r "$keyfile" ] ; then $ECHO "Key file $keyfile does not exist or is not readable" ; exit 1 ; fi
case $1 in
/*) dbfile=$1 ;;
*) dbfile=$PWD/$1 ;;
esac
if [ $# -ge 3 ] ; then master=$3
elif [ -n "$gtm_dbkeys" ] ; then master=$gtm_dbkeys
else master=$HOME/.gtm_dbkeys
fi
if [ -d $master -o -f $master ] ; then
if [ -w $master ] ; then
if [ -d $master ] ; then master=$master/.gtm_dbkeys ; fi
else
$ECHO "$master is not writable" ; exit 1
fi
else #Master does not exist; confirm that directory is writable
tmp=`dirname $master` ; if [ -z "$tmp" ] ; then tmp=$PWD ; fi
if [ ! -w $tmp ] ; then $ECHO "Directory $tmp not writable for master key file $master" ; exit 1 ; fi
fi
$ECHO dat $dbfile >>$master
$ECHO key $keyfile >>$master