Files
pyGoEdge-UserPanel/reference/goedge 文档/IPItemService.md

654 lines
14 KiB
Markdown
Raw Normal View History

2025-11-18 03:36:49 +08:00
# IPItemService
> IP条目管理
---
## checkIPItemStatus
> 检查IP状态
- 角色:`admin`
- HTTP`POST https://backend.dooki.cloud/IPItemService/checkIPItemStatus`
- RPC`rpc checkIPItemStatus (CheckIPItemStatusRequest) returns (CheckIPItemStatusResponse);`
**请求对象 (`CheckIPItemStatusRequest`)**
```json
{
"ipListId": "int64",
"ip": "string"
}
```
**响应对象 (`CheckIPItemStatusResponse`)**
```json
{
"isOk": "bool // 是否查询成功",
"error": "string",
"isFound": "bool // 是否找到",
"isAllowed": "bool // 是否允许",
"ipItem": "IPItem // 匹配的IPItem"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/checkIPItemStatus" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## countAllEnabledIPItems
> 计算所有IP数量
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/countAllEnabledIPItems`
- RPC`rpc countAllEnabledIPItems(CountAllEnabledIPItemsRequest) returns (RPCCountResponse);`
**请求对象 (`CountAllEnabledIPItemsRequest`)**
```json
{
"keyword": "string // 关键词",
"ip": "string // 单个IP搜索单个IP时需要",
"globalOnly": "bool // 是否为自动添加的IP",
"unread": "bool // 是否未读",
"eventLevel": "string // 事件级别",
"listType": "string // 列表类型black|white",
"userId": "int64 // 用户ID只有管理员才有权限指定用户ID"
}
```
**响应对象 (`RPCCountResponse`)**
```json
{
"count": "int64 // 数量"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/countAllEnabledIPItems" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## countIPItemsWithListId
> 计算IP数量
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/countIPItemsWithListId`
- RPC`rpc countIPItemsWithListId (CountIPItemsWithListIdRequest) returns (RPCCountResponse);`
**请求对象 (`CountIPItemsWithListIdRequest`)**
```json
{
"ipListId": "int64",
"keyword": "string // 关键词",
"ipFrom": "string",
"ipTo": "string",
"eventLevel": "string"
}
```
**响应对象 (`RPCCountResponse`)**
```json
{
"count": "int64 // 数量"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/countIPItemsWithListId" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## createIPItem
> 创建IP
- 角色:`dns`, `user`, `node`, `admin`
- HTTP`POST https://backend.dooki.cloud/IPItemService/createIPItem`
- RPC`rpc createIPItem (CreateIPItemRequest) returns (CreateIPItemResponse);`
**请求对象 (`CreateIPItemRequest`)**
```json
{
"ipListId": "int64 // 所属IP列表ID",
"value": "string // IP原始值比如单个IP、IP范围或者CIDR指定了原始值后无需设置ipFrom和ipTo两个参数",
"ipFrom": "string // 开始IP",
"ipTo": "string // 结束IP可选",
"expiredAt": "int64 // 过期时间戳(可选)",
"reason": "string // 加入理由(可选)",
"type": "string // IP类型值为ipv4或ipv6",
"eventLevel": "string // 级别debug, notice, warning, error, critical, fatal",
"nodeId": "int64 // 可选项所属节点ID",
"serverId": "int64 // 可选项所属网站ID",
"sourceNodeId": "int64 // 可选项,来源节点",
"sourceServerId": "int64 // 可选项来源网站ID",
"sourceHTTPFirewallPolicyId": "int64 // 可选项来源WAF策略ID",
"sourceHTTPFirewallRuleGroupId": "int64 // 可选项来源WAF规则分组ID",
"sourceHTTPFirewallRuleSetId": "int64 // 可选项来源WAF规则集ID"
}
```
**响应对象 (`CreateIPItemResponse`)**
```json
{
"ipItemId": "int64"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/createIPItem" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## createIPItems
> 创建一组IP
- 角色:`dns`, `user`, `node`, `admin`
- HTTP`POST https://backend.dooki.cloud/IPItemService/createIPItems`
- RPC`rpc createIPItems(CreateIPItemsRequest) returns (CreateIPItemsResponse);`
**请求对象 (`CreateIPItemsRequest`)**
```json
{
"ipItems": "[]IPItem // 要创建的IP列表",
"ipListId": "int64 // IP列表ID",
"value": "string // IP原始值比如单个IP、IP范围或者CIDR指定了原始值后无需设置ipFrom和ipTo两个参数",
"ipFrom": "string // 开始IP",
"ipTo": "string // 结束IP可选",
"expiredAt": "int64 // 过期时间戳(可选)",
"reason": "string // 加入理由(可选)",
"type": "string // 类型",
"eventLevel": "string // 级别",
"nodeId": "int64 // 所属节点ID",
"serverId": "int64 // 所属服务ID",
"sourceNodeId": "int64",
"sourceServerId": "int64",
"sourceHTTPFirewallPolicyId": "int64",
"sourceHTTPFirewallRuleGroupId": "int64",
"sourceHTTPFirewallRuleSetId": "int64"
}
```
**响应对象 (`CreateIPItemsResponse`)**
```json
{
"ipItemIds": "[]int64 // 创建后的IP ID列表"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/createIPItems" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## deleteIPItem
> 删除IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/deleteIPItem`
- RPC`rpc deleteIPItem (DeleteIPItemRequest) returns (RPCSuccess);`
**请求对象 (`DeleteIPItemRequest`)**
```json
{
"ipItemId": "int64 // IP条目的ID",
"value": "string // IP原始值比如单个IP、IP范围或者CIDR指定了原始值后无需设置ipFrom和ipTo两个参数",
"ipFrom": "string // v0.4.8新增开始IP和ipItemId二选一",
"ipTo": "string // v0.4.8新增结束IP和ipItemId二选一",
"ipListId": "int64 // v0.4.8新增IP列表IP所在的IP列表如果不指定则会删除所有IP列表中的相关IP信息"
}
```
**响应对象 (`RPCSuccess`)**
```json
{}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/deleteIPItem" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## deleteIPItems
> 批量删除IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/deleteIPItems`
- RPC`rpc deleteIPItems(DeleteIPItemsRequest) returns (RPCSuccess);`
**请求对象 (`DeleteIPItemsRequest`)**
```json
{
"ipItemIds": "[]int64"
}
```
**响应对象 (`RPCSuccess`)**
```json
{}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/deleteIPItems" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## existsEnabledIPItem
> 检查IP是否存在
- 角色:`admin`
- HTTP`POST https://backend.dooki.cloud/IPItemService/existsEnabledIPItem`
- RPC`rpc existsEnabledIPItem (ExistsEnabledIPItemRequest) returns (ExistsEnabledIPItemResponse);`
**请求对象 (`ExistsEnabledIPItemRequest`)**
```json
{
"ipItemId": "int64"
}
```
**响应对象 (`ExistsEnabledIPItemResponse`)**
```json
{
"exists": "bool"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/existsEnabledIPItem" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## findEnabledIPItem
> 查找单个IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/findEnabledIPItem`
- RPC`rpc findEnabledIPItem (FindEnabledIPItemRequest) returns (FindEnabledIPItemResponse);`
**请求对象 (`FindEnabledIPItemRequest`)**
```json
{
"ipItemId": "int64"
}
```
**响应对象 (`FindEnabledIPItemResponse`)**
```json
{
"ipItem": "IPItem"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/findEnabledIPItem" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## findServerIdWithIPItemId
> 查找IP对应的名单所属网站ID
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/findServerIdWithIPItemId`
- RPC`rpc findServerIdWithIPItemId(FindServerIdWithIPItemIdRequest) returns (FindServerIdWithIPItemIdResponse);`
**请求对象 (`FindServerIdWithIPItemIdRequest`)**
```json
{
"ipItemId": "int64 // IP ID"
}
```
**响应对象 (`FindServerIdWithIPItemIdResponse`)**
```json
{
"serverId": "int64 // 网站ID"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/findServerIdWithIPItemId" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## listAllEnabledIPItems
> 列出所有名单中的IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/listAllEnabledIPItems`
- RPC`rpc listAllEnabledIPItems(ListAllEnabledIPItemsRequest) returns (ListAllEnabledIPItemsResponse);`
**请求对象 (`ListAllEnabledIPItemsRequest`)**
```json
{
"keyword": "string // 关键词",
"ip": "string // 单个IP搜索单个IP时需要",
"globalOnly": "bool // 是否为自动添加的IP",
"unread": "bool // 是否未读",
"eventLevel": "string // 事件级别",
"listType": "string // 列表类型black|white",
"userId": "int64 // 用户ID只有管理员才有权限指定用户ID",
"offset": "int64 // 读取位置从0开始",
"size": "int64 // 每次读取数量"
}
```
**响应对象 (`ListAllEnabledIPItemsResponse`)**
```json
{
"results": "[]Result",
"ipList": "IPList // 所属名单",
"ipItem": "IPItem // IP信息",
"server": "Server // 所属服务",
"httpFirewallPolicy": "HTTPFirewallPolicy // 所属WAF策略"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/listAllEnabledIPItems" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## listAllIPItemIds
> 列出所有名单中的IP ID
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/listAllIPItemIds`
- RPC`rpc listAllIPItemIds(ListAllIPItemIdsRequest) returns (ListAllIPItemIdsResponse);`
**请求对象 (`ListAllIPItemIdsRequest`)**
```json
{
"keyword": "string // 关键词",
"ip": "string // 单个IP搜索单个IP时需要",
"globalOnly": "bool // 是否为自动添加的IP",
"unread": "bool // 是否未读",
"eventLevel": "string // 事件级别",
"listType": "string // 列表类型black|white",
"userId": "int64 // 用户ID只有管理员才有权限指定用户ID",
"offset": "int64 // 读取位置从0开始",
"size": "int64 // 每次读取数量"
}
```
**响应对象 (`ListAllIPItemIdsResponse`)**
```json
{
"ipItemIds": "[]int64 // IP ID列表"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/listAllIPItemIds" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## listIPItemsAfterVersion
> 根据版本列出一组IP
- 角色:`node`, `admin`
- HTTP`POST https://backend.dooki.cloud/IPItemService/listIPItemsAfterVersion`
- RPC`rpc listIPItemsAfterVersion (ListIPItemsAfterVersionRequest) returns (ListIPItemsAfterVersionResponse);`
**请求对象 (`ListIPItemsAfterVersionRequest`)**
```json
{
"version": "int64 // 版本号",
"size": "int64 // 数量"
}
```
**响应对象 (`ListIPItemsAfterVersionResponse`)**
```json
{
"ipItems": "[]IPItem",
"version": "int64 // 新的版本号"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/listIPItemsAfterVersion" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## listIPItemsWithListId
> 列出单页的IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/listIPItemsWithListId`
- RPC`rpc listIPItemsWithListId (ListIPItemsWithListIdRequest) returns (ListIPItemsWithListIdResponse);`
**请求对象 (`ListIPItemsWithListIdRequest`)**
```json
{
"ipListId": "int64",
"keyword": "string // 关键词",
"ipFrom": "string",
"ipTo": "string",
"eventLevel": "string",
"offset": "int64 // 读取位置",
"size": "int64 // 数量通常不能小于0"
}
```
**响应对象 (`ListIPItemsWithListIdResponse`)**
```json
{
"ipItems": "[]IPItem"
}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/listIPItemsWithListId" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## updateIPItem
> 修改IP
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/updateIPItem`
- RPC`rpc updateIPItem (UpdateIPItemRequest) returns (RPCSuccess);`
**请求对象 (`UpdateIPItemRequest`)**
```json
{
"ipItemId": "int64",
"value": "string // IP原始值比如单个IP、IP范围或者CIDR指定了原始值后无需设置ipFrom和ipTo两个参数",
"ipFrom": "string // 开始IP",
"ipTo": "string // 结束IP可选",
"expiredAt": "int64",
"reason": "string",
"type": "string // 类型",
"eventLevel": "string // 级别"
}
```
**响应对象 (`RPCSuccess`)**
```json
{}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/updateIPItem" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---
## updateIPItemsRead
> 设置所有为已读
- 角色:`admin`, `user`
- HTTP`POST https://backend.dooki.cloud/IPItemService/updateIPItemsRead`
- RPC`rpc updateIPItemsRead(UpdateIPItemsReadRequest) returns (RPCSuccess);`
**请求对象 (`UpdateIPItemsReadRequest`)**
```json
{}
```
**响应对象 (`RPCSuccess`)**
```json
{}
```
**调用示例**
```bash
curl -X POST "https://backend.dooki.cloud/IPItemService/updateIPItemsRead" \
-H "Content-Type: application/json" \
-H "X-Edge-Access-Token: <YOUR_TOKEN>" \
-d '{
...
}'
```
---