Initial commit (code only without large binaries)
This commit is contained in:
60
EdgeCommon/pkg/dnsconfigs/ns_answer_config.go
Normal file
60
EdgeCommon/pkg/dnsconfigs/ns_answer_config.go
Normal file
@@ -0,0 +1,60 @@
|
||||
// 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
|
||||
}
|
||||
Reference in New Issue
Block a user