Skip to content
Snippets Groups Projects
Select Git revision
  • 2c5c43fa091b3a4b6446e44f6e2761f66f04c43d
  • master default protected
  • devel
  • hruska-feature-clients-api
  • malostik-#5066-deduplicate-idea-ids
  • warden-postgresql-port
  • hruska-feature-#6799-filter-keys
  • hruska-feature-5066-duplicateIdeaID
  • warden-client-3.0-beta3
  • warden-server-3.0-beta3
  • warden-client-2.2-final
  • warden-server-2.2-final
  • warden-client-3.0-beta2
  • warden-server-3.0-beta2
  • warden-client-2.2
  • warden-server-2.2-patch3
  • warden-client-3.0-beta1
  • warden-server-3.0-beta1
  • warden-server-2.2-patch1
  • warden-client-3.0-beta0
  • warden-server-3.0-beta0
  • warden-server-2.2
  • warden-server-2.1-patch1
  • warden-client-2.1
  • warden-server-2.1
  • warden-server-2.1-beta6
  • warden-server-2.1-beta5
  • warden-server-2.1-beta4
28 results

uninstall.sh

Blame
  • uninstall.sh 6.04 KiB
    #!/bin/bash
    #
    # uninstall.sh
    #
    # Copyright (C) 2011-2012 Cesnet z.s.p.o
    # Author(s): 	Tomas PLESNIK 	<plesnik@ics.muni.cz>
    #		Jan SOUKAL	<soukal@ics.muni.cz>
    #
    # Redistribution and use in source and binary forms, with or without
    # modification, are permitted provided that the following conditions
    # are met:
    # 1. Redistributions of source code must retain the above copyright
    #    notice, this list of conditions and the following disclaimer.
    # 2. Redistributions in binary form must reproduce the above copyright
    #    notice, this list of conditions and the following disclaimer in
    #    the documentation and/or other materials provided with the
    #    distribution.
    # 3. Neither the name of the Cesnet z.s.p.o nor the names of its
    #    contributors may be used to endorse or promote products derived from
    #     this software without specific prior written permission.
    #
    # This software is provided ``as is'', and any express or implied
    # warranties, including, but not limited to, the implied warranties of
    # merchantability and fitness for a particular purpose are disclaimed.
    # In no event shall the Cesnet z.s.p.o or contributors be liable for
    # any direct, indirect, incidental, special, exemplary, or consequential
    # damages (including, but not limited to, procurement of substitute
    # goods or services; loss of use, data, or profits; or business
    # interruption) however caused and on any theory of liability, whether
    # in contract, strict liability, or tort (including negligence or
    # otherwise) arising in any way out of the use of this software, even
    # if advised of the possibility of such damage.
    
    VERSION="0.1"
    
    #-------------------------------------------------------------------------------
    #				FUNCTIONS
    #-------------------------------------------------------------------------------
    usage()
    {
    	echo "Usage: `basename $0` [-d <directory>] [-hV]"
    	echo "-d <directory>            uninstallation directory (default: /opt)"
    	echo "-h                        print this help"
    	echo "-V                        print script version number and exit"
    	echo
    	echo "Example: # ./`basename $0` -d /opt"
    	echo
    	echo "Note: You must be root for running this script."
    	echo "      For more information about uninstallation process, see README file (section Uninstallation)."
    	echo
    	exit 0
    }
    
    
    version()
    {
    	echo "`basename ${0}` - current version is $VERSION"
    	exit 0
    }
    
    
    err()
    {
    	echo "FAILED!"
    	cat $err
    	rm -rf $err $backup_dir
    	echo
    	echo "Uninstallation of $package_version package FAILED!!!"
    	exit 1
    }
    
    
    err_clean()
    {
    	echo "FAILED!"
    	echo " -> Reverting changes of warden server package ... OK"
    	rm -rf $server_path/* > /dev/null 2>&1		# delete new version 
    	cp -R $backup_dir/* $server_path		# copy old backuped server
    	chmod 600 $db_file				# change permission to DB file
    	for file in `ls -1 $bin | grep -v warden-alive | grep -v create_tables.sh | grep -v wardend`
    	do  
    		ln -s ${bin}/$file ${local_bin}/$file	# create symlinks to /usr/local/bin
    	done
    	ln -s ${bin}/wardend $init			# create symlink to /etc/init.d/
    	$init start					# start server
    	cat $err
    	rm -rf $err $backup_dir
    	echo
    	echo "Uninstallation of $package_version package FAILED!!!"
    	exit 1
    }
    
    
    os_chck()
    {
    	OS=`uname`
    	if [ "$OS" != "Linux" ]; then
    		echo "Sorry, unsupported operating system detected - \"$OS\"!"
    		exit 1
    	fi
    }
    
    
    shell_chck()
    {
    	SHELL=`echo $SHELL`
    	if [ "$SHELL" != "/bin/bash" ]; then
    		echo "Sorry, this script is usable in Bourne Again Shell (bash) only!"
    		exit 1
    	fi
    }
    
    
    root_chck()
    {
    	if [ $UID -ne 0 ]; then
    		echo "You must be root for running this script!"
    		exit 1
    	fi
    }
    
    
    params_chck()
    {
    	if [ -z $prefix ]; then
    		prefix=/opt
    		echo "Warning: parameter -d <directory> is not set - default uninstallation directory is $prefix!"
    	fi
    }
    
    
    obtain_package_version()
    {
    	if [ -f $old_package_version_file ]; then 
    		package_version=`cat $old_package_version_file`
    	else
    		package_version="unknown"
    	fi
    }
    
    
    warden_dir_chck()
    {
    	echo -n "Checking warden server directory ... "
    	if [ ! -d $server_path ]; then
    		echo "FAILED!"
    		ls $server_path
    		exit 1
    	else
    		echo "OK"
    	fi
    }
    
    
    stop_warden_server()
    {
    	echo "Stopping warden server ... "
    	$init stop || $init force-stop
    }
    
    
    backup()
    {
    	echo -n "Backing-up warden server directory ... "
    	mkdir $backup_dir
    	if cp -R $server_path $backup_dir 2> $err; then
    		echo "OK"
    	else
    		err
    	fi
    }
    
    
    delete_symlinks()
    {
    	echo -n "Deleting symlinks from /usr/local/bin ..."
    	for file in `ls -1 $bin | grep -v warden-alive | grep -v wardend | grep -v create_tables.sh`
    	do
    		rm -rf /usr/local/bin/$file 2> /dev/null
    	done
    	echo "OK"
    	echo -n "Deleting symlink from $init ..."
    	rm -rf $init 2> /dev/null
    	echo "OK"
    }
    
    
    uninstall_warden_server()
    {
    	echo -n "Uninstalling $package_version package ... "
    	if rm -rf $server_path 2> $err; then
    		echo "OK"
    	else
    		err_clean
    	fi
    }
    
    
    
    #-------------------------------------------------------------------------------
    #				MAIN
    #-------------------------------------------------------------------------------
    
    # OS test
    os_chck
    
    # Shell test
    shell_chck
    
    # read input
    while getopts "d:Vh" options; do
    	case $options in
    		d ) prefix=$OPTARG;;
    		h ) usage;;
    		V ) version;;
    		* ) usage;;
    	esac
    done
    
    # root test
    root_chck
    
    # params test
    params_chck
    
    # create variables
    [[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix
    server_path="${prefix}/warden-server"
    bin="${server_path}/bin"
    local_bin="/usr/local/bin"
    etc="${server_path}/etc"
    var="${server_path}/etc"
    db_file="${var}/warden.db"
    old_package_version_file="${etc}/package_version"
    err="/tmp/warden-err"
    backup_dir="/tmp/warden-backup"
    init="/etc/init.d/wardend"
    
    # obtain version of installed warden-server package
    obtain_package_version
    
    echo
    echo "------------------------- Uninstallation process --------------------------------"
    
    # check if $prefix/warden-server directory exist
    warden_dir_chck
    
    # stop running warden server
    stop_warden_server
    
    # make backup of currently installed warden-server package
    backup
    
    # delete symbolic links
    delete_symlinks
    
    # do uninstallation
    uninstall_warden_server
    
    echo
    echo "Uninstallation of $package_version package was SUCCESSFUL!!!"
    
    # cleanup section
    rm -rf $err $backup_dir
    
    exit 0