mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-28 05:46:36 +08:00
2.6 KiB
2.6 KiB
API 约定
你会学到:OpenFlare 管理端 API 与 Agent API 的响应结构、路径约定、鉴权方式和 Swagger 入口。
OpenFlare 的管理端 API 与 Agent API 都使用 JSON。
响应结构
成功与失败都应返回清晰的 message:
{
"success": true,
"message": "",
"data": {}
}
路径约定
| 类型 | 约定 |
|---|---|
| 管理端 API | 由管理端 Session 鉴权 |
| Agent API | 固定放在 /api/agent/* |
| 只读接口 | 使用 GET |
| 变更类接口 | 使用 POST |
WAF IP 组接口
管理端 WAF IP 组接口统一要求管理端 Session 鉴权:
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/api/waf/ip-groups |
查询 IP 组列表 |
GET |
/api/waf/ip-groups/:id |
查询单个 IP 组 |
POST |
/api/waf/ip-groups |
创建 IP 组 |
POST |
/api/waf/ip-groups/test |
测试自动 IP 组 Expr 规则,不保存配置,返回当前日志窗口内命中的 IP 列表 |
POST |
/api/waf/ip-groups/:id/update |
更新 IP 组 |
POST |
/api/waf/ip-groups/:id/delete |
删除 IP 组;已被规则组引用时会拒绝 |
POST |
/api/waf/ip-groups/:id/sync |
立即同步订阅型 IP 组或立即执行自动型 IP 组 |
IP 组 type 支持 manual、automatic、subscription。自动型 IP 组的 auto_config 是 JSON 对象,当前支持:
{
"lookback_minutes": 60,
"rules": [
{
"name": "单 IP 404 高频扫描",
"expr": "request_count > 100 && status_404_ratio >= 0.8"
},
{
"name": "单 IP 直连访问异常",
"expr": "ip_host_count > 50 && ip_host_ratio > 0.5"
}
]
}
自动规则使用 Expr 语法,表达式必须返回布尔值。规则按单个 IP 的请求日志聚合指标计算,可用字段包括 ip、request_count、status_404_count、status_404_ratio、ip_host_count、ip_host_ratio、client_error_count、server_error_count、last_seen_unix。完整语法和字段含义见 WAF 自动 IP 组规则语法。订阅格式支持 text 与 json:文本格式按行解析 IP/IP 段并忽略空行和 # 开头的注释;JSON 格式可通过映射规则选择数组,默认读取根数组。
鉴权
管理端继续复用现有登录、角色与 Session。
Agent 正式请求统一使用节点专属 agent_token,首次接入可使用全局 discovery_token。Agent 请求头固定为:
X-Agent-Token: <token>
日志中不得打印完整 Token。
Swagger
登录管理端后可访问:
/swagger/index.html
Swagger 文件位于 openflare_server/docs,由 swag init 生成。