#!/bin/bash
BACKUP_DIR="backup_$(date +%Y%m%d)"
echo "Stopping Tomcat"
systemctl stop tomcat

DEFAULT_TOMCAT_VERSION=9.0.112
TOMCAT_VERSION="${1:-$DEFAULT_TOMCAT_VERSION}"

if [ "$TOMCAT_VERSION" == "" ];
then
	TOMCAT_VERSION=$DEFAULT_TOMCAT_VERSION
fi

echo $TOMCAT_VERSION
if [[ "$TOMCAT_VERSION" =~ ([0-9]{1,3}\.) ]];
then
	echo "Version good"
else
	echo "Invalid version specified, exiting"
	exit -1
fi

if [[ ! "$TOMCAT_VERSION" =~ ^9 ]];
then
	echo "This only updates Tomcat 9"
	exit -1
fi

TOMCAT_NAME=apache-tomcat-$TOMCAT_VERSION
FILENAME=$TOMCAT_NAME.tar.gz
echo "Downloading Tomcat $TOMCAT_VERSION"
curl -o $FILENAME https://archive.apache.org/dist/tomcat/tomcat-9/v$TOMCAT_VERSION/bin/$FILENAME

FILESIZE=$(stat -c%s "$FILENAME")
if [ $FILESIZE -lt 10000 ];
then
	echo "Tomcat did not download correctly! File size of $FILESIZE bytes is to small"
	exit -1
fi
echo "Backup current webapps"
if [ ! -d "$BACKUP_DIR" ];
then
	mkdir $BACKUP_DIR
	cp -rp /usr/share/tomcat/webapps/ $BACKUP_DIR/
	echo "Backup Tomcat configuration"
	cp -p /usr/lib/systemd/system/tomcat.service $BACKUP_DIR/
	cp -rp /etc/tomcat $BACKUP_DIR/etc_tomcat
	cp -rp /usr/libexec/tomcat $BACKUP_DIR/libexec_tomcat
	cp -rp /usr/share/java-utils $BACKUP_DIR/
	cp -p /etc/sysconfig/tomcat $BACKUP_DIR/sysconfig_tomcat
fi

rm -fr /opt/tomcat/bin/*
rm -fr /opt/tomcat/lib/*

echo "Update Tomcat to $TOMCAT_VERSION"
tar xvzf $FILENAME -C /opt/
mv /opt/$TOMCAT_NAME/bin/* /opt/tomcat/bin
mv /opt/$TOMCAT_NAME/lib/* /opt/tomcat/lib

chown -R tomcat:tomcat /opt/tomcat/bin
chown -R tomcat:tomcat /opt/tomcat/lib

rm -fr /opt/$TOMCAT_NAME

systemctl start tomcat

echo "Current Tomcat details"
java -cp /usr/share/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo
