mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +08:00
访问日志增加IPv6范围搜索
This commit is contained in:
@@ -520,14 +520,27 @@ func (this *HTTPAccessLogDAO) listAccessLogs(tx *dbs.Tx,
|
|||||||
|
|
||||||
// keyword
|
// keyword
|
||||||
if len(ip) > 0 {
|
if len(ip) > 0 {
|
||||||
// TODO 支持IPv6范围
|
|
||||||
if tableQuery.hasRemoteAddrField {
|
if tableQuery.hasRemoteAddrField {
|
||||||
// IP格式
|
// IP格式
|
||||||
if strings.Contains(ip, ",") || strings.Contains(ip, "-") {
|
if strings.Contains(ip, ",") || strings.Contains(ip, "-") {
|
||||||
rangeConfig, err := shared.ParseIPRange(ip)
|
rangeConfig, parseErr := shared.ParseIPRange(ip)
|
||||||
if err == nil {
|
if parseErr == nil {
|
||||||
if len(rangeConfig.IPFrom) > 0 && len(rangeConfig.IPTo) > 0 {
|
if len(rangeConfig.IPFrom) > 0 && len(rangeConfig.IPTo) > 0 {
|
||||||
query.Between("INET_ATON(remoteAddr)", iputils.ToLong(rangeConfig.IPFrom), iputils.ToLong(rangeConfig.IPTo))
|
if iputils.IsIPv6(rangeConfig.IPFrom) || iputils.IsIPv6(rangeConfig.IPTo) {
|
||||||
|
var ipFromHex = iputils.ToHex(rangeConfig.IPFrom)
|
||||||
|
var ipToHex = iputils.ToHex(rangeConfig.IPTo)
|
||||||
|
if ipFromHex > ipToHex {
|
||||||
|
ipFromHex, ipToHex = ipToHex, ipFromHex
|
||||||
|
}
|
||||||
|
query.Between("HEX(INET6_ATON(remoteAddr))", ipFromHex, ipToHex)
|
||||||
|
} else {
|
||||||
|
var ipFromLong = iputils.ToLong(rangeConfig.IPFrom)
|
||||||
|
var ipToLong = iputils.ToLong(rangeConfig.IPTo)
|
||||||
|
if ipFromLong > ipToLong {
|
||||||
|
ipFromLong, ipToLong = ipToLong, ipFromLong
|
||||||
|
}
|
||||||
|
query.Between("INET_ATON(remoteAddr)", ipFromLong, ipToLong)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user