From d4647723c2e935813e4fdf9c86553c0af02b2069 Mon Sep 17 00:00:00 2001
From: Tomas Plesnik <plesnik@ics.muni.cz>
Date: Tue, 6 Dec 2011 10:51:48 +0100
Subject: [PATCH] automaticke testovani perl modulu; skript prepsan do funkci;
 doplneno kopirovani dokumentu do adresare doc

---
 src/warden-client/sh/install.sh | 375 +++++++++++++++++---------------
 1 file changed, 204 insertions(+), 171 deletions(-)

diff --git a/src/warden-client/sh/install.sh b/src/warden-client/sh/install.sh
index ee9c1d5..0d6e579 100755
--- a/src/warden-client/sh/install.sh
+++ b/src/warden-client/sh/install.sh
@@ -31,7 +31,7 @@
 # otherwise) arising in any way out of the use of this software, even
 # if advised of the possibility of such damage.
 
-VERSION="1.0.0"
+VERSION="1.1.0"
 
 #-------------------------------------------------------------------------------
 #				FUNCTIONS
@@ -86,25 +86,198 @@ err_clean()
 }
 
 
+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 installation directory is /opt!"
+  fi
+  if [ -z $user ]; then
+    echo "Parameter -u <user> is not set!"
+    exit 1
+  fi
+  if [ -z $key ]; then
+    echo "Parameter -k <ssl_key_file> is not set!"
+    exit 1
+  fi
+  if [ -z $cert ]; then
+    echo "Parameter -c <ssl_cert_file> is not set!"
+    exit 1
+  fi
+  if [ -z $ca_file ]; then
+    echo "Parameter -a <ssl_ca_file> is not set!"
+    exit 1
+  fi
+}
+
+
+perl_chck()
+{
+  echo -n "Checking Perl interpreter ... "
+  which perl 1>/dev/null; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    echo "FAILED!"
+    exit 1
+  fi
+}
+
+
+modules_chck()
+{
+  for module in ${modules[@]};
+  do
+    echo -n "Checking $module module ... "
+    perl -e "use $module" 2> $err; ret_val=`echo $?`
+    if [ $ret_val -eq 0 ]; then
+      echo "OK"
+    else
+     err
+    fi
+  done
+}
+
+
+installation_dir_chck()
+{
+  echo -n "Checking installation directory ... "
+  if [ ! -d $prefix ]; then
+    echo "FAILED!"
+    ls $prefix
+    exit 1
+  else
+    echo "OK"
+  fi
+}
+
+
+make_warden_dir()
+{
+  echo -n "Making warden client directory ... "
+  cp CHANGELOG INSTALL LICENSE README "$client_path/doc"
+  cp -R ./warden-client $prefix 2> $err; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    err_clean
+  fi
+}
+
+
+copy_key()
+{
+  echo -n "Copying certificate key file ... "
+  cp $key $etc 2> $err; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    err_clean
+  fi
+}
+
+
+copy_cert()
+{
+  echo -n "Copying certificate file ... "
+  cp $cert $etc 2> $err; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    err_clean
+  fi
+}
+
+
+make_conf_file()
+{
+  echo -n "Creating configuration file ... "
+echo "#
+# warden-client.conf - configuration file for the warden sender/receiver client
+#
+
 #-------------------------------------------------------------------------------
-#				MAIN
+# URI - URI address of Warden server
 #-------------------------------------------------------------------------------
+\$URI = \"https://warden.cesnet.cz:443/Warden\";
 
-# OS test
-OS=`uname`
-if [ "$OS" != "Linux" ]; then
-  echo "Sorry, unsupported operating system detected - \"$OS\"!"
-  exit 1
-fi
+#-------------------------------------------------------------------------------
+# SSL_KEY_FILE - path to client SSL certificate key file
+#-------------------------------------------------------------------------------
+\$SSL_KEY_FILE = \"$etc/$key_file\";
 
+#-------------------------------------------------------------------------------
+# SSL_CERT_FILE - path to client SSL certificate file
+#-------------------------------------------------------------------------------
+\$SSL_CERT_FILE = \"$etc/$cert_file\";
 
-# shell test
-SHELL=`echo $SHELL`
-if [ "$SHELL" != "/bin/bash" ]; then
-  echo "Sorry, this script is usable in Bourne Again Shell (bash) only!"
-  exit 1
-fi
+#-------------------------------------------------------------------------------
+# SSL_CA_FILE - path to CA certificate file
+#-------------------------------------------------------------------------------
+\$SSL_CA_FILE = \"$ca_file\";
+" > $conf_file 2> $err; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    err_clean
+  fi
+}
+
+
+change_permissions()
+{
+  echo -n "Changing permissions to installed package ... "
+  chown -R $user: $client_path 2>$err; ret_val=`echo $?`
+  if [ $ret_val -eq 0 ]; then
+    echo "OK"
+  else
+    err_clean
+  fi
+}
+
+
+
+#-------------------------------------------------------------------------------
+#				MAIN
+#-------------------------------------------------------------------------------
+
+# list of used Perl modules
+modules=(SOAP::Lite IO::Socket::SSL SOAP::Transport::TCP FindBin)
+
+# OS test
+os_chck
 
+# Shell test
+shell_chck
 
 # read input
 while getopts "d:u:k:c:a:Vh" options; do
@@ -120,36 +293,11 @@ while getopts "d:u:k:c:a:Vh" options; do
   esac
 done
 
+# root test
+root_chck
 
-# root controle
-if [ $UID -ne 0 ]; then
-  echo "You must be root for running this script!"
-  exit 1
-fi
-
-
-# check inputs
-if [ -z $prefix ]; then
-  prefix=/opt
-  echo "Warning: parameter -d <directory> is not set - default installation directory is /opt!"
-fi
-if [ -z $user ]; then
-  echo "Parameter -u <user> is not set!"
-  exit 1
-fi
-if [ -z $key ]; then
-  echo "Parameter -k <ssl_key_file> is not set!"
-  exit 1
-fi
-if [ -z $cert ]; then
-  echo "Parameter -c <ssl_cert_file> is not set!"
-  exit 1
-fi
-if [ -z $ca_file ]; then
-  echo "Parameter -a <ssl_ca_file> is not set!"
-  exit 1
-fi
-
+# params test
+params_chck
 
 # create variables
 key_file=`basename $key`
@@ -159,151 +307,36 @@ etc="$client_path/etc"
 conf_file="$etc/warden-client.conf"
 err="/tmp/warden-err"
 
-#-------------------------------------------------------------------------------
-#				Dependencies check-in
+echo
+echo "------------------------- Dependencies check-in -------------------------"
 
-echo "------------------------- Dependencies check-in ---------------------------"
+# Perl interpreter test
+perl_chck
 
-# check Perl interpreter
-echo -n "Checking Perl package ... "
-which perl 1>/dev/null; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  echo "FAILED!"
-  exit 1
-fi
-
-
-# check SOAP::Lite package
-echo -n "Checking SOAP::Lite package ... "
-perl -e 'use SOAP::Lite' 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
- err
-fi
-
-
-# check IO::Socket::SSL package
-echo -n "Checking IO::Socket::SSL package ... "
-perl -e 'use IO::Socket::SSL' 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err
-fi
-
-
-# check SOAP::Transport::TCP package
-echo -n "Checking SOAP::Transport::TCP package ... "
-perl -e 'use SOAP::Transport::TCP' 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err
-fi
-
-
-# check FindBin package
-echo -n "Checking FindBin package ... "
-perl -e 'use FindBin' 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err
-fi
+# Perl modules test
+modules_chck
 
-#-------------------------------------------------------------------------------
-#				Installation process
 
 echo
-echo "------------------------- Installation process ---------------------------"
-
+echo "------------------------- Installation process --------------------------"
 
 # check installation directory
-echo -n "Checking installation directory ... "
-if [ ! -d $prefix ]; then
-  echo "FAILED!"
-  ls $prefix
-  exit 1
-else
-  echo "OK"
-fi
-
+installation_dir_chck
 
 # make warden client directory
-echo -n "Making warden client directory ... "
-cp -R ./warden-client $prefix 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err_clean
-fi
-
+make_warden_dir
 
 # copy cert key file 
-echo -n "Copying certificate key file ... "
-cp $key $etc 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err_clean
-fi
-
+copy_key
 
 # copy cert file
-echo -n "Copying certificate file ... "
-cp $cert $etc 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err_clean
-fi
-
+copy_cert
 
 # create conf file
-echo -n "Creating configuration file ... "
-echo "#
-# warden-client.conf - configuration file for the warden sender/receiver client
-#
-
-#-------------------------------------------------------------------------------
-# URI - URI address of Warden server
-#-------------------------------------------------------------------------------
-\$URI = \"https://warden.cesnet.cz:443/Warden\";
-
-#-------------------------------------------------------------------------------
-# SSL_KEY_FILE - path to client SSL certificate key file
-#-------------------------------------------------------------------------------
-\$SSL_KEY_FILE = \"$etc/$key_file\";
-
-#-------------------------------------------------------------------------------
-# SSL_CERT_FILE - path to client SSL certificate file
-#-------------------------------------------------------------------------------
-\$SSL_CERT_FILE = \"$etc/$cert_file\";
-
-#-------------------------------------------------------------------------------
-# SSL_CA_FILE - path to CA certificate file
-#-------------------------------------------------------------------------------
-\$SSL_CA_FILE = \"$ca_file\";
-" > $conf_file 2> $err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err_clean
-fi
-
+make_conf_file
 
 # change permissions
-echo -n "Changing permissions to installed package ... "
-chown -R $user: $client_path 2>$err; ret_val=`echo $?`
-if [ $ret_val -eq 0 ]; then
-  echo "OK"
-else
-  err_clean
-fi
-
+change_permissions
 
 echo
 echo "Please check configuration file in $conf_file!"
-- 
GitLab