#!/bin/sh
#  $Id: security_keygen.sh 109677 2015-03-31 12:24:31Z pc161604 $
#  Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
#  Component: 
#  Author: mm161613
#
#  generate a secret key and put it in the keyfile.
#

# be paranoid about the current path
if [ -d /bin ]; then
  PATH=/bin:$PATH
fi
if [ -d /sbin ]; then
  PATH=/sbin:$PATH
fi
if [ -d /usr/bin ]; then
  PATH=/usr/bin:$PATH
fi
if [ -d /usr/sbin ]; then
  PATH=/usr/sbin:$PATH
fi
if [ -d /etc ]; then
  PATH=/etc:$PATH
fi
export PATH

N=""
C=""
if echo -n | grep n > /dev/null
then
  C="\c"
else
  N="-n"
fi
case "$MACHINEARCH" in
i3li*|ppli*) N="$N -e" ;;
esac
_ss_headlines="--------------------------------------------------------------------------"

if [ -f $TTAMSG/common -a -f $TTAMSG/security_keygen ]; then
  . $TTAMSG/common
  . $TTAMSG/security_keygen
else
  echo "Unable to open message file: $TTAMSG/security_keygen"
  exit 1
fi

GetPrivUsrGrp()
{
    cat $TTADATADIR/serverconfig/global/array.properties 2>/dev/null | awk -F= \
	'BEGIN { u="ttasys"; wu="ttaserv"; g="ttaserv" }
	$1 == "tarantella.config.array.privilegeduser" { u = $2 }
	$1 == "tarantella.config.array.webserveruser" { wu = $2 }
	$1 == "tarantella.config.array.privilegedgroup" { g = $2 }
	END { print u " " wu " " g }'
}
_privusrgrp=`GetPrivUsrGrp`
privusr=`expr "$_privusrgrp" : '\([^ ]*\) .*'`
webservusr=`expr "$_privusrgrp" : '.* \([^ ]*\) .*'`
privgrp=`expr "$_privusrgrp" : '.* \([^ ]*\)$'`


OPENSSL_CONF="$TTAINSTDIR/etc/data/openssl.cnf"
export OPENSSL_CONF
OPENSSL_BINARY=openssl
KEYSTOREDIR="$TTADATADIR/info"
KEYNAME="key"
KEYFILE="$KEYSTOREDIR/$KEYNAME"
CLIPBOARDKEYNAME="clipboard.key"
CLIPBOARDKEYFILE="$KEYSTOREDIR/$CLIPBOARDKEYNAME"
TMPDIR="$TTAINSTDIR/var/tmp"
RAND_SOURCE="/dev/random"

if [ ! -z "$TTARANDSOURCE" ] ; then
  RAND_SOURCE="$TTARANDSOURCE"
elif [ -r "/dev/urandom" ] ; then
    RAND_SOURCE="/dev/urandom"
fi

#key length in bytes
KEYLENGTH=32

if [ ! -f "$KEYFILE" ] ; then
  touch "$KEYFILE"
  chown root:root "$KEYFILE"
  chmod 0600 "$KEYFILE"
  $OPENSSL_BINARY rand -rand ${RAND_SOURCE} -base64 -out "$KEYFILE" "$KEYLENGTH"
  cp "$KEYFILE" "$TMPDIR/$KEYNAME"
  sed 's/\n//g' < "$TMPDIR/$KEYNAME" > "$KEYFILE"
  rm -f "$TMPDIR/$KEYNAME"
  chmod 0440 "$KEYFILE"
fi

# Create a key for the clipboard
if [ ! -f "$CLIPBOARDKEYFILE" ] ; then
  touch "$CLIPBOARDKEYFILE"
  chown "$privusr:$privgrp" "$CLIPBOARDKEYFILE"
  chmod 0600 "$CLIPBOARDKEYFILE"
  $OPENSSL_BINARY rand -rand ${RAND_SOURCE} -base64 -out "$CLIPBOARDKEYFILE" "$KEYLENGTH"
  cp "$CLIPBOARDKEYFILE" "$TMPDIR/$CLIPBOARDKEYNAME"
  sed 's/\n//g' < "$TMPDIR/$CLIPBOARDKEYNAME" > "$CLIPBOARDKEYFILE"
  rm -f "$TMP/$CLIPBOARDKEYNAME"
  $TTABINDIR/tarantella config edit --tarantella-config-array-clipboard-key `cat "$CLIPBOARDKEYFILE"`
fi
