mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 21:24:10 +00:00
feat: add geofile update schedule settings infrastructure
This commit is contained in:
parent
b930ec71f9
commit
9bb4cc8d7f
2 changed files with 46 additions and 16 deletions
|
|
@ -127,6 +127,11 @@ type AllSetting struct {
|
|||
BackupFrequency string `json:"backupFrequency" form:"backupFrequency"`
|
||||
BackupHour int `json:"backupHour" form:"backupHour"`
|
||||
BackupMaxCount int `json:"backupMaxCount" form:"backupMaxCount"`
|
||||
|
||||
// Geofile update schedule settings
|
||||
GeofileUpdateEnabled bool `json:"geofileUpdateEnabled" form:"geofileUpdateEnabled"`
|
||||
GeofileUpdateFrequency string `json:"geofileUpdateFrequency" form:"geofileUpdateFrequency"`
|
||||
GeofileUpdateHour int `json:"geofileUpdateHour" form:"geofileUpdateHour"`
|
||||
}
|
||||
|
||||
// CheckValid validates all settings in the AllSetting struct, checking IP addresses, ports, SSL certificates, and other configuration values.
|
||||
|
|
|
|||
|
|
@ -133,6 +133,11 @@ var defaultValueMap = map[string]string{
|
|||
"backupFrequency": "daily",
|
||||
"backupHour": "3",
|
||||
"backupMaxCount": "10",
|
||||
|
||||
// Geofile update schedule settings
|
||||
"geofileUpdateEnabled": "false",
|
||||
"geofileUpdateFrequency": "daily",
|
||||
"geofileUpdateHour": "4",
|
||||
}
|
||||
|
||||
// settingGroups defines the nested JSON structure for on-disk settings.
|
||||
|
|
@ -259,6 +264,11 @@ var settingGroups = map[string]map[string]string{
|
|||
"hour": "backupHour",
|
||||
"maxCount": "backupMaxCount",
|
||||
},
|
||||
"geofileUpdate": {
|
||||
"enabled": "geofileUpdateEnabled",
|
||||
"frequency": "geofileUpdateFrequency",
|
||||
"hour": "geofileUpdateHour",
|
||||
},
|
||||
}
|
||||
|
||||
var legacySettingGroups = map[string]map[string]string{
|
||||
|
|
@ -1166,6 +1176,18 @@ func (s *SettingService) GetBackupMaxCount() (int, error) {
|
|||
return s.getInt("backupMaxCount")
|
||||
}
|
||||
|
||||
func (s *SettingService) GetGeofileUpdateEnabled() (bool, error) {
|
||||
return s.getBool("geofileUpdateEnabled")
|
||||
}
|
||||
|
||||
func (s *SettingService) GetGeofileUpdateFrequency() (string, error) {
|
||||
return s.getString("geofileUpdateFrequency")
|
||||
}
|
||||
|
||||
func (s *SettingService) GetGeofileUpdateHour() (int, error) {
|
||||
return s.getInt("geofileUpdateHour")
|
||||
}
|
||||
|
||||
func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting, presentKeys map[string]struct{}) error {
|
||||
if err := allSetting.CheckValid(); err != nil {
|
||||
return err
|
||||
|
|
@ -1233,22 +1255,25 @@ func extractHostname(host string) string {
|
|||
func (s *SettingService) GetDefaultSettings(host string) (any, error) {
|
||||
type settingFunc func() (any, error)
|
||||
settings := map[string]settingFunc{
|
||||
"expireDiff": func() (any, error) { return s.GetExpireDiff() },
|
||||
"trafficDiff": func() (any, error) { return s.GetTrafficDiff() },
|
||||
"pageSize": func() (any, error) { return s.GetPageSize() },
|
||||
"defaultCert": func() (any, error) { return s.GetCertFile() },
|
||||
"defaultKey": func() (any, error) { return s.GetKeyFile() },
|
||||
"tgBotEnable": func() (any, error) { return s.GetTgbotEnabled() },
|
||||
"subEnable": func() (any, error) { return s.GetSubEnable() },
|
||||
"subJsonEnable": func() (any, error) { return s.GetSubJsonEnable() },
|
||||
"subClashEnable": func() (any, error) { return s.GetSubClashEnable() },
|
||||
"subTitle": func() (any, error) { return s.GetSubTitle() },
|
||||
"subURI": func() (any, error) { return s.GetSubURI() },
|
||||
"subJsonURI": func() (any, error) { return s.GetSubJsonURI() },
|
||||
"subClashURI": func() (any, error) { return s.GetSubClashURI() },
|
||||
"remarkModel": func() (any, error) { return s.GetRemarkModel() },
|
||||
"datepicker": func() (any, error) { return s.GetDatepicker() },
|
||||
"ipLimitEnable": func() (any, error) { return s.GetIpLimitEnable() },
|
||||
"expireDiff": func() (any, error) { return s.GetExpireDiff() },
|
||||
"trafficDiff": func() (any, error) { return s.GetTrafficDiff() },
|
||||
"pageSize": func() (any, error) { return s.GetPageSize() },
|
||||
"defaultCert": func() (any, error) { return s.GetCertFile() },
|
||||
"defaultKey": func() (any, error) { return s.GetKeyFile() },
|
||||
"tgBotEnable": func() (any, error) { return s.GetTgbotEnabled() },
|
||||
"subEnable": func() (any, error) { return s.GetSubEnable() },
|
||||
"subJsonEnable": func() (any, error) { return s.GetSubJsonEnable() },
|
||||
"subClashEnable": func() (any, error) { return s.GetSubClashEnable() },
|
||||
"subTitle": func() (any, error) { return s.GetSubTitle() },
|
||||
"subURI": func() (any, error) { return s.GetSubURI() },
|
||||
"subJsonURI": func() (any, error) { return s.GetSubJsonURI() },
|
||||
"subClashURI": func() (any, error) { return s.GetSubClashURI() },
|
||||
"remarkModel": func() (any, error) { return s.GetRemarkModel() },
|
||||
"datepicker": func() (any, error) { return s.GetDatepicker() },
|
||||
"ipLimitEnable": func() (any, error) { return s.GetIpLimitEnable() },
|
||||
"geofileUpdateEnabled": func() (any, error) { return s.GetGeofileUpdateEnabled() },
|
||||
"geofileUpdateFrequency": func() (any, error) { return s.GetGeofileUpdateFrequency() },
|
||||
"geofileUpdateHour": func() (any, error) { return s.GetGeofileUpdateHour() },
|
||||
}
|
||||
|
||||
result := make(map[string]any)
|
||||
|
|
|
|||
Loading…
Reference in a new issue