#!/bin/bash

###### 檔案資訊 ######
#
# 檔名: disk_space_monitor_notice_cron
#
# 功能: 將檢測空間達到設定上限的資訊, 
#       發送至各版本的 Skpe 群組 
#
# 版更:
# v1: 基本款
# v2: 加入維護 Ctrl LIVEStart, 檢測結果發送
# v3: 每次執行腳本檢測時, 若比對跟上次結果相同, 不重複發送
#
###### 檔案資訊 ######

# 指定輸出的 LOG 檔
LOG_OUTPUT="/tmp/disk_space_monitor.log"
LOG_OUTPUT_TEST="/tmp/disk_space_monitor_test.log"
LOG_OUTPUT_LIVE="/tmp/disk_space_monitor_live.log"
MESSAGES_OUTPUT="/tmp/disk_space_monitor_messages.log"
LOG_OUTPUT_PREVIOUS="/tmp/disk_space_monitor_prev.log"

# 如果 gamerc 存在, 則載入它
[ -f ~/.gamerc ] && source ~/.gamerc

# 如果是非 Ctrl 架構請自行設定遊戲名稱跟國家名稱
[ -z "${GAME_TYPE}" ] && GAME_TYPE="非Ctrl架構, 自行設定"
[ -z "${COUNTRY_CODE}" ] && COUNTRY_CODE="非Ctrl架構, 自行設定"

# 如果有需要自訂或是修改顯示的遊戲與國家名稱, 請自行修正
[ "${GAME_TYPE}" == "AK" ] && GAME_TYPE_DISPLAY="M7" || GAME_TYPE_DISPLAY=${GAME_TYPE}
COUNTRY_CODE_DISPLAY=${COUNTRY_CODE_DISPLAY}

# API ROUTE 設定, 如果需要可自行修改
[ ! -z "${COUNTRY_CODE_DISPLAY}" ] && ROUTE=$(echo ${GAME_TYPE}-${COUNTRY_CODE_DISPLAY}) || ROUTE=$(echo ${GAME_TYPE}-${COUNTRY_CODE})

# 舊的原始 LOG 檔案如果存在, 則進行備份後刪除
[ -f "${LOG_OUTPUT}" ] && cp -arf ${LOG_OUTPUT} ${LOG_OUTPUT_PREVIOUS}; rm -rf ${LOG_OUTPUT}

# 舊的發送訊息 LOG 檔案如果存在, 則進行刪除
[ -f "${MESSAGES_OUTPUT}" ] && rm -rf ${MESSAGES_OUTPUT}

# 測試機掃描
~/bin/disk_space_monitor_notice
[ -f ${LOG_OUTPUT_TEST} ] && cat ${LOG_OUTPUT_TEST} >> ${LOG_OUTPUT}

# 正式機掃描
sendscript allall <<< "~/bin/disk_space_monitor_notice"
sendscript allall -p nosave nohostname <<< "[ -f ${LOG_OUTPUT_LIVE} ] && cat ${LOG_OUTPUT_LIVE}" >> ${LOG_OUTPUT}

# 如果輸出的 LOG 檔案有內容, 則發送訊息到 API, 請機器人送群組
LOG_SIZE=$(stat --printf="%s" ${LOG_OUTPUT})

# 發送當下時間
DATETIME=$(date +"%Y-%m-%d %T %Z")

if [ "${LOG_SIZE}" -gt 0 ]; then
	# 檢查這次 LOG 檔內容, 若與上次相同, 則不發送
	MD5_LOG_OUTPUT_NOW=$(md5sum ${LOG_OUTPUT})
	MD5_LOG_OUTPUT_PREVIOUS=$(md5sum ${LOG_OUTPUT_PREVIOUS})
	
	if [ "${MD5_LOG_OUTPUT_NOW}" == "${MD5_LOG_OUTPUT_PREVIOUS}" ]; then
		echo "與上次相同, 不做擾民發送的動作!"
	else
		# 發送訊息
		cat ${LOG_OUTPUT} | awk -F"," '{
				if ($4 == "SIZE")
					print $1"-"$2" ("$3") "$10" "$8" disk space remaining.";
				else if ($4 == "PERCENTAGE")
					print $1"-"$2" ("$3") "$10" "$9" usage.";
			}' > ${MESSAGES_OUTPUT}
		sed -i "1s/^/[排程檢查]\n[WARNING]\n${DATETIME}\n/" ${MESSAGES_OUTPUT}
		MESSAGE=$(cat ${MESSAGES_OUTPUT})

		# 送出資訊給 API
		#curl -sS -X POST --data-urlencod "message=${MESSAGE}" "https://web-dev.x-legend.com/api/${ROUTE}/"

		# 送出資訊給 Google Chat Webhook
		#curl -sS -X POST -H 'Content-Type: application/json' $GOOGLE_CHAT_WEBHOOK_URL -d "{\"text\": \"${MESSAGE}\"}"
        $HOME/bin/send_chatbot_text_only_by_thread_tag "healthy_check" "網頁工具操作" "${MESSAGE}" minute 10
	fi
else
        if [ "$1" == "maintenance" ]; then
                # 發送訊息
                MESSAGE=$(printf "[維護確認]\n${DATETIME}\n${GAME_TYPE_DISPLAY}-${COUNTRY_CODE_DISPLAY} => 硬碟監控 檢查 OK!")

                # 送出資訊給 API
                #curl -sS -X POST --data-urlencod "message=${MESSAGE}" "https://web-dev.x-legend.com/api/${ROUTE}/"

		        # 送出資訊給 Google Chat Webhook
        		#curl -sS -X POST -H 'Content-Type: application/json' $GOOGLE_CHAT_WEBHOOK_URL -d "{\"text\": \"${MESSAGE}\"}"
                $HOME/bin/send_chatbot_text_only_by_thread_tag "healthy_check" "網頁工具操作" "${MESSAGE}" minute 10
        fi
fi
