mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 10:00:24 +08:00
支持搜索IPv6范围
This commit is contained in:
@@ -514,17 +514,19 @@ func (this *IPItemDAO) CountAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, ke
|
|||||||
}
|
}
|
||||||
if len(keyword) > 0 {
|
if len(keyword) > 0 {
|
||||||
if net.ParseIP(keyword) != nil { // 是一个IP地址
|
if net.ParseIP(keyword) != nil { // 是一个IP地址
|
||||||
// TODO 支持IPv6
|
if iputils.IsIPv4(keyword) {
|
||||||
query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
||||||
Param("ipKeyword", keyword)
|
Param("ipKeyword", keyword)
|
||||||
|
} else if iputils.IsIPv6(keyword) {
|
||||||
|
query.Where("(ipFrom =:ipKeyword OR HEX(INET6_ATON(:ipKeyword)) BETWEEN HEX(INET6_ATON(ipFrom)) AND HEX(INET6_ATON(ipTo)))").
|
||||||
|
Param("ipKeyword", keyword)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
query.Like("ipFrom", dbutils.QuoteLike(keyword))
|
query.Like("ipFrom", dbutils.QuoteLike(keyword))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(ip) > 0 {
|
if len(ip) > 0 {
|
||||||
// TODO 支持IPv6
|
query.Attr("ipFrom", ip)
|
||||||
query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
|
||||||
Param("ip", ip)
|
|
||||||
}
|
}
|
||||||
if listId > 0 {
|
if listId > 0 {
|
||||||
query.Attr("listId", listId)
|
query.Attr("listId", listId)
|
||||||
@@ -564,17 +566,19 @@ func (this *IPItemDAO) ListAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, key
|
|||||||
}
|
}
|
||||||
if len(keyword) > 0 {
|
if len(keyword) > 0 {
|
||||||
if net.ParseIP(keyword) != nil { // 是一个IP地址
|
if net.ParseIP(keyword) != nil { // 是一个IP地址
|
||||||
// TODO 支持IPv6
|
if iputils.IsIPv4(keyword) {
|
||||||
query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
||||||
Param("ipKeyword", keyword)
|
Param("ipKeyword", keyword)
|
||||||
|
} else if iputils.IsIPv6(keyword) {
|
||||||
|
query.Where("(ipFrom =:ipKeyword OR HEX(INET6_ATON(:ipKeyword)) BETWEEN HEX(INET6_ATON(ipFrom)) AND HEX(INET6_ATON(ipTo)))").
|
||||||
|
Param("ipKeyword", keyword)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
query.Like("ipFrom", dbutils.QuoteLike(keyword))
|
query.Like("ipFrom", dbutils.QuoteLike(keyword))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(ip) > 0 {
|
if len(ip) > 0 {
|
||||||
// TODO 支持IPv6
|
query.Attr("ipFrom", ip)
|
||||||
query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))").
|
|
||||||
Param("ip", ip)
|
|
||||||
}
|
}
|
||||||
if listId > 0 {
|
if listId > 0 {
|
||||||
query.Attr("listId", listId)
|
query.Attr("listId", listId)
|
||||||
|
|||||||
Reference in New Issue
Block a user