Files
EdgeCommon/pkg/systemconfigs/user_ui_config.go
GoEdgeLab 2f3981704e v1.4.1
2024-07-27 13:29:26 +08:00

148 lines
4.6 KiB
Go

package systemconfigs
import (
"time"
"github.com/iwind/TeaGo/types"
timeutil "github.com/iwind/TeaGo/utils/time"
)
// UserUIConfig 用户界面相关配置
type UserUIConfig struct {
ProductName string `json:"productName"` // 产品名
UserSystemName string `json:"userSystemName"` // 管理员系统名称
ShowPageFooter bool `json:"showPageFooter"` // 是否显示页脚
PageFooterHTML string `json:"pageFooterHTML"` // 页脚HTML
ShowVersion bool `json:"showVersion"` // 是否显示版本号
Version string `json:"version"` // 显示的版本号
ShowFinance bool `json:"showFinance"` // 是否显示财务相关信息
FaviconFileId int64 `json:"faviconFileId"` // Favicon文件ID
LogoFileId int64 `json:"logoFileId"` // 控制面板Logo文件ID
TimeZone string `json:"timeZone"` // 时区
DNSResolver struct {
Type string `json:"type"` // 类型,参考 DNSResolverType*
} `json:"dnsResolver"` // DNS解析设置
ClientIPHeaderNames string `json:"clientIPHeaderNames"` // 客户端IP获取报头名称列表
Server struct {
CheckCNAME bool `json:"checkCNAME"` // 是否检查CNAME
} `json:"server"` // 服务相关设置
BandwidthUnit BandwidthUnit `json:"bandwidthUnit"` // 带宽单位
ShowTrafficCharts bool `json:"showTrafficCharts"` // 是否显示流量相关图表和数据
ShowCacheInfoInTrafficCharts bool `json:"showCacheInfoInTrafficCharts"` // 在流量图中显示缓存相关信息
ShowBandwidthCharts bool `json:"showBandwidthCharts"` // 是否显示带宽相关图表和数据
TrafficStats struct {
BandwidthPercentile int32 `json:"bandwidthPercentile"` // 带宽百分位
DefaultBandwidthDateRange string `json:"defaultBandwidthDateRange"` // 默认带宽周期
BandwidthAlgo BandwidthAlgo `json:"bandwidthAlgo"` // 带宽算法
} `json:"trafficStats"` // 流量统计相关设置
Portal struct {
IsOn bool `json:"isOn"` // 是否启用
LogoFileId int64 `json:"logoFileId"` // Logo文件ID
} `json:"portal"` // 门户页面相关设置
Theme ThemeConfig `yaml:"theme" json:"theme"` // 风格模板
}
func NewUserUIConfig() *UserUIConfig {
var config = &UserUIConfig{
ProductName: "GoEdge",
UserSystemName: "GoEdge用户系统",
ShowPageFooter: false,
ShowVersion: true,
ShowFinance: true,
BandwidthUnit: BandwidthUnitBit,
ShowBandwidthCharts: true,
ShowTrafficCharts: true,
TimeZone: "Asia/Shanghai",
}
// DNS解析设置
config.DNSResolver.Type = "default"
// 服务相关
config.Server.CheckCNAME = true
// 流量相关
config.TrafficStats.BandwidthPercentile = 95
config.TrafficStats.DefaultBandwidthDateRange = "latest30days"
return config
}
type BandwidthDateRange struct {
Name string `json:"name"`
Code string `json:"code"`
DayFrom string `json:"dayFrom"`
DayTo string `json:"dayTo"`
}
const DefaultBandwidthDateRangeCode = "latest30days"
const DefaultBandwidthPercentile int32 = 95
func FindAllBandwidthDateRanges() []*BandwidthDateRange {
var dayInWeek = types.Int(timeutil.Format("w"))
if dayInWeek == 0 {
dayInWeek = 7
}
return []*BandwidthDateRange{
{
Name: "今天",
Code: "today",
DayFrom: timeutil.Format("Y-m-d"),
DayTo: timeutil.Format("Y-m-d"),
},
{
Name: "昨天",
Code: "yesterday",
DayFrom: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -1)),
DayTo: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -1)),
},
{
Name: "近7天",
Code: "latest7days",
DayFrom: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -6)),
DayTo: timeutil.Format("Y-m-d"),
},
{
Name: "上周",
Code: "lastWeek",
DayFrom: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -dayInWeek-6)),
DayTo: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -dayInWeek)),
},
{
Name: "近30天",
Code: "latest30days",
DayFrom: timeutil.Format("Y-m-d", time.Now().AddDate(0, 0, -29)),
DayTo: timeutil.Format("Y-m-d"),
},
{
Name: "当月",
Code: "currentMonth",
DayFrom: timeutil.Format("Y-m-01"),
DayTo: timeutil.Format("Y-m-d"),
},
{
Name: "上月",
Code: "lastMonth",
DayFrom: timeutil.Format("Y-m-01", time.Now().AddDate(0, -1, 0)),
DayTo: timeutil.Format("Y-m-t", time.Now().AddDate(0, -1, 0)),
},
}
}
func FindBandwidthDateRange(code string) *BandwidthDateRange {
for _, r := range FindAllBandwidthDateRanges() {
if r.Code == code {
return r
}
}
return nil
}