Files
2025-11-18 03:36:49 +08:00

14 KiB
Raw Permalink Blame History

IPItemService

IP条目管理


checkIPItemStatus

检查IP状态

  • 角色:admin
  • HTTPPOST https://backend.dooki.cloud/IPItemService/checkIPItemStatus
  • RPCrpc checkIPItemStatus (CheckIPItemStatusRequest) returns (CheckIPItemStatusResponse);

请求对象 (CheckIPItemStatusRequest)

{
  "ipListId": "int64",
  "ip": "string"
}

响应对象 (CheckIPItemStatusResponse)

{
  "isOk": "bool // 是否查询成功",
  "error": "string",
  "isFound": "bool // 是否找到",
  "isAllowed": "bool // 是否允许",
  "ipItem": "IPItem // 匹配的IPItem"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/countAllEnabledIPItems
  • RPCrpc countAllEnabledIPItems(CountAllEnabledIPItemsRequest) returns (RPCCountResponse);

请求对象 (CountAllEnabledIPItemsRequest)

{
  "keyword": "string // 关键词",
  "ip": "string // 单个IP搜索单个IP时需要",
  "globalOnly": "bool // 是否为自动添加的IP",
  "unread": "bool // 是否未读",
  "eventLevel": "string // 事件级别",
  "listType": "string // 列表类型black|white",
  "userId": "int64 // 用户ID只有管理员才有权限指定用户ID"
}

响应对象 (RPCCountResponse)

{
  "count": "int64 // 数量"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/countIPItemsWithListId
  • RPCrpc countIPItemsWithListId (CountIPItemsWithListIdRequest) returns (RPCCountResponse);

请求对象 (CountIPItemsWithListIdRequest)

{
  "ipListId": "int64",
  "keyword": "string // 关键词",
  "ipFrom": "string",
  "ipTo": "string",
  "eventLevel": "string"
}

响应对象 (RPCCountResponse)

{
  "count": "int64 // 数量"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/createIPItem
  • RPCrpc createIPItem (CreateIPItemRequest) returns (CreateIPItemResponse);

请求对象 (CreateIPItemRequest)

{
  "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)

{
  "ipItemId": "int64"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/createIPItems
  • RPCrpc createIPItems(CreateIPItemsRequest) returns (CreateIPItemsResponse);

请求对象 (CreateIPItemsRequest)

{
  "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)

{
  "ipItemIds": "[]int64 // 创建后的IP ID列表"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/deleteIPItem
  • RPCrpc deleteIPItem (DeleteIPItemRequest) returns (RPCSuccess);

请求对象 (DeleteIPItemRequest)

{
  "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)

{}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/deleteIPItems
  • RPCrpc deleteIPItems(DeleteIPItemsRequest) returns (RPCSuccess);

请求对象 (DeleteIPItemsRequest)

{
  "ipItemIds": "[]int64"
}

响应对象 (RPCSuccess)

{}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/existsEnabledIPItem
  • RPCrpc existsEnabledIPItem (ExistsEnabledIPItemRequest) returns (ExistsEnabledIPItemResponse);

请求对象 (ExistsEnabledIPItemRequest)

{
  "ipItemId": "int64"
}

响应对象 (ExistsEnabledIPItemResponse)

{
  "exists": "bool"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/findEnabledIPItem
  • RPCrpc findEnabledIPItem (FindEnabledIPItemRequest) returns (FindEnabledIPItemResponse);

请求对象 (FindEnabledIPItemRequest)

{
  "ipItemId": "int64"
}

响应对象 (FindEnabledIPItemResponse)

{
  "ipItem": "IPItem"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/findServerIdWithIPItemId
  • RPCrpc findServerIdWithIPItemId(FindServerIdWithIPItemIdRequest) returns (FindServerIdWithIPItemIdResponse);

请求对象 (FindServerIdWithIPItemIdRequest)

{
  "ipItemId": "int64 // IP ID"
}

响应对象 (FindServerIdWithIPItemIdResponse)

{
  "serverId": "int64 // 网站ID"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/listAllEnabledIPItems
  • RPCrpc listAllEnabledIPItems(ListAllEnabledIPItemsRequest) returns (ListAllEnabledIPItemsResponse);

请求对象 (ListAllEnabledIPItemsRequest)

{
  "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)

{
  "results": "[]Result",
  "ipList": "IPList // 所属名单",
  "ipItem": "IPItem // IP信息",
  "server": "Server // 所属服务",
  "httpFirewallPolicy": "HTTPFirewallPolicy // 所属WAF策略"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/listAllIPItemIds
  • RPCrpc listAllIPItemIds(ListAllIPItemIdsRequest) returns (ListAllIPItemIdsResponse);

请求对象 (ListAllIPItemIdsRequest)

{
  "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)

{
  "ipItemIds": "[]int64 // IP ID列表"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/listIPItemsAfterVersion
  • RPCrpc listIPItemsAfterVersion (ListIPItemsAfterVersionRequest) returns (ListIPItemsAfterVersionResponse);

请求对象 (ListIPItemsAfterVersionRequest)

{
  "version": "int64 // 版本号",
  "size": "int64 // 数量"
}

响应对象 (ListIPItemsAfterVersionResponse)

{
  "ipItems": "[]IPItem",
  "version": "int64 // 新的版本号"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/listIPItemsWithListId
  • RPCrpc listIPItemsWithListId (ListIPItemsWithListIdRequest) returns (ListIPItemsWithListIdResponse);

请求对象 (ListIPItemsWithListIdRequest)

{
  "ipListId": "int64",
  "keyword": "string // 关键词",
  "ipFrom": "string",
  "ipTo": "string",
  "eventLevel": "string",
  "offset": "int64 // 读取位置",
  "size": "int64 // 数量通常不能小于0"
}

响应对象 (ListIPItemsWithListIdResponse)

{
  "ipItems": "[]IPItem"
}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/updateIPItem
  • RPCrpc updateIPItem (UpdateIPItemRequest) returns (RPCSuccess);

请求对象 (UpdateIPItemRequest)

{
  "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)

{}

调用示例

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
  • HTTPPOST https://backend.dooki.cloud/IPItemService/updateIPItemsRead
  • RPCrpc updateIPItemsRead(UpdateIPItemsReadRequest) returns (RPCSuccess);

请求对象 (UpdateIPItemsReadRequest)

{}

响应对象 (RPCSuccess)

{}

调用示例

curl -X POST "https://backend.dooki.cloud/IPItemService/updateIPItemsRead" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'