#!/bin/sh
# SMX jsch patch install
# ---------------------------------------------- #

##### Function読み込み ###########################
. ${INST_HOME}/function.sh

##### Define #####################################
moduleFile="${MODULE_DIR}/jsch_module.tar.gz"
targetDir="/opt/cse/smx/setup/servlet/webapps/ROOT/WEB-INF/lib/"


##### Function ###################################
CLEAR_FILE(){
  rm -f ${TMP_FILE} > /dev/null 2>&1
}

# エラー表示統一
error_msg(){
    echo "エラー発生！"
    echo ""
    msg_err "${SECUREMATRIX} EasySetup のモジュール更新に失敗しました。" \
            "処理を中断します。" \
            " " \
            "<!> 予期せぬエラーです。サポートに連絡してください。"
}

# ファイルのチェック jsch-0.1.28.jar or jsch-0.1.37.jar の有無の判別をする。無ければ中断 ----- #
check_file(){
  # cfFlag= 0:OK , 1:既に適用済み , 2:旧ファイルが無い
  if [ -f ${oldJschFile} ] ; then
    # old exist
    if [ -f ${newJschFile} ] ; then
      # new exist -> error!
      echo_sp "中断"
      echo " "
      write_log "EasySetup モジュールインストール済みです。"
      msg_dialog  "${SECUREMATRIX} EasySetup のモジュールはインストール済みです。" \
                  " " \
                  "処理を継続します。"
      ## EasySetup モジュールインストール済みフラグ作成
      touch ${INST_HOME}/${JSCH_FLG}
      WAIT_ENTER
      exit 0
    fi
  else
    if [ -f ${newJschFile} ] ; then
      # new exist -> patch apply
      echo_sp "中断"
      echo " "
      write_log "EasySetup モジュールインストール済みです。"
      msg_dialog  "${SECUREMATRIX} EasySetup のモジュールはインストール済みです。" \
                  " " \
                  "処理を継続します。"
      ## EasySetup モジュールインストール済みフラグ作成
      touch ${INST_HOME}/${JSCH_FLG}
      WAIT_ENTER
      exit 0
    else
      # old no exist -> error!
      arize_err "dmy" "${SECUREMATRIX} EasySetup のモジュール更新に失敗しました。"
      error_msg
      exit 1
    fi
  fi
  
  echo_sp "."
}

# ファイルバックアップ ------------------------------------------------------- #
backup_files(){
  ## 0.1.37 のパッチもバックアップする
  $cp -fp ${oldJschFile} ${bakJschFile} > /dev/null 2>&1
  if [ -f ${old2JschFile} ] ; then
    $cp -fp ${old2JschFile} ${bak2JschFile} > /dev/null 2>&1
  fi
  
  BAK_FLG=0
  ## バックアップが成功しているか確認
  if [ -f ${bakJschFile} ] ; then
    if [ -f ${old2JschFile} ] ; then
      if [ ! -f ${bak2JschFile} ] ; then
        BAK_FLG=1
      fi
    fi
  else
    BAK_FLG=1
  fi

  if [ ${BAK_FLG} -ne 0 ] ; then
    error_msg
    arize_err "dmy" "${SECUREMATRIX} EasySetup のモジュールバックアップに失敗しました。"
    exit 1
  else
    echo_sp "."
  fi
}

# ファイル配布 --------------------------------------------------------------- #
deploy_files(){
  # 事前に jsch-0.1.28.jar を削除する -> 同名でシンボリックリンクを張るため。
  rm -f ${oldJschFile} > /dev/null 2>&1
  # 0.1.37 が存在していれば消す -> 無くても削除コマンドに影響は無い
  rm -f ${old2JschFile} > /dev/null 2>&1
  
  # 展開する内容にシンボリックリンクも含まれる
  tar -zxf ${moduleFile} -C ${targetDir} > /dev/null 2>&1
  
  if [ ! -f ${newJschFile} ] ; then
    error_msg
    arize_err "dmy" "${SECUREMATRIX} EasySetup のモジュール展開に失敗しました。"
    exit 1
  else
    echo_sp "."
  fi
}

# EZS 再起動 ----------------------------------------------------------------- #
ezs_reboot(){
  echo -n "EasySetup の再起動を行います..."
  
  service smx-setup restart > /dev/null 2>&1
  sleep 3
  ps -efww | grep -v grep | grep java | grep setup >/dev/null 2>&1
  
  if [ $? -ne 0 ] ; then
    error_msg
    arize_err "dmy" "${SECUREMATRIX} EasySetup の再起動に失敗しました。"
    exit 1
  else
    echo_sp "完了"
  fi
}


##### Main routine ###############################

# 初期処理
initialize


# フラグの初期化
FLAG=0


# 開始出力
CLEAR
msg_info "${SECUREMATRIX} EasySetup のモジュールを更新します。"
#echo ""
echo_sp "${SECUREMATRIX} EasySetup モジュール更新中."


# パッチファイル展開領域の作成
#if [ ! -d $MODULE_DIR ] ; then
#  $mkdir $MODULE_DIR > /dev/null 2>&1
#  if [ $? -ne 0 ] ; then
#    arize_err "dmy" "パッチファイル展開領域の作成に失敗しました。"
#    exit 1
#  fi
#fi

# パッチファイルの解凍
# パッチファイルをmodule_xxx.tar.gzから解凍する。
# 起点ディレクトリを覚えておき、解凍後は復帰する。
if [ ! -d $MODULE_DIR ] ; then
  $tar $ZX_OPT $MODULE_PKG_FILE > /dev/null 2>&1
  if [ $? -ne 0 ] ; then
    arize_err "dmy" "パッチファイルの展開に失敗しました。"
    exit 1
  fi
fi


ORG_IFS=$IFS

## パッチインストール済みか確認
check_file

## 旧 jsch を削除する為バックアップを取る
backup_files

## モジュールを解凍配置する(シンボリックリンクも含む)
deploy_files

IFS=$ORG_IFS


# 展開したパッチファイルを削除する。（圧縮ファイルは残る）
if [ -d $MODULE_DIR ] ; then
  $rm -rf $MODULE_DIR > /dev/null 2>&1
fi


# 結果出力
echo "完了"
## EasySetup を再起動させる
#ezs_reboot

echo " "
msg_dialog  "${SECUREMATRIX} EasySetup のモジュール更新が完了しました。" \
            " " \
            "処理を継続します。"
write_log "${SECUREMATRIX} EasySetup のモジュール更新が完了しました。"
WAIT_ENTER
exit 0
