#!/bin/bash
#
# sccl_join_cluster
#
# einem SCCL-Cluster beitreten
# auf dem Master SCCL-Knoten muss sccl_add_node ausgefuehrt werden
##################################################################
#
if [ -d /var/lock/subsys ]
 then
  lockfile=/var/lock/subsys/sccl_cluster
else
  lockfile=''
fi
#
cd ${0%/*}
if [[ $PWD != */bin ]]
 then
  cd bin
fi
#
PORT=3579
#
unset FORCE MASTERIP
while getopts m:p:-: op
 do
  case "$op" in
   m) MASTERIP="-or $OPTARG";;
   p) PORT="$OPTARG";;
   -) case "$OPTARG" in
       force) FORCE=1;;
        *) echo "usage: $0 [--force] [-m <masterip>] [-p <port>]"
           exit 1;;
      esac;;
   *) echo "usage: $0 [--force] [-m <masterip>] [-p <port>]"
      exit 1;;
  esac
done
#
shift $(( $OPTIND - 1))
#
#
if [[ -f /etc/sccl/sccl.conf ]]
 then if [[ -z "$FORCE" ]]
   then
    echo "Das Cluster ist schon konfiguriert."
    echo "Neuinitialisierung:"
    echo "$0 --force $*"
    exit 1
  else
    /etc/init.d/unix2web stop sccl
    rm /etc/sccl/sccl.conf
  fi
fi
#
if [[ $(uname -o) = "Cygwin" ]]
 then
  SCCLBASEDIR=/
else
  SCCLBASEDIR=/usr/share/sccl
fi
#
PIDFILE=/tmp/u2w.$$.pid
#
unix2webd -sU join -sP tocluster $MASTERIP -Dp $PIDFILE -Sf -Sa $SCCLBASEDIR/data/JOINCLUSTER-ca.pem -Sk $SCCLBASEDIR/data/JOINCLUSTER-server-key.pem -Sc $SCCLBASEDIR/data/JOINCLUSTER-server-cert.pem -fp /tmp -h $SCCLBASEDIR/html -p $PORT -b $SCCLBASEDIR/bin
#
sleep 1
#
if [[ -f $PIDFILE ]]
 then
  echo "U2W-Server gestartet."
  echo "Zum Beenden: kill -HUP $(<$PIDFILE)"
  #
  while true
   do
    if [[ -f /etc/sccl/sccl.conf ]]
     then
      sleep 2
      break
    fi
    sleep 3
  done
  #
  if [[ -f /etc/sccl/sccl.conf ]]
   then
    echo "Clusterconfig bekommen."
    echo "U2W-Server stoppen"
    kill -HUP $(<$PIDFILE)
    echo "Cluster starten"
    if [[ $(uname -o) = "Cygwin" ]]
     then
      ./sccl_install_service
    else
      /etc/init.d/unix2web start sccl
      [[ -z "$lockfile" ]] || touch "$lockfile"
    fi
  fi
else
  echo "Der U2W-Server konnte nicht gestartet werden."
  echo "Ggf. laeuft noch ein Server auf dem Port $PORT."
fi
