mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-07 13:44:24 +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"`
|
BackupFrequency string `json:"backupFrequency" form:"backupFrequency"`
|
||||||
BackupHour int `json:"backupHour" form:"backupHour"`
|
BackupHour int `json:"backupHour" form:"backupHour"`
|
||||||
BackupMaxCount int `json:"backupMaxCount" form:"backupMaxCount"`
|
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.
|
// 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",
|
"backupFrequency": "daily",
|
||||||
"backupHour": "3",
|
"backupHour": "3",
|
||||||
"backupMaxCount": "10",
|
"backupMaxCount": "10",
|
||||||
|
|
||||||
|
// Geofile update schedule settings
|
||||||
|
"geofileUpdateEnabled": "false",
|
||||||
|
"geofileUpdateFrequency": "daily",
|
||||||
|
"geofileUpdateHour": "4",
|
||||||
}
|
}
|
||||||
|
|
||||||
// settingGroups defines the nested JSON structure for on-disk settings.
|
// settingGroups defines the nested JSON structure for on-disk settings.
|
||||||
|
|
@ -259,6 +264,11 @@ var settingGroups = map[string]map[string]string{
|
||||||
"hour": "backupHour",
|
"hour": "backupHour",
|
||||||
"maxCount": "backupMaxCount",
|
"maxCount": "backupMaxCount",
|
||||||
},
|
},
|
||||||
|
"geofileUpdate": {
|
||||||
|
"enabled": "geofileUpdateEnabled",
|
||||||
|
"frequency": "geofileUpdateFrequency",
|
||||||
|
"hour": "geofileUpdateHour",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var legacySettingGroups = map[string]map[string]string{
|
var legacySettingGroups = map[string]map[string]string{
|
||||||
|
|
@ -1166,6 +1176,18 @@ func (s *SettingService) GetBackupMaxCount() (int, error) {
|
||||||
return s.getInt("backupMaxCount")
|
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 {
|
func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting, presentKeys map[string]struct{}) error {
|
||||||
if err := allSetting.CheckValid(); err != nil {
|
if err := allSetting.CheckValid(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -1233,22 +1255,25 @@ func extractHostname(host string) string {
|
||||||
func (s *SettingService) GetDefaultSettings(host string) (any, error) {
|
func (s *SettingService) GetDefaultSettings(host string) (any, error) {
|
||||||
type settingFunc func() (any, error)
|
type settingFunc func() (any, error)
|
||||||
settings := map[string]settingFunc{
|
settings := map[string]settingFunc{
|
||||||
"expireDiff": func() (any, error) { return s.GetExpireDiff() },
|
"expireDiff": func() (any, error) { return s.GetExpireDiff() },
|
||||||
"trafficDiff": func() (any, error) { return s.GetTrafficDiff() },
|
"trafficDiff": func() (any, error) { return s.GetTrafficDiff() },
|
||||||
"pageSize": func() (any, error) { return s.GetPageSize() },
|
"pageSize": func() (any, error) { return s.GetPageSize() },
|
||||||
"defaultCert": func() (any, error) { return s.GetCertFile() },
|
"defaultCert": func() (any, error) { return s.GetCertFile() },
|
||||||
"defaultKey": func() (any, error) { return s.GetKeyFile() },
|
"defaultKey": func() (any, error) { return s.GetKeyFile() },
|
||||||
"tgBotEnable": func() (any, error) { return s.GetTgbotEnabled() },
|
"tgBotEnable": func() (any, error) { return s.GetTgbotEnabled() },
|
||||||
"subEnable": func() (any, error) { return s.GetSubEnable() },
|
"subEnable": func() (any, error) { return s.GetSubEnable() },
|
||||||
"subJsonEnable": func() (any, error) { return s.GetSubJsonEnable() },
|
"subJsonEnable": func() (any, error) { return s.GetSubJsonEnable() },
|
||||||
"subClashEnable": func() (any, error) { return s.GetSubClashEnable() },
|
"subClashEnable": func() (any, error) { return s.GetSubClashEnable() },
|
||||||
"subTitle": func() (any, error) { return s.GetSubTitle() },
|
"subTitle": func() (any, error) { return s.GetSubTitle() },
|
||||||
"subURI": func() (any, error) { return s.GetSubURI() },
|
"subURI": func() (any, error) { return s.GetSubURI() },
|
||||||
"subJsonURI": func() (any, error) { return s.GetSubJsonURI() },
|
"subJsonURI": func() (any, error) { return s.GetSubJsonURI() },
|
||||||
"subClashURI": func() (any, error) { return s.GetSubClashURI() },
|
"subClashURI": func() (any, error) { return s.GetSubClashURI() },
|
||||||
"remarkModel": func() (any, error) { return s.GetRemarkModel() },
|
"remarkModel": func() (any, error) { return s.GetRemarkModel() },
|
||||||
"datepicker": func() (any, error) { return s.GetDatepicker() },
|
"datepicker": func() (any, error) { return s.GetDatepicker() },
|
||||||
"ipLimitEnable": func() (any, error) { return s.GetIpLimitEnable() },
|
"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)
|
result := make(map[string]any)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue