#!/bin/sh
# ---------------------------------------------- #

# Installer directory
INST_HOME=/home/smxd/ver-3_3_0
export INST_HOME

##### Function 呼び出し ##########################
. ${INST_HOME}/function.sh

##### param ######################################
OLD_VER_RET=0   # 現在の Version を取得

##### Function ###################################
#----- バージョンチェック -----------------------#
version_check(){    # args : check_type
  ## OLD_VERSION を取得する
  ${INST_HOME}/version_check.sh "$1"
  OLD_VER_RET=$?
  if [ ${OLD_VER_RET} -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- Auth Server かチェックする -------------------------#
server_check(){
  ${INST_HOME}/server_check.sh "ISB"
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- サービス状態チェック ---------------------#
service_check_uninstall(){
  ${INST_HOME}/service_check_uninstall.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- インストール前に DB 戻し -----------------#
db_restore(){
  ${INST_HOME}/db_restore.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- パッチアンインストール実行 ---------------#
file_restore(){
  ${INST_HOME}/file_restore.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

##----- JSCH パッチアンインストール実行 ---------------#
jsch_patch_uninstall(){
  ${INST_HOME}/jsch_patch_uninstall.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- パッチミドルウェア(rpm)アンインストール実行 --#
rpm_uninstall(){
  ${INST_HOME}/rpm_uninstall.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- パッチミドルウェア(rpm)インストール実行 --#
rpm_install4uninst(){
  ${INST_HOME}/rpm_install4uninst.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- ミドルウェア(rpm)削除実行 ----------------#
rpm_delete4uninst(){
  ${INST_HOME}/rpm_delete4uninst.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- reverse parse_param ----------------------#
reverse_parse_param(){
  ## param $1=Version
  ${INST_HOME}/reverse_parse_param.sh ${1}
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- ファイルレストア -------------------------#
restore(){
  ${INST_HOME}/restore.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- DB 戻し実行 (uninstall) ----------------------#
db_restore(){
  ${INST_HOME}/db_restore.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- SMXVer-3.2.1 cluster 対応 cron のパラメータリストア処理 -----#
cron_param_restore(){
  ${INST_HOME}/cron_param_restore.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- SMXVer-3.2.1 cluster 対応 ファイルのリストア -----#
recovery(){
  ${INST_HOME}/recovery.sh
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

#----- JSP コンパイルファイル削除 --------------#
jsp_compile_delete(){
  write_log "JSP コンパイル削除"
  $rm -rf ${ISB_JSP}/* > /dev/null 2>&1
  if [ $? -ne 0 ] ; then
    msg_err "${SECUREMATRIX} コンパイルファイル削除に失敗しました。" \
            "処理を中断します。" \
            " " \
            "<!> 予期せぬエラーです。サポートに連絡してください。"
    arize_err "dmy" "${SECUREMATRIX} コンパイルファイル削除に失敗しました。"
    # EasySetup モジュール戻し
    jsch_restore
    # ファイルの書き戻し
    reverse_param ${1}
    # モジュール戻し
    back_module
    # ISB プロミスキャス設定戻し
    isbpromisc_back
    # 中断
    quit "install"
  fi
}

#----- 最終処理 -------------------------#
finalize(){
  ${INST_HOME}/finalize.sh "uninstall"
  if [ $? -eq 1 ] ; then
    # 中断
    quit "uninstall"
  fi
}

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

# 初期処理
initialize

# root権限チェック
check_root

# インストールの開始
write_log "--- ${SECUREMATRIX} UnUpdate START [ to Ver-$TO_VER ] ---"

# Server チェック
server_check

# バージョンチェック
version_check "uninstall"

CLEAR
msg_info  "${SECUREMATRIX} のアンアップデートを開始します。" \
          " " \
          "アンアップデート可能バージョン：Ver-$TO_VER" \
          " " \
          "対象サーバ：ISBサーバ" \
          " " \
          "アンアップデートを開始してよろしいですか？"

response="hoge"
while [ ! -z "$response" -a "$response" != y  -a "$response" != n ]
do
  echo_sp "開始する [y]es / 中断する (n)o : "
  read response
done

if [ -z "$response" -o "$response" = y ]; then
  
  # 稼動状態チェック
  service_check_uninstall
  
  # DB ロールバック 実行 (uninstall)
  db_restore
  
  # パッチミドルウェア(rpm)アンインストール
#  rpm_uninstall
#  rpm_delete4uninst
  if [ $OLD_VER_RET -eq 20 ] ; then
    rpm_install4uninst
  fi

  # ISB プロミスキャス戻し
  isbpromisc_back

  # reverse parse_param
  reverse_parse_param ${OLD_VER_RET}

  # JSCH パッチアンインストール
  jsch_patch_uninstall

  # JSP コンパイルファイルを削除します
  jsp_compile_delete

  #  CRON のバックアップ戻しは file_restore で実施する
  ## SMXVer-3.2.1 cluster 対応 cron のパラメータリストア処理
  ##if [ $OLD_VER_RET -eq 20 ] ; then
  ##  cron_param_restore
  ##fi

  # delete ファイルの戻しは file_restore で実施する
  ## SMXVer-3.2.1 cluster 対応 および Ver-3.2.2 recrond ファイルのリストア
  #recovery

  # アップデートモジュールの戻し
  file_restore

  # 最終処理
  finalize

  CLEAR
  msg_info  "${SECUREMATRIX} のアンアップデートが完了しました。" \
            " " \
            "${SECUREMATRIX} を起動してください。" \
            "（起動コマンドは、root権限で実行してください。）" \
            " " \
            "起動対象：Database サーバ [ $PGSQL_START ]" \
            "　　　　　ISBサーバ       [ $ISB_START ]" \
            "　　　　　EasySetup       [ $EZS_START ]" \
            "　　　　　Cron            [ $CRON_START ]"
elif [ "$response" = n ]; then
  quit
fi
