#!/bin/bash
domain=$1
java_version=$2
tomcat_version=$3
http=$4
ajp=$5
sdport=$6

http='10080';
ajp='11010';
sdport='21080'
proxy_url='http-proxy-url.net:8080';
export https_proxy="$proxy_url"
# webdav host and dir - sl04097:/webdienste/dav/eoi/software # 
tomcat_url='https://repository-site.com/software/tomcat';
scripts_url='https://repository-site.com/software/scripts';
tomcat[0]="tomcat8j18.tgz";
tomcat[1]="apache-tomcat-5.5.26.tar.gz";
tomcat[2]="apache-tomcat-6.0.9-deployer.tar.gz";
tomcat[3]="apache-tomcat-7.0.67.tar.gz";
tomcat[4]="apache-tomcat-8.0.30.tar.gz";
jboss_url='https://repository-site.com/software/jboss';
jboss[0]="jboss-3.2.8.SP1.tar.bz2";
jboss[1]="jboss-4.2.3.GA.zip";
jboss[2]="jboss-5.1.0.GA-jdk6.zip";
jboss[3]="jboss-as-distribution-6.1.0.Final.zip";
jboss[3]="jboss-as-7.1.1.Final.tar.gz";

java_url='https://repository-site.com/software/java';
java[0]="jdk-7u79-linux-i586.tar.gz";
java[1]="jdk-7u79-linux-x64.tar.gz";
java[2]="jdk-8u71-linux-i586.tar.gz";
java[3]="jdk-8u71-linux-x64.tar.gz";
tomcat_cnt=${#tomcat[@]};
jboss_cnt=${#jboss[@]};
java_cnt=${#java[@]};

tomcat_path='/webdienste/appserv-jsp/tomcat';
java_path='/webdienste/java/jdk';
temp_path='/webdienste/transfer/autoinstall';
##echo $tomcat_cnt;
##exit 0;
check_basic_args () {
if [ "$#" -lt "5" ]; then
echo 1>&2 "$0: not enough arguments.";
echo "Usage: fqdn java_version tomcat_version http_port ajp_port shutdown_port. Http and ajp are required."
exit 2
fi
}

get_args () {
read -p "Domain: " domain;


}

choose_version () { 
# Choose tomcat version
##echo 'Choose Tomcat Version: ';
for i in $(seq 0 $(($tomcat_cnt - 1))); do
echo "$i. ${tomcat[$i]}";
done
read -p "Choose Tomcat version:" tomcat_version;
echo "$tomcat_version";

if [[ tomcat_version -ne "1" ]] && [[ tomcat_version -ne "2" ]] && [[ tomcat_version -ne "3" ]] && [[ tomcat_version -ne "3" ]] && [[ tomcat_version -ne "4" ]] && [[ tomcat_version -ne "5" ]]; then
echo "Version doesnt exist";
exit 0;
fi
tomcat_dir="$(echo ${tomcat[$tomcat_version]} | sed -e "s#.tar.gz##g")";
echo "|Tomcat_Dir: $tomcat_dir|";
##exit 0;

# Choose java version
##echo 'Choose Java Version';
for i in $(seq 0 $(($java_cnt - 1))); do
echo "$i. ${java[$i]}";
done
read -p "Choose Java version:" java_version;
echo "$java_version";

if [[ java_version -ne "1" ]] && [[ java_version -ne "2" ]] && [[ java_version -ne "3" ]] && [[ java_version -ne "3" ]] && [[ java_version -ne "4" ]]; then
echo "Version doesnt exist";
exit 0;
fi

java_dir="$(echo ${java[$java_version]} | sed -e "s#.tar.gz##g")";
##echo DDDDD $java_dir;

##exit 0;


}

#Download tomcat

down_tomcat () {
if [ -d $temp_path ]; then
    cd $temp_path
    wget --no-check-certificate --timeout=5 $tomcat_url/${tomcat[$tomcat_version]}
    tar zxvf ${tomcat[$tomcat_version]}
else
mkdir $temp_path
    cd $temp_path
    wget --no-check-certificate --timeout=5 $tomcat_url/${tomcat[$tomcat_version]}
    tar zxvf ${tomcat[$tomcat_version]}
fi


#Tomcat create dirs
mkdir -p $tomcat_path/${domain}
   cd $temp_path/$tomcat_dir/
   wget --no-check-certificate --timeout=5 $tomcat_url/lib.tar.gz
   echo "Extracting libs";
   tar -zxvvf lib.tar.gz
# Disable unusued webapps
read -p 'Disable common default webapps {balancer,jsp-examples,servlets-examples,tomcat-docs,webdav} [Y/N]:' disable
if [[ "$disable" == 'y' ]] || [[ "$disable" == 'Y' ]]; then
echo 'Removing Read / Write / Exec access from {balancer,jsp-examples,servlets-examples,tomcat-docs,webdav,examples,host-manager,manager}';
chmod 000 -R $temp_path/$tomcat_dir/webapps/{balancer,jsp-examples,servlets-examples,tomcat-docs,webdav,examples,host-manager,manager,docs} >/dev/null >2&1
fi
cp -rpf $temp_path/$tomcat_dir/ $tomcat_path/${domain}/
cd $tomcat_path/${domain}
ln -sf $(ls -1 $tomcat_path/${domain}/) current
    cd $tomcat_path/${domain}/current/bin/
echo "Downloading with wget setenv.sh";
  wget --no-check-certificate --timeout=5 $scripts_url/setenv.sh
  chmod +x $tomcat_path/${domain}/current/bin/setenv.sh
}

#Java create dirs

down_java () {
java_dir="$(echo ${java[$version]} | sed -e "s#.tar.gz##g")";
echo MUU $java_dir;

if [ -d $temp_path ]; then
    cd $temp_path
    wget --no-check-certificate --timeout=5 $java_url/${java[$java_version]}
    tar zxvf ${java[$java_version]}
else
    mkdir -p $temp_path
    cd $temp_path
    wget --no-check-certificate --timeout=5 $java_url/${java[$java_version]}
    tar zxvf ${java[$java_version]}

fi


#Java create dir
mkdir -p $java_path/${domain}/
cp -rpf $temp_path/jdk*/ /webdienste/java/jdk/${domain}/
cd $java_path/${domain}/
ln -sf $(ls -1 $java_path/${domain}/) current
##cd $java_path/${domain}/current/bin/
##echo MUU $java_dir;

}


fix_settings () {
#Change tomcat settings
echo "Changing |setenv.sh| and |server.xml| Configurations ."
sed -i "s/site_url.com/${domain}/" $tomcat_path/${domain}/current/bin/setenv.sh
#sed -i "s/10080/${http}/" $tomcat_path/${domain}/current/conf/server.xml
sed -i "s/8009/${ajp}/" $tomcat_path/${domain}/current/conf/server.xml
sed -i "s/8005/${sdport}/" $tomcat_path/${domain}/current/conf/server.xml
sed -i "s/site-url.com/${domain}/g" $tomcat_path/${domain}/current/bin/setenv.sh
if [ $(grep "${domain}" $tomcat_path/.activ_instances.lst) ]; then 
echo "Will not add $domain to .active_instances.lst .. Existing."; 
else
echo "Adding $domain to $tomcat_path/.activ_instances.lst";
echo "$domain" >> $tomcat_path/.activ_instances.lst
fi
}

startup () {
cd $tomcat_path/${domain}/current/bin
echo "Starting up Tomcat for ${domain}";
sh startup.sh
echo "Sleeping 10 seconds";
sleep 10;
echo "Catalina.out messages";
if [ -f $tomcat_path/${domain}/current/logs/catalina.out ]; then
tail -n 50 $tomcat_path/${domain}/current/logs/catalina.out
else
echo "catalina.out not found .. exiting";
exit 1;
fi

}


cleanup () {
echo "Cleaning up everything in $temp_path";
rm -rf $temp_path/*
}

main () {
##check_basic_args;
get_args;
choose_version;
down_tomcat;
down_java;
fix_settings;
startup;
cleanup;
}
main;
