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

uprava podle Auditu shellovych skriptu

parent d6077d9a
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
#
# update.sh
#
# Copyright (C) 2011-2013 Cesnet z.s.p.o
# Copyright (C) 2011-2014 Cesnet z.s.p.o
#
# Use of this source is governed by a BSD-style license, see LICENSE file.
......@@ -10,19 +10,18 @@
VERSION="2.2"
#-------------------------------------------------------------------------------
# FUNCTIONS
# Script functions
#-------------------------------------------------------------------------------
usage()
{
echo "Usage: `basename $0` [-d <directory>] [-hV]"
echo "-d <directory> destination directory (default: /opt)"
echo "Usage: ${0##*/} -d <directory> [-hV]"
echo "-d <directory> destination directory of Warden server"
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"
echo
echo "Note: You must be root for running this script."
echo " For more information about update process, see README file (section Update)."
echo "For more information about update process, see README file (section Update)."
echo
exit 0
}
......@@ -30,7 +29,7 @@ usage()
version()
{
echo "`basename ${0}` - current version is $VERSION"
echo "${0##*/} - current version is $VERSION"
exit 0
}
......@@ -38,9 +37,9 @@ version()
err()
{
echo "FAILED!"
cat $err
rm -rf $err
rm -rf $backup_dir
cat "$err"
rm -f "$backup"
rm -f "$err"
echo
echo "Update from $old_package_version to $package_version package FAILED!!!"
exit 1
......@@ -54,44 +53,42 @@ errClean()
rm -rf ${server_path}/* > /dev/null 2>&1
cp -R ${backup_dir}/* $server_path
cat $err
rm -rf $err $backup_dir
rm -rf $err $backup
echo
echo "Update from $old_package_version to $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()
#-------------------------------------------------------------------------------
# Installation functions
#-------------------------------------------------------------------------------
oldPackageChck()
{
if [ -f $old_package_version_file ]; then
old_package_version=`cat $old_package_version_file`
echo -n "Checking previous Warden server installation ... "
old_package_version_file=$(find "$basedir" -name package_version)
if [ -f "$old_package_version_file" ]; then
old_package_version=$(<"$old_package_version_file")
if [ "$old_package_version" == "$package_version" ]; then
echo "Sorry, but $package_version package is already installed!"
exit 1
fi
else
echo "Sorry, but Warden server package is not installed!"
echo "For installation of Warden server package please use install.sh script."
echo "Sorry, but Warden server package is not yet installed!"
echo "For installation of Warden server package please use install.sh"
exit 1
fi
echo "OK"
}
......@@ -102,68 +99,42 @@ perlChck()
echo "OK"
else
echo "FAILED!"
echo
echo "Error: Perl interpreter is not installed!"
exit 1
fi
}
rsyncChck()
{
echo -n "Checking Rsync ... "
if which rsync 1> /dev/null; then
echo "OK"
else
echo "FAILED!"
echo "Error: Rsync is not installed!"
exit 1
fi
}
modulesChck()
{
for module in ${modules[@]};
sed '/^use [A-Z]/!d; /Warden/d' $(find "${dirname}" -type f) 2>/dev/null | cut -f 2 -d " " | sed 's/;//' | sort -u | \
while read module;
do
echo -n "Checking $module module ... "
if perl -e "use $module" 2> $err; then
echo "OK"
else
err
fi
perl -e "use $module" 2> "$err" && echo "OK" || err
done
}
wardenDirChck()
{
echo -n "Checking Warden server directory ... "
if [ ! -d $server_path ]; then
echo "FAILED!"
ls $server_path
exit 1
else
echo "OK"
fi
echo -n "Checking Warden server directory ... "
if [[ ! -d "$basedir" ]] && [[ ! -w "$basedir" ]]; then
echo "FAILED!"
echo "No version of Warden server is not installed!"
exit 1
else
echo "OK"
fi
}
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
}
obtainWardenUser()
{
echo -n "Obtaining Warden server directory owner ... "
if user=`stat -c %U $server_conf_file` 2> $err; then
echo -n "Making Warden server backup ... "
mkdir $backup
if cp -R "${basedir}/"* "$backup" 2> "$err"; then
echo "OK"
else
err
......@@ -173,14 +144,8 @@ obtainWardenUser()
updateWardenDir()
{
echo -n "Updating Warden server directory ... "
if rsync -q --recursive --archive --delete --exclude='etc' --exclude='sh' ${dirname}/warden-server $prefix 2> $err; then
echo "OK"
else
errClean
fi
cp ${dirname}/warden-server/etc/package_version $etc
cp ${dirname}/uninstall.sh $server_path
echo -n "Updating Warden server ... "
}
......@@ -328,65 +293,61 @@ $valid_strings" > $server_conf_file 2> $err; ret_val=`echo $?`
# MAIN
#-------------------------------------------------------------------------------
# list of used Perl modules
modules=(SOAP::Lite SOAP::Transport::HTTP DBI DBD::mysql Format::Human::Bytes Sys::Syslog File::Basename Net::CIDR::Lite DateTime Getopt::Std Switch IO::Socket::SSL MIME::Base64 Crypt::X509 Carp FindBin)
# read input
while getopts "d:Vh" options; do
case $options in
d ) prefix=$OPTARG;;
case "$options" in
d ) basedir="$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
dirname=`dirname $0`
package_version=`cat ${dirname}/warden-server/etc/package_version`
[[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix
server_path="${prefix}/warden-server"
etc="${server_path}/etc"
doc="${server_path}/doc"
old_package_version_file="${etc}/package_version"
apache_conf_file="${etc}/warden-apache.conf"
server_conf_file="${etc}/warden-server.conf"
# set variables
err="/tmp/warden-err"
backup_dir="/tmp/warden-server-backup"
backup="/tmp/warden-server-backup"
hostname=$(hostname -f || echo "unspecified.server")
dirname=${0%/*}
doc="${basedir}/doc"
etc="${basedir}/etc"
server_conf="${etc}/warden-server.conf"
apache_conf="${etc}/warden-apache.conf"
watchdog_conf="${etc}/warden-watchdog.conf"
server_conf_tmpl="${dirname}/etc/warden-server.conf.tmpl"
apache_conf_tmpl="${dirname}/etc/warden-apache.conf.tmpl"
watchdog_conf_tmpl="${dirname}/etc/warden-watchdog.conf.tmpl"
package_version=$(<"${dirname}/etc/package_version")
manifest="${dirname}/doc/MANIFEST"
# obtain version of old warden server
obtainPackageVersion
echo
echo "------------------------- Dependencies check-in -------------------------"
# check warden server directory
wardenDirChck
#
oldPackageChck
# Perl interpreter test
perlChck
# Rsync availability test
rsyncCheck
# Perl modules test
modulesChck
echo
echo "------------------------- Update process --------------------------------"
# check warden server directory
wardenDirChck
# backup old warden server installation
backup
# obtain current warden server user
obtainWardenUser
# make warden server directory
updateWardenDir
......@@ -406,6 +367,6 @@ echo "Please follow post-update steps in ${doc}/UPDATE!"
echo
# cleanup section
rm -rf $err $backup_dir
rm -rf $err $backup
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment