61 lines
1.5 KiB
Go
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
|
|
}
|