1.4.5.2
This commit is contained in:
146
EdgeCommon/pkg/systemconfigs/user_ui_config.go
Normal file
146
EdgeCommon/pkg/systemconfigs/user_ui_config.go
Normal file
@@ -0,0 +1,146 @@
|
||||
package systemconfigs
|
||||
|
||||
import (
|
||||
"github.com/iwind/TeaGo/types"
|
||||
timeutil "github.com/iwind/TeaGo/utils/time"
|
||||
"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
|
||||
}
|
||||
Reference in New Issue
Block a user