mirror of
http://bgp.hk.skcks.cn:10088/github.com/oneclickvirt/ecs
synced 2026-04-20 21:01:12 +08:00
267 lines
5.9 KiB
Go
267 lines
5.9 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/oneclickvirt/ecs/internal/params"
|
|
)
|
|
|
|
// Config 配置接口,导出用于外部调用
|
|
type Config = params.Config
|
|
|
|
// NewConfig 创建默认配置
|
|
// version: 版本号字符串
|
|
func NewConfig(version string) *Config {
|
|
return params.NewConfig(version)
|
|
}
|
|
|
|
// NewDefaultConfig 创建默认配置(使用默认版本号)
|
|
func NewDefaultConfig() *Config {
|
|
return params.NewConfig("v0.1.114")
|
|
}
|
|
|
|
// ConfigOption 配置选项函数类型
|
|
type ConfigOption func(*Config)
|
|
|
|
// WithLanguage 设置语言
|
|
func WithLanguage(lang string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Language = lang
|
|
}
|
|
}
|
|
|
|
// WithCpuTestMethod 设置CPU测试方法
|
|
// method: "sysbench" 或 "geekbench"
|
|
func WithCpuTestMethod(method string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.CpuTestMethod = method
|
|
}
|
|
}
|
|
|
|
// WithCpuTestThreadMode 设置CPU测试线程模式
|
|
// mode: "single" 或 "multi"
|
|
func WithCpuTestThreadMode(mode string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.CpuTestThreadMode = mode
|
|
}
|
|
}
|
|
|
|
// WithMemoryTestMethod 设置内存测试方法
|
|
// method: "stream", "sysbench", "dd"
|
|
func WithMemoryTestMethod(method string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.MemoryTestMethod = method
|
|
}
|
|
}
|
|
|
|
// WithDiskTestMethod 设置硬盘测试方法
|
|
// method: "fio" 或 "dd"
|
|
func WithDiskTestMethod(method string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.DiskTestMethod = method
|
|
}
|
|
}
|
|
|
|
// WithDiskTestPath 设置硬盘测试路径
|
|
func WithDiskTestPath(path string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.DiskTestPath = path
|
|
}
|
|
}
|
|
|
|
// WithDiskMultiCheck 设置是否进行硬盘多路径检测
|
|
func WithDiskMultiCheck(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.DiskMultiCheck = enable
|
|
}
|
|
}
|
|
|
|
// WithSpeedTestNum 设置测速节点数量
|
|
func WithSpeedTestNum(num int) ConfigOption {
|
|
return func(c *Config) {
|
|
c.SpNum = num
|
|
}
|
|
}
|
|
|
|
// WithWidth 设置输出宽度
|
|
func WithWidth(width int) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Width = width
|
|
}
|
|
}
|
|
|
|
// WithFilePath 设置输出文件路径
|
|
func WithFilePath(path string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.FilePath = path
|
|
}
|
|
}
|
|
|
|
// WithEnableUpload 设置是否启用上传
|
|
func WithEnableUpload(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.EnableUpload = enable
|
|
}
|
|
}
|
|
|
|
// WithAnalyzeResult 设置是否启用测试后结果总结分析
|
|
func WithAnalyzeResult(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.AnalyzeResult = enable
|
|
}
|
|
}
|
|
|
|
// WithEnableLogger 设置是否启用日志
|
|
func WithEnableLogger(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.EnableLogger = enable
|
|
}
|
|
}
|
|
|
|
// WithBasicTest 设置是否执行基础信息测试
|
|
func WithBasicTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.BasicStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithCpuTest 设置是否执行CPU测试
|
|
func WithCpuTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.CpuTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithMemoryTest 设置是否执行内存测试
|
|
func WithMemoryTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.MemoryTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithDiskTest 设置是否执行硬盘测试
|
|
func WithDiskTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.DiskTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithUnlockTest 设置是否执行流媒体解锁测试
|
|
func WithUnlockTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.UtTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithSecurityTest 设置是否执行IP质量测试
|
|
func WithSecurityTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.SecurityTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithEmailTest 设置是否执行邮件端口测试
|
|
func WithEmailTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.EmailTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithBacktraceTest 设置是否执行回程路由测试
|
|
func WithBacktraceTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.BacktraceStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithNt3Test 设置是否执行三网路由测试
|
|
func WithNt3Test(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Nt3Status = enable
|
|
}
|
|
}
|
|
|
|
// WithSpeedTest 设置是否执行测速测试
|
|
func WithSpeedTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.SpeedTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithPingTest 设置是否执行PING测试
|
|
func WithPingTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.PingTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithTgdcTest 设置是否执行Telegram DC测试
|
|
func WithTgdcTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.TgdcTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithWebTest 设置是否执行网站测试
|
|
func WithWebTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.WebTestStatus = enable
|
|
}
|
|
}
|
|
|
|
// WithNt3CheckType 设置三网路由检测类型
|
|
// checkType: "ipv4", "ipv6" 或 "auto"
|
|
func WithNt3CheckType(checkType string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Nt3CheckType = checkType
|
|
}
|
|
}
|
|
|
|
// WithNt3Location 设置三网路由检测位置
|
|
func WithNt3Location(location string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Nt3Location = location
|
|
}
|
|
}
|
|
|
|
// WithAutoChangeDiskMethod 设置是否自动切换硬盘测试方法
|
|
func WithAutoChangeDiskMethod(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.AutoChangeDiskMethod = enable
|
|
}
|
|
}
|
|
|
|
// WithOnlyChinaTest 设置是否只进行国内测试
|
|
func WithOnlyChinaTest(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.OnlyChinaTest = enable
|
|
}
|
|
}
|
|
|
|
// WithMenuMode 设置是否启用菜单模式
|
|
func WithMenuMode(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.MenuMode = enable
|
|
}
|
|
}
|
|
|
|
// WithOnlyIpInfoCheck 设置是否只进行IP信息检测
|
|
func WithOnlyIpInfoCheck(enable bool) ConfigOption {
|
|
return func(c *Config) {
|
|
c.OnlyIpInfoCheck = enable
|
|
}
|
|
}
|
|
|
|
// WithChoice 设置菜单选择
|
|
func WithChoice(choice string) ConfigOption {
|
|
return func(c *Config) {
|
|
c.Choice = choice
|
|
}
|
|
}
|
|
|
|
// ApplyOptions 应用配置选项
|
|
func ApplyOptions(config *Config, options ...ConfigOption) *Config {
|
|
for _, opt := range options {
|
|
opt(config)
|
|
}
|
|
return config
|
|
}
|