Skip to content
Snippets Groups Projects
Commit 262ff7d0 authored by Tomáš Plesník's avatar Tomáš Plesník
Browse files

aplha 1: port na warden-server-2.2; zapracovany poznamky z Auditu shellovych skriptu

parent 474f5e1f
No related branches found
No related tags found
No related merge requests found
......@@ -4,23 +4,25 @@
#
# Copyright (C) 2011-2013 Cesnet z.s.p.o
#
# Use of this source is governed by a BSD-style license, see LICENSE file.
VERSION="2.1"
VERSION="2.2"
#-------------------------------------------------------------------------------
# FUNCTIONS
# Script functions
#-------------------------------------------------------------------------------
usage()
{
echo "Usage: `basename $0` [-d <directory>] [-hV]"
echo "-d <directory> uninstallation directory (default: /opt)"
echo "Usage: ${0##*/} -d <directory> [-s <directory>] [-hV]"
echo "-d <directory> uninstallation directory of Warden server"
echo "-s <directory> directory for symlinks to Warden server control scripts (optional)"
echo "-h print this help"
echo "-V print script version number and exit"
echo
echo "Example: # ./`basename $0` -d /opt"
echo "Example: $ ${0##*/} -d /opt/warden-server -s /usr/local/bin"
echo
echo "Note: You must be root for running this script."
echo " For more information about uninstallation process, see README file (section Uninstallation)."
echo "For more information about uninstallation process, see README file (section Uninstallation)."
echo
exit 0
}
......@@ -28,7 +30,7 @@ usage()
version()
{
echo "`basename ${0}` - current version is $VERSION"
echo "${0##*/} - current version is $VERSION"
exit 0
}
......@@ -36,8 +38,9 @@ version()
err()
{
echo "FAILED!"
cat $err
rm -rf $err $backup_dir
cat "$err"
rm -f "$err"
rm -rf "$backup"
echo
echo "Uninstallation of $package_version package FAILED!!!"
exit 1
......@@ -47,55 +50,43 @@ err()
errClean()
{
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
for file in `ls -1 $bin`
do
ln -s ${bin}/$file ${local_bin}/$file # create symlinks to /usr/local/bin
done
cat $err
rm -rf $err $backup_dir
echo " -> Reverting changes of warden server package ... "
rm -rf "${basedir}/"* > /dev/null 2>&1
cp -R "${backup}/"* "$basedir"
if [[ ! -z "$symbin" ]] && [[ -d "$symbin" ]] && [[ -w "$symbin" ]]; then
for file in "${bin}/"*
do
ln -s "${bin}/${file##*/}" "${symbin}/${file##*/}"
done
fi
cat "$err"
rm -f "$err"
rm -rf "$backup"
echo
echo "Uninstallation of $package_version package FAILED!!!"
exit 1
}
rootChck()
{
if [ $UID -ne 0 ]; then
echo "You must be root for running this script!"
exit 1
fi
}
paramsChck()
{
if [ -z $prefix ]; then
if [ -z "$basedir" ]; then
echo "Parameter -d <directory> is not set!"
exit 1
fi
}
obtainPackageVersion()
{
if [ -f $old_package_version_file ]; then
package_version=`cat $old_package_version_file`
else
package_version="unknown"
fi
}
#-------------------------------------------------------------------------------
# Uninstallation functions
#-------------------------------------------------------------------------------
wardenDirChck()
{
echo -n "Checking Warden server directory ... "
if [ ! -d $server_path ]; then
if [[ ! -d "$basedir" ]] && [[ ! -w "$basedir" ]]; then
echo "FAILED!"
ls $server_path
echo "No version of Warden server is not installed!"
exit 1
else
echo "OK"
......@@ -103,11 +94,24 @@ wardenDirChck()
}
backup()
getPackageVersion()
{
echo -n "Backing-up Warden server directory ... "
mkdir $backup_dir
if cp -R ${server_path}/* $backup_dir 2> $err; then
echo -n "Checking Warden server version ... "
old_package_version_file=$(find "$basedir" -name package_version)
if [ -f "$old_package_version_file" ]; then
package_version=$(<"$old_package_version_file")
else
package_version="unknown"
fi
echo "OK"
}
createBackup()
{
echo -n "Creating Warden server backup ... "
[[ -d "$backup" ]] && rm -rf "$backup" || mkdir "$backup"
if cp -R "${basedir}/"* "$backup" 2> "$err"; then
echo "OK"
else
err
......@@ -115,87 +119,89 @@ backup()
}
deleteSymlinks()
uninstallWardenServer()
{
echo -n "Deleting symlinks from /usr/local/bin ..."
for file in `ls -1 $bin`
echo -n "Uninstalling $package_version package ... "
cp "${doc}/UNINSTALL" "$uninstall"
manifest=$(find "$basedir" -name MANIFEST) || err
for file in $(<"$manifest")
do
rm -rf ${local_bin}/$file 2> /dev/null
directory="${file%/*}"
rm -f "${basedir}/$file"
rmdir --ignore-fail-on-non-empty "${basedir}/$directory"
done
rm -f "${basedir}/uninstall.sh"
rmdir --ignore-fail-on-non-empty "$basedir"
echo "OK"
}
uninstallWardenServer()
deleteSymlinks()
{
echo -n "Uninstalling $package_version package ... "
cp ${doc}/UNINSTALL $uninstall_file
if rm -rf $server_path 2> $err; then
echo "OK"
else
errClean
fi
echo -n "Deleting symlinks from $symbin ..."
for file in "$symbin/"*
do
rm -f "${symbin}/${file##*/}" 2> /dev/null
done
echo "OK"
}
#-------------------------------------------------------------------------------
# MAIN
#-------------------------------------------------------------------------------
# read input
while getopts "d:Vh" options; do
case $options in
d ) prefix=$OPTARG;;
while getopts "d:s:Vh" options; do
case "$options" in
d ) basedir="$OPTARG";;
s ) symbin="$OPTARG";;
h ) usage;;
V ) version;;
* ) usage;;
esac
done
# root test
rootChck
# remove last char (slash) from name of directories
[[ "$basedir" == */ ]] && basedir="${basedir%?}"
# params test
paramsChck
# create variables
[[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix
dirname=`dirname $0`
server_path="${prefix}/warden-server"
bin="${server_path}/bin"
local_bin="/usr/local/bin"
etc="${server_path}/etc"
doc="${server_path}/doc"
uninstall_file="/tmp/UNINSTALL.warden"
old_package_version_file="${etc}/package_version"
# set variables
bin="${basedir}/bin"
etc="${basedir}/etc"
doc="${basedir}/doc"
err="/tmp/warden-err"
backup_dir="/tmp/warden-backup"
uninstall="/tmp/UNINSTALL.warden"
backup="/tmp/warden-backup"
# obtain version of installed warden-server package
obtainPackageVersion
echo
echo "------------------------- Uninstallation process --------------------------------"
# check if $prefix/warden-server directory exist
# check Warden server directory if exists
wardenDirChck
# make backup of currently installed warden-server package
backup
# obtain version of existing Warden server (if exists)
getPackageVersion
# delete symbolic links
deleteSymlinks
# make backup of currently installed warden-server package
createBackup
# do uninstallation
# uninstall Warden server
uninstallWardenServer
# delete symlinks from $symbin (if -s option is set)
[[ ! -z "$symbin" ]] && [[ -d "$symbin" ]] && [[ -w "$symbin" ]] && deleteSymlinks
echo
echo "Please follow post-uninstallation steps in $uninstall_file!"
echo "Please follow post-uninstallation steps in $uninstall!"
echo
echo "Uninstallation of $package_version package was SUCCESSFUL!"
echo "Uninstallation of $package_version package was SUCCESSFUL!!!"
echo
# cleanup section
rm -rf $err $backup_dir
rm -r "$err"
rm -rf "$backup"
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment