#!/bin/sh
# Starts the Apache-Tomcat web container.
# If arguments "-i ip.2.3.4" AND "-n name" are present, adds an entry to /etc/hosts;
# this was added as a workaround for missing DNS in the CSIT environment.

hostip=""
hostname=""
BASE=/opt/apache-tomcat-8.0.37
while [ $# -gt 0 ]; do
    key="$1"
    case $key in
        -i|--ip)
        hostip="$2"
        echo "$0: option -i value is $hostip"
        shift # past argument
        shift # past value
        ;;
        -n|--name)
        hostname="$2"
        echo "$0: option -n value is $hostname"
        shift # past argument
        shift # past value
        ;;
        -b|--base)
        BASE="$2"
        echo "$0: option -b value is $BASE"
        shift # past argument
        shift # past value
        ;;
        *)
        echo "$0: ignoring argument $key"
	shift
        ;;
    esac
done

# Optionally add to /etc/hosts
# Docker-compose supplies arguments ""
if [ ${#hostip} -lt 3 -o ${#hostname} -lt 3 ]; then
    echo "$0: values for IP (-i) and/or name (-n) are empty or short"
else
    echo "$0: using IP-name arguments $hostip $hostname"
    grep $hostname /etc/hosts
    ret_code=$?
    if [ $ret_code != 0 ]; then
        echo "$0: extending hosts with $hostname"
        echo "$hostip $hostname" >> /etc/hosts
    else
        echo "$0: hosts already has $hostname"
    fi
fi

if [ ! -d $BASE ] ; then
    echo "$0: $BASE not found or not a directory"
    exit 1
fi
echo "$0: Starting server from $BASE"
LOGFILE=${BASE}/logs/catalina.out
echo "`date`:<--------------------    Starting     -------------------->" >> $LOGFILE
exec ${BASE}/bin/catalina.sh run  2>&1 | tee -a $LOGFILE