mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-19 12:20:24 +08:00
增加通过IP来搜索IP名单的API
This commit is contained in:
@@ -240,6 +240,20 @@ func (this *IPItemDAO) FindEnabledItemContainsIP(tx *dbs.Tx, listId int64, ip ui
|
|||||||
return one.(*IPItem), nil
|
return one.(*IPItem), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindEnabledItemsWithIP 根据IP查找Item
|
||||||
|
func (this *IPItemDAO) FindEnabledItemsWithIP(tx *dbs.Tx, ip string) (result []*IPItem, err error) {
|
||||||
|
_, err = this.Query(tx).
|
||||||
|
Attr("ipFrom", ip).
|
||||||
|
Attr("ipTo", "").
|
||||||
|
Where("(expiredAt=0 OR expiredAt>:nowTime)").
|
||||||
|
Param("nowTime", time.Now().Unix()).
|
||||||
|
Where("listId IN (SELECT id FROM " + SharedIPListDAO.Table + " WHERE state=1)").
|
||||||
|
AscPk().
|
||||||
|
Slice(&result).
|
||||||
|
FindAll()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// ExistsEnabledItem 检查IP是否存在
|
// ExistsEnabledItem 检查IP是否存在
|
||||||
func (this *IPItemDAO) ExistsEnabledItem(tx *dbs.Tx, itemId int64) (bool, error) {
|
func (this *IPItemDAO) ExistsEnabledItem(tx *dbs.Tx, itemId int64) (bool, error) {
|
||||||
return this.Query(tx).
|
return this.Query(tx).
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
|
"github.com/iwind/TeaGo/lists"
|
||||||
)
|
)
|
||||||
|
|
||||||
// IPListService IP名单相关服务
|
// IPListService IP名单相关服务
|
||||||
@@ -145,3 +146,48 @@ func (this *IPListService) ExistsEnabledIPList(ctx context.Context, req *pb.Exis
|
|||||||
}
|
}
|
||||||
return &pb.ExistsEnabledIPListResponse{Exists: b}, nil
|
return &pb.ExistsEnabledIPListResponse{Exists: b}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindEnabledIPListContainsIP 根据IP来搜索IP名单
|
||||||
|
func (this *IPListService) FindEnabledIPListContainsIP(ctx context.Context, req *pb.FindEnabledIPListContainsIPRequest) (*pb.FindEnabledIPListContainsIPResponse, error) {
|
||||||
|
_, err := this.ValidateAdmin(ctx, 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var tx = this.NullTx()
|
||||||
|
items, err := models.SharedIPItemDAO.FindEnabledItemsWithIP(tx, req.Ip)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var pbLists = []*pb.IPList{}
|
||||||
|
var listIds = []int64{}
|
||||||
|
for _, item := range items {
|
||||||
|
if lists.ContainsInt64(listIds, int64(item.ListId)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
list, err := models.SharedIPListDAO.FindEnabledIPList(tx, int64(item.ListId))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if list == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if list.IsPublic != 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
pbLists = append(pbLists, &pb.IPList{
|
||||||
|
Id: int64(list.Id),
|
||||||
|
IsOn: list.IsOn == 1,
|
||||||
|
Type: list.Type,
|
||||||
|
Name: list.Name,
|
||||||
|
Code: list.Code,
|
||||||
|
IsPublic: list.IsPublic == 1,
|
||||||
|
Description: "",
|
||||||
|
})
|
||||||
|
|
||||||
|
listIds = append(listIds, int64(item.ListId))
|
||||||
|
}
|
||||||
|
return &pb.FindEnabledIPListContainsIPResponse{IpLists: pbLists}, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user