#!/bin/bash
source "$HOME/.gamerc"

# 至少要有 3 個參數：<environment> <target_world_id> <source_world_id1> [...]
[ -z "$3" ] && {
    echo "Usage: $0 <environment> <target_world_id> <source_world_id1> [source_world_id2 ...]" >&2
    exit 1
}

# 第一個參數: 環境
environment="$1"
shift

# 第二個參數：target_world_id（目前未使用，如有需要可再加入 CGI_CMD）
target_world_id="$1"
shift

# 其餘參數：source_world_ids
source_world_ids="$*"

# 檢查 environment 合法性
case "$environment" in
    test|live)
        ;;
    *)
        echo "Unknown environment: ${environment} (only 'test' or 'live' allowed)" >&2
        exit 1
        ;;
esac

all_ok=1  # 只要有一個 world 沒找到 log，就設為 0

for world_id in ${source_world_ids}; do
    SET_ID=$(( world_id / 100 ))
    CGI_CMD="reward_activity+${world_id}+5"

    # 依環境與 SET_ID 設定 MACHINE
    if [ "${environment}" == "test" ]; then
        if   [ "${SET_ID}" -ge 10 ] && [ "${SET_ID}" -lt 20 ]; then
            MACHINE="MERGE_ASIA"
        elif [ "${SET_ID}" -ge 20 ] && [ "${SET_ID}" -lt 30 ]; then
            MACHINE="MERGE_US"
        elif [ "${SET_ID}" -ge 30 ] && [ "${SET_ID}" -lt 40 ]; then
            MACHINE="MERGE_EU"
        else
            echo "Unknown SET_ID ${SET_ID} for test environment" >&2
            all_ok=0
            continue
        fi
    elif [ "${environment}" == "live" ]; then
        MACHINE="MS${SET_ID}"
    fi

    # 由 /etc/hosts 取得 IP
    IP=$(awk -v h="${MACHINE}" '$0 ~ h {print $1}' /etc/hosts | head -n 1)
    if [ -z "$IP" ]; then
        echo "Cannot find IP for machine '${MACHINE}' in /etc/hosts" >&2
        all_ok=0
        continue
    fi

    # 由機器上 setup.ini 取得 Mission CGI Port
    PORT=$(ssh "${MACHINE}" "grep '^CGIPort=' \"\$HOME/servers${SET_ID}/MissionServer${SET_ID}/setup.ini\" 2>/dev/null | sed 's/CGIPort=//'")
    if [ -z "$PORT" ]; then
        echo "Cannot get CGIPort from ${MACHINE}:\$HOME/servers${SET_ID}/MissionServer${SET_ID}/setup.ini" >&2
        all_ok=0
        continue
    fi

    echo "Machine: ${MACHINE} => IP: ${IP}, Mission: MS${SET_ID}, World: WS${world_id}, Port: ${PORT}"
    echo "curl http://127.0.0.1/cgi-bin/CGIAgent.fcgi?${IP},${PORT},0KjaM85BjfqjA,${CGI_CMD}"
    curl http://127.0.0.1/cgi-bin/CGIAgent.fcgi?${IP},${PORT},0KjaM85BjfqjA,${CGI_CMD}

    # 在 WorldServer 檢查 GM log 是否已出現 ',,reward_activity 5'
    # 若已出現 => 此 world_id 視為 OK，進入下一個 loop
    # 若未出現 => 記錄為失敗
    if ssh "WS${world_id}" "cd \"\$HOME/servers${SET_ID}/WorldServer${world_id}\" 2>/dev/null && \
        grep -q ',,reward_activity 5' GM${world_id}.log.* 2>/dev/null"
    then
        echo "World ${world_id}: found ',,reward_activity 5' in GM${world_id}.log.* (OK)"
    else
        echo "World ${world_id}: NOT found ',,reward_activity 5' in GM${world_id}.log.*" >&2
        all_ok=0
    fi

    echo "------------------------------------------------------------"
done

if [ "$all_ok" -eq 1 ]; then
    echo "全部 world 的 GM log 都已找到 ',,reward_activity 5'，完成"
    send_chatbot_text_only "[CGI] reward_activity 5 成功!" "${target_world_id} <- ${source_world_ids}"
    exit 0
else
    echo "部分 world 的 GM log 未找到 ',,reward_activity 5'，請檢查上述訊息" >&2
    exit 1
fi

