#!/bin/bash
#scvbinsync 2018/09/06
#Copyright J's Communication Co., Ltd.
#========================================
PROGNAME="scvbinsync"
PROGVER="2.4.0"
SRC_DIR="/var/www/html/scv/scvbin"
TARGET_DIR="/var/www/html/scv/scvbin"
BACKUP_DIR="$HOME/scvbin_bck"
SUBDIR=""
SYNCCMD=""

DATE=`date +%Y%m%d%H%M%S`
CLUSTER=`scvclustd -cluster`
ROLE=`scvclustd -role`

#----------------------------------------
usage(){
  echo "$PROGNAME $PROGVER"
  echo "This program excute rsync scvbin from source server to this server."
  echo "Usage:"
  echo "  $PROGNAME source_server  #from source_server"
  echo "  $PROGNAME 172.16.0.10    #from 172.16.0.10"
  echo "  $PROGNAME -master        #from master"
  echo "  $PROGNAME -slave         #from slave"
  echo "  $PROGNAME -backup DIR    #backup to ~/scvbin_bck/DIR"
  echo "  $PROGNAME -restore DIR   #restore from ~/scvbin_bck/DIR"
  echo "  $PROGNAME -v             #show verion of this"
  exit 1
}

#----------------------------------------
sure() {
  echo "Are you sure to continue? [y/N]"
  read ANSWER
  case $ANSWER in
    "Y" | "y" | "yes" | "Yes" | "YES" )  : ;;
    * ) echo "command canceled!"; exit 0 ;;
  esac
}

#----------------------------------------
sync(){
  echo ""
  echo "==============================="
  echo "$PROGNAME $PROGVER Started"
  echo "==============================="

  if [ "$CLUSTER" = "1" ];then
    echo ""
    echo "Stopping scvclustd and scvreserved daemon ..."
    sudo scvclustd -stop
    #sudo scvreserved -stop
    sudo scvmond -stop
  fi

  echo ""
  echo "-----------------------"
  echo "Syncing from $SERVER..."
  echo "-----------------------"

  sudo rsync -av  -e ssh scvadmin@$SERVER:/var/www/html/scv/scvbin /var/www/html/scv/

  echo ""
  echo "---------------------"
  echo "Setting up scvbin..."
  echo "--------------------"

  sudo scvsetup.sh

  echo ""
  echo "----------------------------"
  echo "Re-creating Shared Memory..."
  echo "----------------------------"

  sudo scvshmem_recreate

  if [ "$CLUSTER" = "1" ];then
    echo ""
    echo "---------------------------------------------"
    echo "Starting scvclustd and scvmond daemon ..."
    echo "---------------------------------------------"
    sudo scvclustd -start
    sudo scvmond -start
  fi

  echo ""
  echo "-------------------------------"
  echo "$PROGNAME Finished"
  echo "-------------------------------"

  exit 0
}

#----------------------------------------
mkbackupdir(){
  echo "mkbackupdir..."
  if [ ! -e $BACKUP_DIR ]; then
    echo "creating $BACKUP_DIR dir"
    mkdir $BACKUP_DIR
  else
    if [ ! -d $BACKUP_DIR ]; then
      echo "creating $BACKUP_DIR dir"
      mkdir $BACKUP_DIR
    fi
  fi
}

#----------------------------------------
backup(){
  DIR=$BACKUP_DIR/$SUBDIR
  echo "backup to $DIR"
  if [ ! -e $DIR ]; then
    mkdir $DIR
    sudo rsync -ahv /var/www/html/scv/scvbin $DIR
  else
    echo "$DIR already exist! Please try again!"
    exit 1
  fi
  exit 0
}

#----------------------------------------
restore(){
  DIR=$BACKUP_DIR/$SUBDIR
  echo "restore from $DIR"
  if [ ! -e $DIR ]; then
    echo "$DIR not exist!"
    exit 1
  fi
  if [ ! -d $DIR ]; then
    echo "$DIR not exist!"
    exit 1
  fi
  sudo scvclustd -stop
  sudo scvreserved -stop
  sudo scvmond -stop
  #リストアするときはrsyncではファイル作成日を判定するのでリストアできない
  #sudo rsync -ahv $DIR/scvbin /var/www/html/scv/
  sudo cp -r $DIR/scvbin /var/www/html/scv/
  sudo scvsetup.sh
  sudo scvclustd -start
  scvreserved -start
  scvmond -start
  exit 0
}

#----------------------------------------
#ここからスタート
#----------------------------------------
#引数のチェック
if [ $# -ne 0 ];then
  if [ $1 = "-v" ];then
    echo $PROGVER
    exit 0
  elif [ $1 = "$ROLE" ];then
    echo "This server is $1."
    exit 1
  elif [ $1 = "-master" ];then
    SERVER=`scvclustd -master`
    sure
    sync
  elif [ $1 = "-slave" ];then
    SERVER=`scvclustd -slave`
    sure
    sync
  elif [ $1 = "-backup" ];then
    if [ $# -ne 2 ];then
      echo "usage: $PROGRAM -backup <DIR>"
      exit 1
    fi
    sure
    SUBDIR=$2
    mkbackupdir
    backup
  elif [ $1 = "-restore" ];then
    if [ $# -ne 2 ];then
      echo "usage: $PROGRAM -restore <DIR>"
      exit 1
    fi
    sure
    SUBDIR=$2
    restore
  else
    SERVER=$1
    sure
    sync
  fi
else
  usage
fi

#eof
