whois
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// QueryLog DNS 查询日志结构
|
||||
type QueryLog struct {
|
||||
ID int64 `json:"id"`
|
||||
Timestamp time.Time `json:"timestamp"` // 查询时间
|
||||
ClientIP string `json:"clientIP"` // 客户端 IP
|
||||
Domain string `json:"domain"` // 查询域名
|
||||
QueryType string `json:"queryType"` // 查询类型
|
||||
ResponseTime int64 `json:"responseTime"` // 响应时间 (ms)
|
||||
Result string `json:"result"` // 查询结果(allowed, blocked, error)
|
||||
BlockRule string `json:"blockRule"` // 屏蔽规则(如果被屏蔽)
|
||||
BlockType string `json:"blockType"` // 屏蔽类型(如果被屏蔽)
|
||||
FromCache bool `json:"fromCache"` // 是否来自缓存
|
||||
DNSSEC bool `json:"dnssec"` // 是否使用了 DNSSEC
|
||||
EDNS bool `json:"edns"` // 是否使用了 EDNS
|
||||
DNSServer string `json:"dnsServer"` // 使用的 DNS 服务器
|
||||
DNSSECServer string `json:"dnssecServer"` // 使用的 DNSSEC 专用服务器
|
||||
Answers string `json:"answers"` // 解析记录(JSON 格式)
|
||||
ResponseCode int `json:"responseCode"` // DNS 响应代码
|
||||
}
|
||||
|
||||
// LogFilter 日志过滤条件
|
||||
type LogFilter struct {
|
||||
Result string // 结果过滤(allowed, blocked, error)
|
||||
SearchTerm string // 搜索关键词(域名或 IP)
|
||||
QueryType string // 查询类型过滤
|
||||
StartTime time.Time // 开始时间
|
||||
EndTime time.Time // 结束时间
|
||||
}
|
||||
|
||||
// PageParams 分页参数
|
||||
type PageParams struct {
|
||||
Limit int // 每页数量
|
||||
Offset int // 偏移量
|
||||
SortField string // 排序字段
|
||||
SortDirection string // 排序方向(asc, desc)
|
||||
}
|
||||
|
||||
// LogStats 日志统计信息
|
||||
type LogStats struct {
|
||||
TotalQueries int64 `json:"totalQueries"` // 总查询数
|
||||
BlockedQueries int64 `json:"blockedQueries"` // 被屏蔽查询数
|
||||
AllowedQueries int64 `json:"allowedQueries"` // 允许查询数
|
||||
ErrorQueries int64 `json:"errorQueries"` // 错误查询数
|
||||
AvgResponseTime float64 `json:"avgResponseTime"` // 平均响应时间
|
||||
QueryTypes map[string]int64 `json:"queryTypes"` // 查询类型分布
|
||||
TopDomains []DomainCount `json:"topDomains"` // TOP 域名
|
||||
TopClients []ClientCount `json:"topClients"` // TOP 客户端
|
||||
}
|
||||
|
||||
// DomainCount 域名统计
|
||||
type DomainCount struct {
|
||||
Domain string `json:"domain"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
// ClientCount 客户端统计
|
||||
type ClientCount struct {
|
||||
IP string `json:"ip"`
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
// QueryLogger 日志记录器接口
|
||||
type QueryLogger interface {
|
||||
// Log 记录日志(异步、非阻塞)
|
||||
Log(log QueryLog) error
|
||||
|
||||
// QueryLogs 查询日志(支持分页、过滤、排序)
|
||||
QueryLogs(filter LogFilter, page PageParams) ([]QueryLog, int64, error)
|
||||
|
||||
// GetStats 获取统计信息
|
||||
GetStats(timeRange TimeRange) (*LogStats, error)
|
||||
|
||||
// Close 关闭日志记录器
|
||||
Close() error
|
||||
}
|
||||
|
||||
// TimeRange 时间范围
|
||||
type TimeRange struct {
|
||||
StartTime time.Time
|
||||
EndTime time.Time
|
||||
}
|
||||
Reference in New Issue
Block a user