#!/bin/bash
[ "$1" == "" ] && exec echo "Usage: $0 <action>"

source ~/.gamerc

SCRIPT_NAME=$(basename "$0")
LOCK_FILE="/home/n1admin/www/promotion_upload/.${SCRIPT_NAME}.lock"

exec 200>"${LOCK_FILE}"
flock -n 200 || {
        echo "${SCRIPT_NAME} is running. Exiting."
    exit 1
}

MAIN_COMMAND="Ctrl time1"
LIVE_GAMEDB_NAME="N1DB20_LIVE_20250630"
LIVE_WORLDDB_NAME="N1World2005_LIVE_20250630"
ACTION=$1
PATCH_VERSION=$(ls -hld ~/patch/20* | awk -F" " '{print $(NF)}' | awk -F"/" '{print $(NF)}' | tail -n 1)

DATE=$(date +"%Y%m%d")
LOG_DIR="/home/n1admin/www/promotion_upload/time1_sync_log/${DATE}"
[ -d "${LOG_DIR}" ] || { mkdir -p "${LOG_DIR}"; chmod 777 -R "${LOG_DIR}"; }

NOW=$(date +"%Y%m%dT%H%M%S")
LOG_FILE="${PATCH_VERSION}_${ACTION}_${NOW}.log"
#MONITOR_FILE="/tmp/time1_sync_monitor.log"

case ${ACTION} in
    status)
        CMD="yes | ${MAIN_COMMAND}_status";;
    stop)
        CMD="yes | ${MAIN_COMMAND}_stop;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"Game Server 關閉\"; 
        ";;
    start)
        CMD="yes | ${MAIN_COMMAND}_start;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"Game Server 啟動\"; 
        ";;
    restart)
        CMD="yes | ${MAIN_COMMAND}_restart;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"Game Server 重新啟動\"; 
        ";;
    dbbackup)
        CMD="yes | ${MAIN_COMMAND}_dbbackup;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"資料庫備分\"; 
        ";;
    sync)
        CMD="yes | ${MAIN_COMMAND}_sync;
            cd $HOME/servers1/; rsync -avz config00.ini TIME1:~/servers1/.;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"${PATCH_VERSION} 版本同步( Server + Client )\"; 
        ";;
    dbpatch)
        CMD="
            yes | ${MAIN_COMMAND}_dbpatch;
            ssh TIME1 \"perl ~/common-TEST/db/db_game_alter :${LIVE_GAMEDB_NAME}; perl ~/common-TEST/db/db_world_alter :${LIVE_WORLDDB_NAME};\";
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"資料庫 Schema 更新\"; 
        ";;
    itemmall)
        CMD="yes | ${MAIN_COMMAND}_itemmall;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"資料表更新\"; 
        ";;
    sync_translate)
        CMD="yes | ${MAIN_COMMAND}_sync_translate;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"翻譯更新 ( Client Translate )\"; 
        ";;
    one-stop_services)
        CMD="
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"${PATCH_VERSION} 版本更新，全部一條龍開始\"; 
            ~/bin/${SCRIPT_NAME} stop;
            ~/bin/${SCRIPT_NAME} dbbackup;
            ~/bin/${SCRIPT_NAME} sync;
            cd $HOME/servers1/; rsync -avz config00.ini TIME1:~/servers1/.;
            ~/bin/${SCRIPT_NAME} dbpatch;
            ssh TIME1 \"perl ~/common-TEST/db/db_game_alter :${LIVE_GAMEDB_NAME}; perl ~/common-TEST/db/db_world_alter :${LIVE_WORLDDB_NAME};\";
            ~/bin/${SCRIPT_NAME} itemmall;
            ~/bin/${SCRIPT_NAME} start;
            ~/bin/send_chatbot_text_only_test \"TIME1 操作\" \"${PATCH_VERSION} 版本更新，全部一條龍結束。可以登入驗證了!\"; 
        ";;
    *)
        echo "Unknown command for sync";;
esac

echo ${CMD}
bash -c "${CMD}" | tee -a ${LOG_DIR}/${LOG_FILE}

[ -f "${LOCK_FILE}" ] && rm -rf ${LOCK_FILE}
