From 930babc0100f8dfb5e3ec36d437f9119be2b24e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 6 Apr 2024 10:31:03 +0800 Subject: [PATCH] =?UTF-8?q?IP=E5=90=8D=E5=8D=95=E6=90=9C=E7=B4=A2IP?= =?UTF-8?q?=E6=97=B6=E5=90=8C=E6=97=B6=E6=90=9C=E7=B4=A2=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/ip_item_dao.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/db/models/ip_item_dao.go b/internal/db/models/ip_item_dao.go index 1ba0ef35..66a412a5 100644 --- a/internal/db/models/ip_item_dao.go +++ b/internal/db/models/ip_item_dao.go @@ -514,13 +514,17 @@ func (this *IPItemDAO) CountAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, ke } if len(keyword) > 0 { if net.ParseIP(keyword) != nil { // 是一个IP地址 - query.Attr("ipFrom", keyword) + // TODO 支持IPv6 + query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ipKeyword", keyword) } else { query.Like("ipFrom", dbutils.QuoteLike(keyword)) } } if len(ip) > 0 { - query.Attr("ipFrom", ip) + // TODO 支持IPv6 + query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ip", ip) } if listId > 0 { query.Attr("listId", listId) @@ -560,13 +564,17 @@ func (this *IPItemDAO) ListAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, key } if len(keyword) > 0 { if net.ParseIP(keyword) != nil { // 是一个IP地址 - query.Attr("ipFrom", keyword) + // TODO 支持IPv6 + query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ipKeyword", keyword) } else { query.Like("ipFrom", dbutils.QuoteLike(keyword)) } } if len(ip) > 0 { - query.Attr("ipFrom", ip) + // TODO 支持IPv6 + query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ip", ip) } if listId > 0 { query.Attr("listId", listId)