## 高危 IP 库 (`intel`)

平台下发的高危 IP 库(付费项 WAF 规则更新,每小时同步)的状态、全局处置策略、条目查询、单条加白与今日来访命中;租户只读。

鉴权: 用户（部分参数仅管理员） · 文档: https://www-demo.kuxitong.com/zh/docs/api/intel

### GET `/api/v2/intel`

获取高危 IP 库状态 · 鉴权: 用户（部分参数仅管理员）

```sh
curl "https://panel.example.com/api/v2/intel" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### POST `/api/v2/intel/allow`

高危 IP 单条加白 · 鉴权: 仅管理员

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `ip` | string | 有 | 地址或网段。 |
| `reason` | string |  | 加白原因(记在白名单条目上);不带记「高危 IP 库加白」。 |

```sh
curl -X POST "https://panel.example.com/api/v2/intel/allow" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"192.0.2.10"}'
```

### GET `/api/v2/intel/ips`

查询高危 IP 库条目 · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | integer |  | 页码,从 1 开始。 默认: 1 |
| `page_size` | integer |  | 每页条数。 默认: 20 |
| `ip` | string |  | 单个地址 = 查覆盖它的条目;其余按 CIDR 文本包含过滤(仅管理员,租户必须给单个地址)。 |
| `level` | IntelLevel |  | 按等级过滤。 可选值: ["high","medium"] |
| `reason` | IntelReason |  | 按类型过滤。 可选值: ["scanner","exploit","cc"] |

```sh
curl "https://panel.example.com/api/v2/intel/ips" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

### PUT `/api/v2/intel/policy`

修改高危 IP 库处置策略 · 鉴权: 仅管理员

请求体:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `action` | IntelAction | 有 | 处置方式:challenge 验证(JS 验证通过才放行);block 拦截(封本站并回 403);log 观察(只记录)。 可选值: ["challenge","block","log"] |
| `level` | IntelLevel | 有 | 等级:high 高危(漏洞利用类或分数 ≥ 80);medium 中危。 可选值: ["high","medium"] |

```sh
curl -X PUT "https://panel.example.com/api/v2/intel/policy" \
  -H "X-API-Key: $GOCDN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"challenge","level":"high"}'
```

### GET `/api/v2/intel/visitors`

今日访问过我的高危 IP · 鉴权: 用户（部分参数仅管理员）

查询参数:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `page` | integer |  | 页码,从 1 开始。 默认: 1 |
| `page_size` | integer |  | 每页条数。 默认: 20 |
| `tenant_id` | integer |  | 仅管理员可用:按租户过滤。租户凭据调用时忽略,只返回本租户数据。 |
| `site_id` | integer |  | 按站点过滤。 |

```sh
curl "https://panel.example.com/api/v2/intel/visitors" \
  -H "X-API-Key: $GOCDN_API_KEY"
```

高危 IP 库对象:

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `action` | IntelAction | 有 | 处置方式:challenge 验证(JS 验证通过才放行);block 拦截(封本站并回 403);log 观察(只记录)。 可选值: ["challenge","block","log"] |
| `actions` | IntelAction[] |  | 今日对它用过的处置方式。 |
| `added_at` | string |  | 加入名单的时间(同一 IP 再次写入时保持原值)。 (只读) |
| `cidr` | string |  | 地址或网段(规范写法)。 |
| `count` | integer |  | 条目数。 |
| `entry` | IntelEntry |  | 高危 IP 库里一条。 |
| `error` | string |  | 最近一次同步失败的原因(在用的一版保留);成功为空串。 |
| `expires_at` | string |  | 到期时间;空 = 永久。到期后自动失效(节点按本机时钟判,不依赖主控),主控随后清理并随下次配置下发。写入时须晚于当前时刻。 |
| `first_seen_at` | string |  | 首次入库的时刻;库没给时不返回。 |
| `generated_at` | string |  | 库的生成时刻(超管侧)。 |
| `halt` | string |  | 授权已过期、停用或超管长时间不可达而停止更新的原因(只给管理员;不是故障,与 error 分开;没有停更时不出现)。 |
| `high` | integer |  | 高危条目数。 |
| `hits` | integer |  | 今日命中次数。 |
| `ip` | string | 有 | 地址或网段。 |
| `last_at` | string |  | 最近一次命中时刻。 |
| `level` | IntelLevel |  | 等级:high 高危(漏洞利用类或分数 ≥ 80);medium 中危。 可选值: ["high","medium"] |
| `masters` | integer |  | 24 小时内报告该条的主控数;库没给时不返回。 |
| `medium` | integer |  | 中危条目数。 |
| `policy` | IntelPolicy |  | 高危 IP 库全局处置策略;站点配置 intel.action 可单独改或关闭。 |
| `reason` | string |  | 加白原因(记在白名单条目上);不带记「高危 IP 库加白」。 |
| `reported_at` | string |  | 最近一次被报告的时刻。 |
| `score` | integer |  | 风险分(1–100)。 |
| `serving` | boolean |  | 是否在向节点下发(拉成过且没过期)。 |
| `sites` | integer |  | 涉及网站数。 |
| `source` | IpListSource |  | 条目来源:manual 手工添加;import 批量导入;ip_detail 在 IP 详情里拉黑/加白;api 经接口写入。 可选值: ["manual","import","ip_detail","api"] |
| `stale` | boolean |  | 授权不再带库(停更)且最后一版已过 24 小时,不再下发。 |
| `sub` | string |  | 子类(如 WAF 连续命中);库没给时不返回。 |
| `synced_at` | string |  | 最近一次同步时刻。 |
| `version` | string |  | 在下发的库版本;没有为空串。 |
