67 lines
2.6 KiB
Bash
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
|