54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package options
|
|
|
|
type AlibabaCloudOptions struct {
|
|
Enable bool `toml:"enable"`
|
|
SLBOptions SLBOptions `toml:"slb"`
|
|
NLBOptions NLBOptions `toml:"nlb"`
|
|
}
|
|
|
|
type SLBOptions struct {
|
|
MaxPort int32 `toml:"max_port"`
|
|
MinPort int32 `toml:"min_port"`
|
|
BlockPorts []int32 `toml:"block_ports"`
|
|
}
|
|
|
|
type NLBOptions struct {
|
|
MaxPort int32 `toml:"max_port"`
|
|
MinPort int32 `toml:"min_port"`
|
|
BlockPorts []int32 `toml:"block_ports"`
|
|
}
|
|
|
|
func (o AlibabaCloudOptions) Valid() bool {
|
|
// SLB valid
|
|
slbOptions := o.SLBOptions
|
|
for _, blockPort := range slbOptions.BlockPorts {
|
|
if blockPort >= slbOptions.MaxPort || blockPort <= slbOptions.MinPort {
|
|
return false
|
|
}
|
|
}
|
|
if int(slbOptions.MaxPort-slbOptions.MinPort)-len(slbOptions.BlockPorts) >= 200 {
|
|
return false
|
|
}
|
|
if slbOptions.MinPort <= 0 {
|
|
return false
|
|
}
|
|
// NLB valid
|
|
nlbOptions := o.NLBOptions
|
|
for _, blockPort := range nlbOptions.BlockPorts {
|
|
if blockPort >= nlbOptions.MaxPort || blockPort <= nlbOptions.MinPort {
|
|
return false
|
|
}
|
|
}
|
|
if int(nlbOptions.MaxPort-nlbOptions.MinPort)-len(nlbOptions.BlockPorts) >= 1000 {
|
|
return false
|
|
}
|
|
if nlbOptions.MinPort <= 0 {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
func (o AlibabaCloudOptions) Enabled() bool {
|
|
return o.Enable
|
|
}
|