From 3f29a9cc8c7ff836534c08117c0f449a30153bbb Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Thu, 26 Sep 2013 17:19:40 +0200 Subject: [PATCH] zapracovany poznamky z #628 --- src/warden-server/sh/install.sh | 149 ++++++++++++-------------------- 1 file changed, 55 insertions(+), 94 deletions(-) diff --git a/src/warden-server/sh/install.sh b/src/warden-server/sh/install.sh index 92fdd8b..c406af1 100755 --- a/src/warden-server/sh/install.sh +++ b/src/warden-server/sh/install.sh @@ -10,22 +10,21 @@ VERSION="2.2" #------------------------------------------------------------------------------- -# FUNCTIONS +# Script functions #------------------------------------------------------------------------------- usage() { - echo "Usage: `basename $0` [-d <directory>] [-k <ssl_key_file>] [-c <ssl_cert_file>] [-a <ssl_ca_file>] [-hV]" - echo "-d <directory> installation directory (default: /opt)" + echo "Usage: ${0##*/} -d <directory> -k <ssl_key_file> -c <ssl_cert_file> -a <ssl_ca_file> [-hV]" + echo "-d <directory> installation directory" echo "-k <ssl_key_file> path to SSL certificate key file" echo "-c <ssl_cert_file> path to SSL certificate file" echo "-a <ssl_ca_file> path to CA certificate file" echo "-h print this help" echo "-V print script version number and exit" echo - echo "Example: # ./`basename $0` -d /opt -k /etc/ssl/private/server.key -c /etc/ssl/certs/server.pem -a /etc/ssl/certs/tcs-ca-bundle.pem" + echo "Example: # ./${0##*/} -d /opt -k /etc/ssl/private/server.key -c /etc/ssl/certs/server.pem -a /etc/ssl/certs/tcs-ca-bundle.pem" echo - echo "Note: You must be root for running this script." - echo " For more information about installation process, see README file (section Installation)." + echo "For more information about installation process, see README file (section Installation)." echo exit 0 } @@ -33,7 +32,7 @@ usage() version() { - echo "`basename ${0}` - current version is $VERSION" + echo "${0##*/} - current version is $VERSION" exit 0 } @@ -41,8 +40,8 @@ version() err() { echo "FAILED!" - cat $err - rm -rf $err + cat "$err" + rm -f "$err" echo echo "Installation of $package_version package FAILED!!!" exit 1 @@ -53,50 +52,45 @@ errClean() { echo "FAILED!" echo " -> Uninstalling server package ... OK" - rm -rf $server_path > /dev/null 2>&1 - cat $err - rm -rf $err + rm -rf "$server_dir/"* > /dev/null 2>&1 + cat "$err" + rm -f "$err" echo echo "Installation 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 "$server_dir" ]; then echo "Parameter -d <directory> is not set!" exit 1 fi - if [ -z $key ]; then + if [ -z "$key_file" ]; then echo "Parameter -k <ssl_key_file> is not set!" exit 1 fi - if [ -z $cert ]; then + if [ -z "$cert_file" ]; then echo "Parameter -c <ssl_cert_file> is not set!" exit 1 fi - if [ -z $ca_file ]; then + if [ -z "$ca_file" ]; then echo "Parameter -a <ssl_ca_file> is not set!" exit 1 fi } +#------------------------------------------------------------------------------- +# Installation functions +#------------------------------------------------------------------------------- + oldPackageChck() { old_package_version_file="${etc}/package_version" - if [ -f $old_package_version_file ]; then - old_package_version=`cat $old_package_version_file` + if [ -f "$old_package_version_file" ]; then + old_package_version=$(< "$old_package_version_file") || err echo "Sorry, but $old_package_version package is installed!" echo "For update of warden server package please use update.sh" exit 1 @@ -118,31 +112,23 @@ perlChck() modulesChck() { - for module in ${modules[@]}; + sed '/^use [A-Z]/!d; /Warden/d' `find "${dirname}/warden-server" -type f` 2>/dev/null | cut -f 2 -d " " | sed 's/;//' | sort -u > "$modules_file" + for module in $(<"$modules_file"); 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 } -makeWardenDir() +createWardenDir() { echo -n "Creating Warden server directory ... " - test -d $prefix || mkdir -p $prefix - if cp -R ${dirname}/warden-server $prefix 2> $err; then - echo "OK" - else - errClean - fi - cp ${dirname}/uninstall.sh $server_path + test -d "$server_dir" && test -w "$server_dir" || mkdir -p "$server_dir" 2> "$err" || err + cp -R "${dirname}/warden-server/"* "$server_dir" 2> "$err" && echo "OK" || errClean + cp "${dirname}/uninstall.sh" "$server_dir" } - makeServerConf() { echo -n "Creating server configuration file ... " @@ -153,7 +139,7 @@ makeServerConf() #------------------------------------------------------------------------------- # BASEDIR - base directory of Warden server #------------------------------------------------------------------------------- -\$BASEDIR = \"${server_path}\"; +\$BASEDIR = \"${server_dir}\"; #------------------------------------------------------------------------------- # SYSLOG - enable/disable syslog logging @@ -202,13 +188,7 @@ makeServerConf() %VALID_STRINGS = ( \"type\" => [\"portscan\", \"bruteforce\", \"probe\", \"spam\", \"phishing\", \"botnet_c_c\", \"dos\", \"malware\", \"copyright\", \"webattack\", \"test\", \"other\", \"_any_\"], \"source_type\" => [\"IP\", \"URL\", \"Reply-To:\"] -);" > $server_conf 2> $err; ret_val=`echo $?` - - if [ $ret_val -eq 0 ]; then - echo "OK" - else - errClean - fi +);" > "$server_conf" 2> "$err" && echo "OK" || errClean } makeApacheConf() @@ -227,8 +207,8 @@ SSLOptions +StdEnvVars +ExportCertData SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL -SSLCertificateFile $cert -SSLCertificateKeyFile $key +SSLCertificateFile $cert_file +SSLCertificateKeyFile $key_file SSLCACertificateFile $ca_file PerlOptions +Parent @@ -238,23 +218,17 @@ PerlSwitches -I $lib SetHandler perl-script PerlHandler Warden::ApacheDispatch SSLOptions +StdEnvVars -</Location>" > $apache_conf 2> $err; ret_val=`echo $?` - - if [ $ret_val -eq 0 ]; then - echo "OK" - else - errClean - fi +</Location>" > "$apache_conf" 2> "$err" && echo "OK" || errClean } createSymlinks() { - echo "Creating symbolic links ..." - for file in `ls -1 $bin` + echo "Creating symbolic links to local bin path..." + for file in "${bin}/"* do - echo "- making symlink: ${local_bin}/$file -> ${bin}/$file" - ln -s ${bin}/$file ${local_bin}/$file + echo "- making symlink: ${local_bin}/${file##*/} -> $file" + ln -s "$file" "${local_bin}/${file##*/}" done } @@ -262,47 +236,34 @@ createSymlinks() #------------------------------------------------------------------------------- # 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:k:c:a:Vh" options; do - case $options in - d ) prefix=$OPTARG;; - k ) key=$OPTARG;; - c ) cert=$OPTARG;; - a ) ca_file=$OPTARG;; + case "$options" in + d ) server_dir="$OPTARG";; + k ) key_file="$OPTARG";; + c ) cert_file="$OPTARG";; + a ) ca_file="$OPTARG";; h ) usage;; V ) version;; * ) usage;; esac done -# root test -rootChck - # params test paramsChck -# create variables -dirname=`dirname $0` -hostname=`hostname -f` -key_file=`basename $key` -cert_file=`basename $cert` -package_version=`cat ${dirname}/warden-server/etc/package_version` - -[[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix -server_path="${prefix}/warden-server" -bin="${server_path}/bin" +# set variables +dirname=${0%/*} +package_version=$(< "${dirname}/warden-server/etc/package_version") || err +bin="${server_dir}/bin" local_bin="/usr/local/bin" -etc="${server_path}/etc" +etc="${server_dir}/etc" server_conf="${etc}/warden-server.conf" apache_conf="${etc}/warden-apache.conf" -var="${server_path}/var" -lib="${server_path}/lib" -doc="${server_path}/doc" +lib="${server_dir}/lib" +doc="${server_dir}/doc" err="/tmp/warden-err" +modules_file="/tmp/warden-modules.txt" # check if warden-server is installed oldPackageChck @@ -320,7 +281,7 @@ echo echo "------------------------- Installation process --------------------------" # make warden server directory -makeWardenDir +createWardenDir # create server configuration file makeServerConf @@ -333,16 +294,16 @@ createSymlinks echo echo "Please check configuration files:" -echo " - ${server_conf}" -echo " - ${apache_conf}" +echo " - $server_conf" +echo " - $apache_conf" echo -echo "Warden server directory: $server_path" +echo "Warden server directory: $server_dir" echo echo "Please follow post-installation steps in ${doc}/INSTALL!" echo echo "Installation of $package_version package was SUCCESSFUL!!!" echo # cleanup section -rm -rf $err +rm -f "$err" "$modules_file" exit 0 -- GitLab