Files
new-api-custom/setting/operation_setting/log_setting.go
T

46 lines
1.1 KiB
Go

package operation_setting
import (
"strconv"
"github.com/QuantumNous/new-api/common"
"github.com/QuantumNous/new-api/setting/config"
)
const LogMaxRangeDaysOptionKey = "log_setting.max_range_days"
// LogSetting limits how far regular users can reach into usage logs.
type LogSetting struct {
// UserExportEnabled lets regular users export their own usage logs.
// Administrators can always export.
UserExportEnabled bool `json:"user_export_enabled"`
// MaxRangeDays is the longest time range a user can search in their logs
// and dashboard, and the longest range any export can cover.
MaxRangeDays int `json:"max_range_days"`
}
var logSetting = LogSetting{
UserExportEnabled: true,
MaxRangeDays: 365,
}
func init() {
config.GlobalConfig.Register("log_setting", &logSetting)
}
func GetLogSetting() *LogSetting {
return &logSetting
}
func (s *LogSetting) MaxRangeSeconds() int64 {
return int64(max(s.MaxRangeDays, 1)) * 24 * 60 * 60
}
func ValidateLogMaxRangeDays(value string) error {
days, err := strconv.Atoi(value)
if err != nil || days < 1 {
return common.NewMessage("The longest log time range must be at least 1 day")
}
return nil
}