From 1ac16a3e711d75d3cbd2e5afadaa3533c547c7af Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Wed, 29 Feb 2012 18:21:17 +0100 Subject: [PATCH] instalacni skript serveru --- src/warden-server/sh/install.sh | 200 +++++++++++++++++++++----------- 1 file changed, 135 insertions(+), 65 deletions(-) diff --git a/src/warden-server/sh/install.sh b/src/warden-server/sh/install.sh index eaeb3c4..6b3fad0 100755 --- a/src/warden-server/sh/install.sh +++ b/src/warden-server/sh/install.sh @@ -121,10 +121,6 @@ params_chck() prefix=/opt echo "Warning: parameter -d <directory> is not set - default installation directory is $prefix!" 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 @@ -140,13 +136,13 @@ params_chck() } -old_client_chck() +old_package_chck() { old_package_version_file="$etc/package_version" if [ -f $old_package_version_file ]; then old_package_version=`cat $old_package_version_file` echo "Sorry, but $old_package_version package is installed!" - echo "For update of warden client package please use update.sh script." + echo "For update of warden server package please use update.sh" exit 1 fi } @@ -155,8 +151,7 @@ old_client_chck() perl_chck() { echo -n "Checking Perl interpreter ... " - which perl 1>/dev/null; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then + if which perl 1> /dev/null; then echo "OK" else echo "FAILED!" @@ -165,14 +160,24 @@ perl_chck() fi } +sqlite_chck() +{ + echo -n "Checking SQLite database engine ... " + if which sqlite3 1> /dev/null; then + echo "OK" + else + echo "FAILED!" + echo "Error: SQLite3 database engine is not installed!" + 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 + if perl -e "use $module" 2> $err; then echo "OK" else err @@ -183,39 +188,50 @@ modules_chck() make_warden_dir() { - echo -n "Creating warden client directory ... " - cp -R $dirname/warden-client $prefix 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then + echo -n "Creating warden server directory ... " + if cp -R $dirname/warden-server $prefix 2> $err; then echo "OK" else err_clean fi - files=(CHANGELOG INSTALL LICENSE README README.cesnet) + files=(CHANGELOG INSTALL LICENSE README) for file in ${files[@]}; do - cp $dirname/$file "$client_path/doc" + cp $dirname/$file $server_path/doc done - cp $dirname/uninstall.sh "$client_path" + cp $dirname/uninstall.sh $server_path } -copy_key() +make_client_conf() { - 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 -} + echo -n "Creating client configuration file ... " + echo "# +# warden-client.conf - configuration file for the warden sender/receiver client +# +#------------------------------------------------------------------------------- +# URI - URI address of Warden server +#------------------------------------------------------------------------------- +\$URI = \"https://${hostname}: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}\"; +" > $client_conf 2> $err; ret_val=`echo $?` -copy_cert() -{ - echo -n "Copying certificate file ... " - cp $cert $etc 2> $err; ret_val=`echo $?` if [ $ret_val -eq 0 ]; then echo "OK" else @@ -224,33 +240,63 @@ copy_cert() } -make_conf_file() +make_server_conf() { - echo -n "Creating configuration file ... " - echo "# -# warden-client.conf - configuration file for the warden sender/receiver client + echo -n "Creating server configuration file ... " + echo "# +# warden-server.conf - configuration file for Warden server # #------------------------------------------------------------------------------- -# URI - URI address of Warden server +# ADDRESS - IP address of warden server #------------------------------------------------------------------------------- -\$URI = \"https://warden.cesnet.cz:443/Warden\"; +\$ADDRESS = \"${hostname}\"; #------------------------------------------------------------------------------- -# SSL_KEY_FILE - path to client SSL certificate key file +# PORT - used TCP port for Warden server #------------------------------------------------------------------------------- -\$SSL_KEY_FILE = \"$etc/$key_file\"; +\$PORT = \"443\"; #------------------------------------------------------------------------------- -# SSL_CERT_FILE - path to client SSL certificate file +# BASEDIR - base directory of Warden server #------------------------------------------------------------------------------- -\$SSL_CERT_FILE = \"$etc/$cert_file\"; +\$BASEDIR = \"${server_path}\"; #------------------------------------------------------------------------------- -# SSL_CA_FILE - path to CA certificate file +# VARDIR - var directory +#------------------------------------------------------------------------------- +\$VARDIR = \"\$BASEDIR/var/\"; + +#------------------------------------------------------------------------------- +# LOGDIR - logging directory +#------------------------------------------------------------------------------- +\$LOGDIR = \"/var/log/\"; + +#------------------------------------------------------------------------------- +# PIDDIR - process ID directory +#------------------------------------------------------------------------------- +\$PIDDIR = \"/var/run/\"; + +#------------------------------------------------------------------------------- +# SSL_KEY_FILE - path to server SSL certificate key file +#------------------------------------------------------------------------------- +\$SSL_KEY_FILE = \"${key}\"; + +#------------------------------------------------------------------------------- +# SSL_CERT_FILE - path to server SSL certificate file +#------------------------------------------------------------------------------- +\$SSL_CERT_FILE = \"${cert}\"; + +#------------------------------------------------------------------------------- +# SSL_CA_FILE - path to CA ceritificate file #------------------------------------------------------------------------------- -\$SSL_CA_FILE = \"$ca_file\"; -" > $conf_file 2> $err; ret_val=`echo $?` +\$SSL_CA_FILE = \"${ca_file}\"; + +#------------------------------------------------------------------------------- +# FACILITY - syslog facility +#------------------------------------------------------------------------------- +\$FACILITY = \"local7\"; +" > $server_conf 2> $err; ret_val=`echo $?` if [ $ret_val -eq 0 ]; then echo "OK" @@ -260,11 +306,11 @@ make_conf_file() } -change_permissions() +create_db() { - echo -n "Changing permissions to installed package ... " - chown -R $user: $client_path 2>$err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then + echo -n "Creating warden server database ... " + $create_tables $db_file 2> $err || err_clean + if chmod 600 $db_file 2> $err; then echo "OK" else err_clean @@ -272,13 +318,24 @@ change_permissions() } +create_symlinks() +{ + echo "Creating symbolic links ..." + for file in `ls -1 $bin | grep -v warden-alive | grep -v create_tables.sh | grep -v wardend` + do + echo "- making symlink: ${local_bin}/$file -> ${bin}/$file" + ln -s ${bin}/$file ${local_bin}/$file + done + echo "- making symlink: ${bin}/wardend -> $init" + ln -s ${bin}/wardend $init +} #------------------------------------------------------------------------------- # MAIN #------------------------------------------------------------------------------- # list of used Perl modules -modules=(SOAP::Lite IO::Socket::SSL SOAP::Transport::TCP FindBin DateTime) +modules=(SOAP::Lite SOAP::Transport::TCP File::Pid POSIX DBI DBD::SQLite Format::Human::Bytes Sys::Syslog File::Basename FindBin Net::CIDR::Lite DateTime Getopt::Std Switch IO::Socket::SSL) # OS test os_chck @@ -287,10 +344,9 @@ os_chck shell_chck # read input -while getopts "d:u:k:c:a:Vh" options; do +while getopts "d:k:c:a:Vh" options; do case $options in d ) prefix=$OPTARG;; - u ) user=$OPTARG;; k ) key=$OPTARG;; c ) cert=$OPTARG;; a ) ca_file=$OPTARG;; @@ -308,17 +364,26 @@ params_chck # create variables dirname=`dirname $0` -package_version=`cat $dirname/warden-client/etc/package_version` +hostname=`hostname` key_file=`basename $key` cert_file=`basename $cert` +package_version=`cat ${dirname}/warden-server/etc/package_version` +create_tables="${dirname}/warden-server/bin/create_tables.sh" + [[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix -client_path="$prefix/warden-client" -etc="$client_path/etc" -conf_file="$etc/warden-client.conf" +server_path="${prefix}/warden-server" +bin="${server_path}/bin" +local_bin="/usr/local/bin" +etc="${server_path}/etc" +client_conf="${etc}/warden-client.conf" +server_conf="${etc}/warden-server.conf" +var="${server_path}/var" +db_file="${var}/warden.db" err="/tmp/warden-err" +init="/etc/init.d/wardend" -# check if warden-client is installed -old_client_chck +# check if warden-server is installed +old_package_chck echo echo "------------------------- Dependencies check-in -------------------------" @@ -326,30 +391,35 @@ echo "------------------------- Dependencies check-in -------------------------" # Perl interpreter test perl_chck +# SQLite database engine test +sqlite_chck + # Perl modules test modules_chck - echo echo "------------------------- Installation process --------------------------" # make warden client directory make_warden_dir -# copy cert key file -copy_key +# create client configuration file +make_client_conf -# copy cert file -copy_cert +# create server configuration file +make_server_conf -# create conf file -make_conf_file +# create warden server database +create_db -# change permissions -change_permissions +# crate symlinks from warden server bin directory to /usr/local/bin +create_symlinks echo -echo "Please check configuration file in $conf_file!" +echo "Please check client configuration file in $client_conf!" +echo "Please check server configuration file in $server_conf!" +echo +echo "Start Warden server by /etc/init.d/wardend start" echo echo "Installation of $package_version package was SUCCESSFUL!!!" -- GitLab