#!/bin/sh
# Decomission Apache / Tomcat / Jboss / Java  service
# written by Georgi Georgiev - gdgeorgiev@hp.com 04.02.2015
# Under GPLV3
# v. 0.5

tomcat_dir=/webdienste/appserv-jsp/tomcat;
apache_dir=/webdienste/webservers/apache;
jboss_dir=/webdienste/appserv-ejb/jboss;
java_dir=/webdienste/java/jdk;
tomcat_respawn_file=/webdienste/appserv-jsp/tomcat/.activ_instances.lst;
apache_respawn_file=/webdienste/webservers/apache/server_httpd.lst;
jboss_respawn_file=/webdienste/appserv-ejb/jboss/.activ_instances.lst

tomcat_value='2';
apache_value='1';
jboss_value='3';

read_vars () {
	printf "!! Decomission | Apache, / Tomcat / Jboss / Java | instance !!\n\n";
	printf "It will\n\n";
	printf "1. Stop Apache / Tomcat / JBoss / Java instance \n";
	printf "2. Create .tar.gz archive with current date in archiv/ folder.\n";
	printf "3. Delete archived instance and instance documentroot.\n\n"; 
	printf "Note that 4. Deleting Java is Experimental (not well tested yet)";
        printf "The Author of this script does not take any responsibility if script does something unexpected, you're running the script on your own\n\n";

        echo "!!! Before you start please comment out in server_httpd.lst or .activ_instances.lst host to prevent respawn attempts !!!";
	echo "===========================================";
        printf "Chooose \n\n1. Apache\n2. Tomcat\n3. Jboss\n4. Java \n\nChose 1,2,3 or 4: ";
        read decomm_service;

        printf "Enter host to decomission: ";
	read decomm_host;
	if [[ -z "$decomm_host" ]]; then
		echo "Entered empty host .. Exiting ! ";
	fi

check_vars;
#	check_if_service_proper;
}

check_vars () {
if [[ $decomm_service -ne "$tomcat_value" ]] && [[ $decomm_service -ne $apache_value ]] && [[ $decomm_service -ne $jboss_value ]] && [[ $decomm_service -ne $java_value ]]; then
echo "|$decomm_service|";
echo "Improper service number, please retry";
read_vars;
fi

if [[ ! -d $tomcat_dir/$decomm_host ]] && [[ ! -d $apache_dir/$decomm_host ]] && [[ ! -d $jboss_dir/$decomm_host ]] && [[ ! -d $java_dir/$decomm_host ]]; then
echo "$not_exist host not existng, choose manually";

if [[ $decomm_service == '1' ]]; then
unknown_dir="$apache_dir";
elif [[ $decomm_service == '2' ]]; then
unknown_dir="$tomcat_dir";
elif [[ $decomm_service == '3' ]]; then
unknown_dir="$jboss_dir";
elif [[ $decomm_service == '4' ]]; then
unknown_dir="$java_dir";
fi

echo cd $unknown_dir/
 cd $unknown_dir/
echo "===================";
ls -d *|grep -v server_httpd.lst|grep -v archiv|grep -v machine.|grep -i http;
echo "====================";
printf "Choose one of above list: ";
read decomm_host;
#if [[ -d $unknown_dir/$decomm_host ]]; then
#cd $unknown_dir/$decomm_host/current/bin;
#echo "";
#echo "1. Stopping $not_exist with sudo $PWD/apachectl stop";
#echo sudo $PWD/apachectl stop;
#echo "Should be stopped now, trying to grep it with ps axu";
#echo "ps aux | grep -i $decomm_host |grep -v grep";
#echo "------------------";
#ps axu|grep -i $decomm_host |grep -v grep;
#echo "-----------------";
#echo "If you see any output from ps axu, service failed to stop, this happens sometimes if thats the case kill it manually and press a key to continue";
#read no_putput;
fi

}

#check_if_service_proper() {
#	echo "$decomm_service aaa";
#	if [[ "$decomm_service" -ne  "1" ]] && [[ "$decomm_service" -ne "2" ]]; then
#		printf "Wrong service enter 1 or 2 as an options";
#	read_vars;
#	else
#		printf "Exiting ..";
#	exit 1;
#	fi
#}


archive() {
  CUR_date=$(date +%k_%d_%m_%Y);
 echo ;
 echo "2. Backuping up server_httpd.lst / .activ_instances.lst to $HOME/";

# Archive Tomcat
	if [[ "$decomm_service" -eq "$tomcat_value" ]]; then
		echo "2. Backuping up .activ_instances.lst to $HOME/.activ_instances.lst.bak.$CUR_date";
		echo "";
		sleep 3;
	cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst.bak.$(date +%k_%d_%m_%Y)
        ##cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst
	##	echo "Commenting out $decomm_host in .activ_instances.lst to prevent future respawn";
	##sed -e "s@$decomm_host@#$decomm_host - decomissioned $(date)@g" $HOME/.activ_instances.lst >> $HOME/.activ_instances.lst.new
		#sudo root:root $HOME/server_httpd.lst.new
        ##        sudo mv $HOME/.activ_instances.lst.new $tomcat_respawn_file;
		echo "Archiving Tomcat |$tomcat_dir/$decomm_host| directory";
	sudo tar -czvf $PWD/$decomm_host-backup_$CUR_date.tar.gz $tomcat_dir/$decomm_host $tomcat_dir/.activ_instances.lst;
	echo "Move to archive";
	if [[ ! -d /webdienste/appserv-jsp/archive ]]; then
		sudo mkdir /webdienste/appserv-jsp/archiv
	else
		echo "OK /webdienste/appserv-jsp/archiv dir exists continuing";
	fi
 	sudo tar -czvf /webdienste/appserv-jsp/archiv/$decomm_host-backup_$CUR_date.tar.gz $tomcat_dir/$decomm_host $tomcat_dir/.activ_instances.lst;


#		sudo mv $tomcat_dir/$decomm_host-backup_$CUR_date.tar.gz /webdienste/appserv-jsp/archive/;
	fi



# Archive Apache
		if [[ "$decomm_service" -eq "$apache_value" ]]; then
			echo "Backuping up server_httpd.lst to $HOME/.server_httpd.lst.bak.$CUR_date";
			sleep 3;
	cp -rpf $apache_respawn_file $HOME/server_httpd.lst.bak.$CUR_date
        #cp -rpf $apache_respawn_file $HOME/server_httpd.lst.bak
	#	echo "Commenting out $decomm_host in server_httpd.lst to prevent future respawn";
	#sed -e "s@$decomm_host@##$decomm_host - decomissioned $(date)@g" $HOME/server_httpd.lst >> $HOME/server_httpd.lst.new
        # sudo root:root $HOME/server_httpd.lst.new
        #  sudo mv $HOME/server_httpd.lst.new $apache_respawn_file;
	echo "Archiving Apache |$apache_dir/$decomm_host| directory";
	documentroot=$(grep -i documentroot $apache_dir/$decomm_host/current/conf/httpd.conf |awk '{ print $2 }'|sed -e 's#"##g');
        documentroot=${documentroot%$'\r'}
      #  sudo tar -czvf $apache_dir/archiv/$decomm_host-backup_$CUR_date.tar.gz $apache_dir/$decomm_host/ $documentroot $apache_dir/server_httpd.lst
     #   echo "Move $decomm_host-backup_$CUR_date archive";
        if [[ ! -d $apache_dir/archiv ]]; then
		sudo mkdir $apache_dir/archiv
	else
		echo "OK $apache_dir/archiv dir exists continuing";
	fi
        sudo tar -czvf $apache_dir/archiv/$decomm_host-backup_$CUR_date.tar.gz $apache_dir/$decomm_host/ $documentroot $apache_dir/server_httpd.lst
#		echo "Executing: mv $apache_dir$decomm_host-backup_$CUR_date.tar.gz $apache_dir;";
#	sudo mv $apache_dir/$decomm_host-backup_$CUR_date.tar.gz $apache_dir/archive/;

	fi


# Archive JBoss 
        if [[ "$decomm_service" -eq "$jboss_value" ]]; then
                echo "2. Backuping up .activ_instances.lst to $HOME/.activ_instances.lst.bak.$CUR_date";
                echo "";
                sleep 3;
        cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst.bak.$(date +%k_%d_%m_%Y)
        ##cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst
        ##      echo "Commenting out $decomm_host in .activ_instances.lst to prevent future respawn";
        ##sed -e "s@$decomm_host@#$decomm_host - decomissioned $(date)@g" $HOME/.activ_instances.lst >> $HOME/.activ_instances.lst.new
                #sudo root:root $HOME/server_httpd.lst.new
        ##        sudo mv $HOME/.activ_instances.lst.new $tomcat_respawn_file;
                echo "Archiving Jboss |$jboss_dir/$decomm_host| directory";
        sudo tar -czvf $PWD/$decomm_host-backup_$CUR_date.tar.gz $jboss_dir/$decomm_host $jboss_dir/.activ_instances.lst;
        echo "Move to archive";
        if [[ ! -d /webdienste/appserv-ejb/archive ]]; then
                sudo mkdir /webdienste/appserv-ejb/archiv
        else
                echo "OK /webdienste/appserv-ejb/archiv dir exists continuing";
        fi
        sudo tar -czvf /webdienste/appserv-ejb/archiv/$decomm_host-backup_$CUR_date.tar.gz $jboss_dir/$decomm_host $jboss_dir/.activ_instances.lst;


#               sudo mv $jboss_dir/$decomm_host-backup_$CUR_date.tar.gz /webdienste/appserv-ejb/archive/;
        fi


# Archive Java
        if [[ "$decomm_service" -eq "$java_value" ]]; then
##                echo "2. Backuping up .activ_instances.lst to $HOME/.activ_instances.lst.bak.$CUR_date";
##                echo "";
##                sleep 3;
##        cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst.bak.$(date +%k_%d_%m_%Y)
        ##cp -rpf $tomcat_respawn_file $HOME/.activ_instances.lst
        ##      echo "Commenting out $decomm_host in .activ_instances.lst to prevent future respawn";
        ##sed -e "s@$decomm_host@#$decomm_host - decomissioned $(date)@g" $HOME/.activ_instances.lst >> $HOME/.activ_instances.lst.new
                #sudo root:root $HOME/server_httpd.lst.new
        ##        sudo mv $HOME/.activ_instances.lst.new $tomcat_respawn_file;
                echo "Archiving Java |$java_dir/$decomm_host| directory";
        sudo tar -czvf $PWD/$decomm_host-backup_$CUR_date.tar.gz $java_dir/$decomm_host 
        echo "Move to archive";
        if [[ ! -d /webdienste/java/jdk ]]; then
                sudo mkdir /webdienste/java/archiv
        else
                echo "OK /webdienste/java/jdk dir exists continuing";
        fi
        sudo tar -czvf /webdienste/java/archiv/$decomm_host-backup_$CUR_date.tar.gz $java_dir/$decomm_host;


#               sudo mv $jboss_dir/$decomm_host-backup_$CUR_date.tar.gz /webdienste/appserv-ejb/archive/;
        fi


echo "COMPLETED"
}

stop_service() {
echo "Entered Stop service";
# Stop Tomcat
	if [[ $decomm_service -eq $tomcat_value ]] && [[ -d $tomcat_dir/$decomm_host ]]; then
		echo Tomcat;
		echo "2. Stopping down Tomcat $tomcat_dir/$decomm_host";
		echo "";
		sleep 3;
		cd $tomcat_dir/$decomm_host/$decomm_host/current/bin;
	$PWD/shutdown.sh

			echo "We enter stop tomcat";			fi

                if [[ $decomm_service -eq $tomcat_value ]] && [[ ! -d $tomcat_dir/$decomm_host ]]; then
                echo "$tomcat_dir/$decomm_host not existng, choose manually:";
                echo "-----------------------------";
                cd $tomcat_dir/
                ls -d *|grep -v .activ|grep -v archiv;
                echo "-----------------------------";
                                                printf "Input full dir path of one above list: ";
                                                read decomm_host;

                                                if [[ -d $tomcat_dir/$decomm_host ]]; then
                                                echo "Shutting Down $tomcat_dir/$decomm_host instance";
                                                cd $tomcat_dir/$decomm_host;
                                                $PWD/shutdown.sh
                                                echo "ps aux | grep -i $decomm_host";
                                                echo "------------------";
                                                ps axu|grep -i $decomm_host;
                                                echo "-----------------";
                                                echo "If you see any output from ps axu, service failed to stop, this happens sometimes if thats the case kill it manually and press a key to continue";
                                                read no_putput;
                                                fi

                                                fi


# Stop Apache
if [[ $decomm_service -eq $apache_value ]] && [[ -d $apache_dir/$decomm_host ]]; then
echo "2. Stopping down Apache $apache_dir/$decomm_host instance";
echo "Apache ..";
sleep 3;
echo "We enter here";
cd $apache_dir/$decomm_host/current/bin;

$PWD/apachectl stop
fi


# Stop Jboss
        if [[ $decomm_service -eq $jboss_value ]] && [[ -d $jboss_dir/$decomm_host ]]; then
                echo Jboss;
                echo "2. Stopping down JBoss $jboss_dir/$decomm_host";
                echo "";
                sleep 3;
                cd $jboss_dir/$decomm_host/$decomm_host/current/bin;
        $PWD/shutdown.sh

                                                fi
echo "We Enter Stop Jboss";
                if [[ $decomm_service -eq $jboss_value ]] && [[ ! -d $jboss_dir/$decomm_host ]]; then
                echo "$jboss_dir/$decomm_host not existng, choose manually:";
                echo "-----------------------------";
                cd $jboss_dir/
                ls -d *|grep -v .activ|grep -v archiv|grep -v machine.|grep -i http;
                echo "-----------------------------";
                                                printf "Input full dir path of one above list: ";
                                                read decomm_host;

                                                if [[ -d $jboss_dir/$decomm_host ]]; then
                                                echo "Shutting Down $jboss_dir/$decomm_host instance";
                                                cd $jboss_dir/$decomm_host;
                                                $PWD/shutdown.sh
                                                echo "ps aux | grep -i $decomm_host";
                                                echo "------------------";
                                                ps axu|grep -i $decomm_host;
                                                echo "-----------------";
                                                echo "If you see any output from ps axu, service failed to stop, this happens sometimes if thats the case kill it manually and press a key to continue";
                                                read no_putput;
                                                fi

           fi

# Stop Java
        if [[ $decomm_service -eq $java_value ]] && [[ -d $java_dir/$decomm_host ]]; then
                echo Jboss;
                echo "2. Stopping down Java $java_dir/$decomm_host";
                echo "";
                sleep 3;
       ##         cd $java_dir/$decomm_host/$decomm_host/current/bin;
       ## $PWD/shutdown.sh

                                                fi
echo "We Enter Stop Jboss";
                if [[ $decomm_service -eq $java_value ]] && [[ ! -d $java_dir/$decomm_host ]]; then
                echo "$java_dir/$decomm_host not existng, choose manually:";
                echo "-----------------------------";
                cd $java_dir/
                ls -d *|grep -v .activ|grep -v archiv|grep -v machine.|grep -i http;
                echo "-----------------------------";
                                                printf "Input full dir path of one above list: ";
                                                read decomm_host;

                                                if [[ -d $java_dir/$decomm_host ]]; then
                                                echo "Shutting Down $java_dir/$decomm_host instance";
                                                echo "cd $jboss_dir/$decomm_host;"
                                                #$PWD/shutdown.sh
                                                echo "ps aux | grep -i $decomm_host";
                                                echo "------------------";
                                                ps axu|grep -i $decomm_host;
                                                echo "-----------------";
                                                echo "If you see any output from ps axu, service failed to stop, this happens sometimes if thats the case kill it manually and press a key to continue";
                                                read no_putput;
                                                fi

           fi



}


delete_service() {
echo ;
echo "3. Delete Instance from server";
echo "";
sleep 3;
# Delete Tomcat
if [[ $decomm_service -eq $tomcat_value ]] && [[ -d $tomcat_dir/$decomm_host ]]; then
echo "Deleting $tomcat_dir/$decomm_host";
echo "!! Will be issuing rm !!";
echo -n "rm -rf $tomcat_dir/$decomm_host [Y/N]: "
read answer;
if [[ $answer == "Y" ]]; then
echo "Will be issuing sudo rm -rf $tomcat_dir/$decomm_host";
echo "";
echo "Are you absolutely sure?? Type Agree to continue";
read answer1;
if [[ $answer == "Y" ]] && [[ $answer1 == "Agree" ]]; then
echo "OK";
echo "";
sudo rm -rf $apache_dir/$decomm_host;
else
echo "To delete run manually below cmd:";
echo "sudo rm -rf $tomcat_dir/$decomm_host";

echo "OK I will not delete anything .. interrupting";
exit 1;
fi

fi

fi

# Delete Apache
if [[ $decomm_service -eq $apache_value ]] && [[ -d $apache_dir/$decomm_host ]]; then
echo "Deleting $apache_dir/$decomm_host";
echo "Will be issuing !!";
echo -n "rm -rf $apache_dir/$decomm_host $documentroot [Y/N]: "
read answer;

if [[ $answer == "Y" ]]; then

echo "Will be issuing sudo rm -rf $apache_dir/$decomm_host $documentroot";
echo "Are you absolutely sure?? Type Agree to continue";
read answer1;

if [[ $answer == "Y" ]] && [[ $answer1 == "Agree" ]]; then
echo "sudo rm -rf $apache_dir/$decomm_host $documentroot;"
else
echo "To delete manually run below cmd:";
echo "sudo rm -rf $apache_dir/$decomm_host $documentroot";

echo "OK I will not delete anything .. interrupting";
exit 0;
fi

fi

fi 

# Delete JBoss
if [[ $decomm_service -eq $jboss_value ]] && [[ -d $jboss_dir/$decomm_host ]]; then
echo "Deleting $jboss_dir/$decomm_host";
echo "!! Will be issuing rm !!";
echo -n "rm -rf $jboss_dir/$decomm_host [Y/N]: "
read answer;
if [[ $answer == "Y" ]]; then
echo "Will be issuing sudo rm -rf $jboss_dir/$decomm_host";
echo "Are you absolutely sure?? Type Agree to continue";
read answer1;

if [[ $answer == "Y" ]] && [[ $answer1 == "Agree" ]]; then
sudo rm -rf $jboss_dir/$decomm_host;
else
echo "To delete run manually below cmd:";
echo "sudo rm -rf $jboss_dir/$decomm_host";

echo "OK I will not delete anything .. interrupting";
exit 1;
fi

fi

fi

# Delete Java
if [[ $decomm_service -eq $java_value ]] && [[ -d $java_dir/$decomm_host ]]; then
echo "Deleting $java_dir/$decomm_host";
echo "!! Will be issuing rm !!";
echo -n "rm -rf $java_dir/$decomm_host [Y/N]: "
read answer;
if [[ $answer == "Y" ]]; then
echo "Will be issuing sudo rm -rf $java_dir/$decomm_host";
echo "Are you absolutely sure?? Type Agree to continue";
read answer1;

if [[ $answer == "Y" ]] && [[ $answer1 == "Agree" ]]; then
echo "sudo rm -rf $java_dir/$decomm_host;";
else
echo "To delete run manually below cmd:";
echo "sudo rm -rf $java_dir/$decomm_host";

echo "OK I will not delete anything .. interrupting";
exit 1;
fi

fi

fi



echo "Finished";
}

main()
{
read_vars;
echo "Stop service";
stop_service;
archive;
delete_service;
}
main;

