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 @@ ...@@ -2,7 +2,7 @@
# #
# update.sh # 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. # Use of this source is governed by a BSD-style license, see LICENSE file.
...@@ -10,19 +10,18 @@ ...@@ -10,19 +10,18 @@
VERSION="2.2" VERSION="2.2"
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# FUNCTIONS # Script functions
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
usage() usage()
{ {
echo "Usage: `basename $0` [-d <directory>] [-hV]" echo "Usage: ${0##*/} -d <directory> [-hV]"
echo "-d <directory> destination directory (default: /opt)" echo "-d <directory> destination directory of Warden server"
echo "-h print this help" echo "-h print this help"
echo "-V print script version number and exit" echo "-V print script version number and exit"
echo echo
echo "Example: # ./`basename $0` -d /opt" echo "Example: $ ./${0##*/} -d /opt/warden-server"
echo 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 echo
exit 0 exit 0
} }
...@@ -30,7 +29,7 @@ usage() ...@@ -30,7 +29,7 @@ usage()
version() version()
{ {
echo "`basename ${0}` - current version is $VERSION" echo "${0##*/} - current version is $VERSION"
exit 0 exit 0
} }
...@@ -38,9 +37,9 @@ version() ...@@ -38,9 +37,9 @@ version()
err() err()
{ {
echo "FAILED!" echo "FAILED!"
cat $err cat "$err"
rm -rf $err rm -f "$backup"
rm -rf $backup_dir rm -f "$err"
echo echo
echo "Update from $old_package_version to $package_version package FAILED!!!" echo "Update from $old_package_version to $package_version package FAILED!!!"
exit 1 exit 1
...@@ -54,44 +53,42 @@ errClean() ...@@ -54,44 +53,42 @@ errClean()
rm -rf ${server_path}/* > /dev/null 2>&1 rm -rf ${server_path}/* > /dev/null 2>&1
cp -R ${backup_dir}/* $server_path cp -R ${backup_dir}/* $server_path
cat $err cat $err
rm -rf $err $backup_dir rm -rf $err $backup
echo echo
echo "Update from $old_package_version to $package_version package FAILED!!!" echo "Update from $old_package_version to $package_version package FAILED!!!"
exit 1 exit 1
} }
rootChck()
{
if [ $UID -ne 0 ]; then
echo "You must be root for running this script!"
exit 1
fi
}
paramsChck() paramsChck()
{ {
if [ -z $prefix ]; then if [ -z "$basedir" ]; then
echo "Parameter -d <directory> is not set!" echo "Parameter -d <directory> is not set!"
exit 1 exit 1
fi fi
} }
obtainPackageVersion() #-------------------------------------------------------------------------------
# Installation functions
#-------------------------------------------------------------------------------
oldPackageChck()
{ {
if [ -f $old_package_version_file ]; then echo -n "Checking previous Warden server installation ... "
old_package_version=`cat $old_package_version_file` 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 if [ "$old_package_version" == "$package_version" ]; then
echo "Sorry, but $package_version package is already installed!" echo "Sorry, but $package_version package is already installed!"
exit 1 exit 1
fi fi
else else
echo "Sorry, but Warden server package is not installed!" echo "Sorry, but Warden server package is not yet installed!"
echo "For installation of Warden server package please use install.sh script." echo "For installation of Warden server package please use install.sh"
exit 1 exit 1
fi fi
echo "OK"
} }
...@@ -102,68 +99,42 @@ perlChck() ...@@ -102,68 +99,42 @@ perlChck()
echo "OK" echo "OK"
else else
echo "FAILED!" echo "FAILED!"
echo
echo "Error: Perl interpreter is not installed!" echo "Error: Perl interpreter is not installed!"
exit 1 exit 1
fi 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() 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 do
echo -n "Checking $module module ... " echo -n "Checking $module module ... "
if perl -e "use $module" 2> $err; then perl -e "use $module" 2> "$err" && echo "OK" || err
echo "OK"
else
err
fi
done done
} }
wardenDirChck() wardenDirChck()
{ {
echo -n "Checking Warden server directory ... " echo -n "Checking Warden server directory ... "
if [ ! -d $server_path ]; then if [[ ! -d "$basedir" ]] && [[ ! -w "$basedir" ]]; then
echo "FAILED!" echo "FAILED!"
ls $server_path echo "No version of Warden server is not installed!"
exit 1 exit 1
else else
echo "OK" echo "OK"
fi fi
} }
backup() backup()
{ {
echo -n "Backing-up Warden server directory ... " echo -n "Making Warden server backup ... "
mkdir $backup_dir mkdir $backup
if cp -R ${server_path}/* $backup_dir 2> $err; then if cp -R "${basedir}/"* "$backup" 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 "OK" echo "OK"
else else
err err
...@@ -173,14 +144,8 @@ obtainWardenUser() ...@@ -173,14 +144,8 @@ obtainWardenUser()
updateWardenDir() updateWardenDir()
{ {
echo -n "Updating Warden server directory ... " echo -n "Updating Warden server ... "
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
} }
...@@ -328,65 +293,61 @@ $valid_strings" > $server_conf_file 2> $err; ret_val=`echo $?` ...@@ -328,65 +293,61 @@ $valid_strings" > $server_conf_file 2> $err; ret_val=`echo $?`
# MAIN # 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 # read input
while getopts "d:Vh" options; do while getopts "d:Vh" options; do
case $options in case "$options" in
d ) prefix=$OPTARG;; d ) basedir="$OPTARG";;
h ) usage;; h ) usage;;
V ) version;; V ) version;;
* ) usage;; * ) usage;;
esac esac
done done
# root test # remove last char (slash) from name of directories
rootChck [[ "$basedir" == */ ]] && basedir="${basedir%?}"
# params test # params test
paramsChck paramsChck
# create variables # set 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"
err="/tmp/warden-err" 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
echo "------------------------- Dependencies check-in -------------------------" echo "------------------------- Dependencies check-in -------------------------"
# check warden server directory
wardenDirChck
#
oldPackageChck
# Perl interpreter test # Perl interpreter test
perlChck perlChck
# Rsync availability test
rsyncCheck
# Perl modules test # Perl modules test
modulesChck modulesChck
echo echo
echo "------------------------- Update process --------------------------------" echo "------------------------- Update process --------------------------------"
# check warden server directory
wardenDirChck
# backup old warden server installation # backup old warden server installation
backup backup
# obtain current warden server user
obtainWardenUser
# make warden server directory # make warden server directory
updateWardenDir updateWardenDir
...@@ -406,6 +367,6 @@ echo "Please follow post-update steps in ${doc}/UPDATE!" ...@@ -406,6 +367,6 @@ echo "Please follow post-update steps in ${doc}/UPDATE!"
echo echo
# cleanup section # cleanup section
rm -rf $err $backup_dir rm -rf $err $backup
exit 0 exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment