#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ctwx_file="/tmp/ctwx_qos.sh"

# ================= 配置区域 =================
# 日志文件路径
LOG_FILE="/tmp/stop_qos.log"

# 在此处定义需要解除限速的容器关键词列表（空格分隔）
# 请确保这里填写的关键词与启动脚本中的一致
SEARCH_KEYWORDS="16913 42639"

# ===========================================

# 日志初始化
{
    echo "========================================"
    echo "开始批量解除 QoS 设置 - $(date '+%Y-%m-%d %H:%M:%S')"
    echo "========================================"
} >> "$LOG_FILE"

# 将后续所有输出追加到日志文件
exec >> "$LOG_FILE" 2>&1

# 参数2：字符串且长度 > 5（含空格需用引号传入）
if [[ $# -ge 1 ]]; then
  arg2="$1"
  if (( ${#arg2} > 5 )); then
    SEARCH_KEYWORDS="$arg2"
  else
    echo "错误：必须是长度>5的字符串，当前是：$1"
    exit 1
  fi
fi

# -------------------------------------------
# 1. 准备工作：获取全局网卡列表
# -------------------------------------------
echo ">> [全局] 正在读取网卡配置..."

# 提取网卡列表
nic_list=$(cat /tmp/net_link_prober.json 2>/dev/null | python -m json.tool 2>/dev/null | grep 'phynic' | awk -F'"' '{print $4}')

if [ -z "$nic_list" ]; then
    echo "错误：未能从 JSON 文件中找到任何网卡 (phynic)。无法执行解除操作。"
    exit 1
fi

echo ">> [全局] 目标网卡列表: $(echo $nic_list | tr '\n' ' ')"
echo "========================================"

# -------------------------------------------
# 2. 循环处理每个关键词
# -------------------------------------------

for keyword in $SEARCH_KEYWORDS; do
    echo ""
    echo ">> [任务开始] 正在处理关键词: $keyword"

    # 根据关键词提取 AppID
    target_appid=$(docker ps --format "{{.Names}}" | grep "$keyword" | head -n 1 | awk -F "_" '{if (NF >= 3) print $3}' | awk -F "." '{print $1}')

    # 检查是否获取到 ID
    if [ -z "$target_appid" ]; then
        echo "   警告：未找到包含 '$keyword' 的容器，或无法提取 AppID。跳过此任务。"
        continue
    fi

    # 检查 ID 长度
    if [ ${#target_appid} -lt 8 ]; then
        echo "   警告：提取到的 AppID ($target_appid) 长度不足8位，qos.sh 可能会拒绝解除。"
    fi

    echo "   -> 识别到 AppID: ${target_appid}"

    # -------------------------------------------
    # 3. 对该 AppID 执行解除限速 (-t del)
    # -------------------------------------------
    for nic in $nic_list; do
        echo "   正在对网卡 [$nic] 解除限速..."

        # 执行外部脚本 (注意参数是 -t del)
        sh "$ctwx_file" -t del -i "$nic" -a "$target_appid"

        if [ $? -eq 0 ]; then
            echo "   [成功] 网卡 [$nic] -> AppID [$target_appid] 已解除。"
        else
            echo "   [失败] 网卡 [$nic] -> AppID [$target_appid] 解除失败！"
        fi
    done
done

echo ""
echo "========================================"
echo "所有解除任务执行完毕。"
