Files
waf-platform/EdgeCommon/pkg/dnsconfigs/ns_answer_config.go
2026-02-04 20:27:13 +08:00

61 lines
1.5 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package dnsconfigs
import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
type NSAnswerMode = string
const (
NSAnswerModeRandom NSAnswerMode = "random"
NSAnswerModeRoundRobin NSAnswerMode = "roundRobin"
)
const NSAnswerDefaultSize = 5
type NSAnswerConfig struct {
Mode NSAnswerMode `yaml:"mode" json:"mode"` // 记录回复模式
MaxSize int16 `yaml:"maxSize" json:"maxSize"` // 记录回复最大数量
}
func (this *NSAnswerConfig) IsSame(config2 *NSAnswerConfig) bool {
if config2 == nil {
return false
}
return this.Mode == config2.Mode &&
this.MaxSize == config2.MaxSize
}
func DefaultNSAnswerConfig() *NSAnswerConfig {
return &NSAnswerConfig{
Mode: NSAnswerModeRandom,
MaxSize: NSAnswerDefaultSize,
}
}
func FindAllNSAnswerModes() []*shared.Definition {
return []*shared.Definition{
{
Name: "随机",
Code: NSAnswerModeRandom,
Description: "有多个查询结果时,随机选取若干结果返回。",
},
{
Name: "轮询",
Code: NSAnswerModeRoundRobin,
Description: "有多个查询结果时,按顺序每次返回其中一个结果;在此模式下,记录权重将不会生效。",
},
}
}
func IsValidNSAnswerMode(mode string) bool {
for _, m := range FindAllNSAnswerModes() {
if m.Code == mode {
return true
}
}
return false
}