dns clickhouse改造

This commit is contained in:
robin
2026-02-10 23:43:05 +08:00
parent 1bb8140a41
commit c28317ee07
13 changed files with 280 additions and 59 deletions

View File

@@ -4,6 +4,7 @@ package services
import (
"context"
"encoding/json"
"errors"
"github.com/TeaOSLab/EdgeAPI/internal/accesslogs"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
@@ -15,18 +16,23 @@ type HTTPAccessLogPolicyService struct {
BaseService
}
func (this *HTTPAccessLogPolicyService) normalizeStorageTypeAndTargets(policyType string, writeTargetsJSON []byte, disableDefaultDB bool) (string, []byte) {
_ = writeTargetsJSON
_ = disableDefaultDB
// 兼容旧前端/缓存可能传来的历史类型编码
switch policyType {
case "clickhouse":
policyType = serverconfigs.AccessLogStorageTypeFileClickhouse
case "mysql_clickhouse":
policyType = serverconfigs.AccessLogStorageTypeFileMySQLClickhouse
func (this *HTTPAccessLogPolicyService) normalizeStorageTypeAndTargets(policyType string, disableDefaultDB bool) (string, []byte, error) {
normalizedType := serverconfigs.NormalizeAccessLogStorageType(policyType)
targets := serverconfigs.BuildWriteTargetsByStorageType(normalizedType, disableDefaultDB)
if targets == nil {
return "", nil, errors.New("invalid access log storage type")
}
return policyType, nil
writeTargetsMap := map[string]bool{
"file": targets.File,
"mysql": targets.MySQL,
"clickhouse": targets.ClickHouse,
}
writeTargetsJSON, err := json.Marshal(writeTargetsMap)
if err != nil {
return "", nil, err
}
return normalizedType, writeTargetsJSON, nil
}
// CountAllHTTPAccessLogPolicies 计算访问日志策略数量
@@ -68,7 +74,7 @@ func (this *HTTPAccessLogPolicyService) ListHTTPAccessLogPolicies(ctx context.Co
IsPublic: policy.IsPublic,
FirewallOnly: policy.FirewallOnly == 1,
DisableDefaultDB: policy.DisableDefaultDB,
WriteTargetsJSON: nil,
WriteTargetsJSON: policy.WriteTargets,
})
}
return &pb.ListHTTPAccessLogPoliciesResponse{HttpAccessLogPolicies: pbPolicies}, nil
@@ -91,7 +97,10 @@ func (this *HTTPAccessLogPolicyService) CreateHTTPAccessLogPolicy(ctx context.Co
}
}
policyType, writeTargetsJSON := this.normalizeStorageTypeAndTargets(req.Type, req.WriteTargetsJSON, req.DisableDefaultDB)
policyType, writeTargetsJSON, err := this.normalizeStorageTypeAndTargets(req.Type, req.DisableDefaultDB)
if err != nil {
return nil, err
}
// 创建
policyId, err := models.SharedHTTPAccessLogPolicyDAO.CreatePolicy(tx, req.Name, policyType, req.OptionsJSON, req.CondsJSON, req.IsPublic, req.FirewallOnly, req.DisableDefaultDB, writeTargetsJSON)
@@ -118,7 +127,10 @@ func (this *HTTPAccessLogPolicyService) UpdateHTTPAccessLogPolicy(ctx context.Co
}
}
policyType, writeTargetsJSON := this.normalizeStorageTypeAndTargets(req.Type, req.WriteTargetsJSON, req.DisableDefaultDB)
policyType, writeTargetsJSON, err := this.normalizeStorageTypeAndTargets(req.Type, req.DisableDefaultDB)
if err != nil {
return nil, err
}
// 保存修改
err = models.SharedHTTPAccessLogPolicyDAO.UpdatePolicy(tx, req.HttpAccessLogPolicyId, req.Name, policyType, req.OptionsJSON, req.CondsJSON, req.IsPublic, req.FirewallOnly, req.DisableDefaultDB, writeTargetsJSON, req.IsOn)
@@ -153,7 +165,7 @@ func (this *HTTPAccessLogPolicyService) FindHTTPAccessLogPolicy(ctx context.Cont
IsPublic: policy.IsPublic,
FirewallOnly: policy.FirewallOnly == 1,
DisableDefaultDB: policy.DisableDefaultDB,
WriteTargetsJSON: nil,
WriteTargetsJSON: policy.WriteTargets,
}}, nil
}