diff options
| -rw-r--r-- | web/html/xui/form/client.html | 4 | ||||
| -rw-r--r-- | web/html/xui/inbounds.html | 2 | ||||
| -rw-r--r-- | web/service/setting.go | 42 |
3 files changed, 35 insertions, 13 deletions
diff --git a/web/html/xui/form/client.html b/web/html/xui/form/client.html index 63cb8aef..d147fbf7 100644 --- a/web/html/xui/form/client.html +++ b/web/html/xui/form/client.html @@ -63,7 +63,7 @@ </template> <a-input v-model.trim="client.tgId"></a-input> </a-form-item> - <a-form-item> + <a-form-item v-if="app.ipLimitEnable"> <template slot="label"> <a-tooltip> <template slot="title"> @@ -75,7 +75,7 @@ </template> <a-input-number v-model="client.limitIp" min="0"></a-input-number> </a-form-item> - <a-form-item v-if="client.email && client.limitIp > 0 && isEdit"> + <a-form-item v-if="app.ipLimitEnable && client.email && isEdit"> <template slot="label"> <a-tooltip> <template slot="title"> diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html index aeab3db3..a58372ef 100644 --- a/web/html/xui/inbounds.html +++ b/web/html/xui/inbounds.html @@ -571,6 +571,7 @@ datepicker: 'gregorian', tgBotEnable: false, showAlert: false, + ipLimitEnable: false, pageSize: 0, isMobile: window.innerWidth <= 768, }, @@ -618,6 +619,7 @@ this.pageSize = pageSize; this.remarkModel = remarkModel; this.datepicker = datepicker; + this.ipLimitEnable = ipLimitEnable; } }, setInbounds(dbInbounds) { diff --git a/web/service/setting.go b/web/service/setting.go index 10147dfc..4a293dc0 100644 --- a/web/service/setting.go +++ b/web/service/setting.go @@ -459,6 +459,25 @@ func (s *SettingService) SetWarp(data string) error { return s.setString("warp", data) } +func (s *SettingService) GetIpLimitEnable() (bool, error) { + templateConfig, err := s.GetXrayConfigTemplate() + if err != nil { + return false, err + } + + var xrayConfig map[string]interface{} + err = json.Unmarshal([]byte(templateConfig), &xrayConfig) + if err != nil { + return false, err + } + if logConfig, ok := xrayConfig["log"].(map[string]interface{}); ok { + if accessLogPath, ok := logConfig["access"].(string); ok { + return accessLogPath == "./access.log", nil + } + } + return false, nil +} + func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting) error { if err := allSetting.CheckValid(); err != nil { return err @@ -492,17 +511,18 @@ func (s *SettingService) GetDefaultXrayConfig() (interface{}, error) { func (s *SettingService) GetDefaultSettings(host string) (interface{}, error) { type settingFunc func() (interface{}, error) settings := map[string]settingFunc{ - "expireDiff": func() (interface{}, error) { return s.GetExpireDiff() }, - "trafficDiff": func() (interface{}, error) { return s.GetTrafficDiff() }, - "pageSize": func() (interface{}, error) { return s.GetPageSize() }, - "defaultCert": func() (interface{}, error) { return s.GetCertFile() }, - "defaultKey": func() (interface{}, error) { return s.GetKeyFile() }, - "tgBotEnable": func() (interface{}, error) { return s.GetTgbotenabled() }, - "subEnable": func() (interface{}, error) { return s.GetSubEnable() }, - "subURI": func() (interface{}, error) { return s.GetSubURI() }, - "subJsonURI": func() (interface{}, error) { return s.GetSubJsonURI() }, - "remarkModel": func() (interface{}, error) { return s.GetRemarkModel() }, - "datepicker": func() (interface{}, error) { return s.GetDatepicker() }, + "expireDiff": func() (interface{}, error) { return s.GetExpireDiff() }, + "trafficDiff": func() (interface{}, error) { return s.GetTrafficDiff() }, + "pageSize": func() (interface{}, error) { return s.GetPageSize() }, + "defaultCert": func() (interface{}, error) { return s.GetCertFile() }, + "defaultKey": func() (interface{}, error) { return s.GetKeyFile() }, + "tgBotEnable": func() (interface{}, error) { return s.GetTgbotenabled() }, + "subEnable": func() (interface{}, error) { return s.GetSubEnable() }, + "subURI": func() (interface{}, error) { return s.GetSubURI() }, + "subJsonURI": func() (interface{}, error) { return s.GetSubJsonURI() }, + "remarkModel": func() (interface{}, error) { return s.GetRemarkModel() }, + "datepicker": func() (interface{}, error) { return s.GetDatepicker() }, + "ipLimitEnable": func() (interface{}, error) { return s.GetIpLimitEnable() }, } result := make(map[string]interface{}) |
