Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2026-05-05 00:19:25 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2026-05-05 00:19:25 +0300
commit6099a07ff0a3f619ace3c7645ee76dce943a97e0 (patch)
tree10919163dd9a978908ed5fb16baa6a3a81cf32bf /web/service/setting.go
parente9806832ec222e87052c3b8263f392bf5a41974e (diff)
feat: add configurable auto-restart on client auto-disable
Add a configurable option to restart Xray when clients are auto-disabled and persist disable actions. Changes include: - New setting restartXrayOnClientDisable (default true), getters/setters in SettingService, UI toggle in general settings, and translations for multiple locales. - AddTraffic signature updated to return a third bool (clientsDisabled). disableInvalidClients now calls Xray API to remove users, marks client_traffics.enable=false, updates inbound.Settings JSON so clients appear disabled in stored settings, and returns appropriate counts/errors. - XrayTrafficJob now checks the clientsDisabled flag and restarts Xray when the setting is enabled (with fallback to mark Xray as needing restart on failure). - XrayService.GetXrayConfig call adjusted to ignore AddTraffic returns. - Subscription generation (subService/subJson/subClash) no longer filters clients by their enable flag when matching subId. - Minor fixes: check_client_ip_job now checks scanner.Err and improved API error handling/logging. These changes ensure auto-disabled clients are propagated to Xray and the stored inbound settings, and provide an option to restart Xray automatically after auto-disable events.
Diffstat (limited to 'web/service/setting.go')
-rw-r--r--web/service/setting.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/web/service/setting.go b/web/service/setting.go
index 560dce3a..aca5f9a4 100644
--- a/web/service/setting.go
+++ b/web/service/setting.go
@@ -83,6 +83,7 @@ var defaultValueMap = map[string]string{
"nord": "",
"externalTrafficInformEnable": "false",
"externalTrafficInformURI": "",
+ "restartXrayOnClientDisable": "true",
"xrayOutboundTestUrl": "https://www.google.com/generate_204",
// LDAP defaults
@@ -628,6 +629,14 @@ func (s *SettingService) SetExternalTrafficInformURI(InformURI string) error {
return s.setString("externalTrafficInformURI", InformURI)
}
+func (s *SettingService) GetRestartXrayOnClientDisable() (bool, error) {
+ return s.getBool("restartXrayOnClientDisable")
+}
+
+func (s *SettingService) SetRestartXrayOnClientDisable(value bool) error {
+ return s.setBool("restartXrayOnClientDisable", value)
+}
+
func (s *SettingService) GetIpLimitEnable() (bool, error) {
accessLogPath, err := xray.GetAccessLogPath()
if err != nil {