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
path: root/web
diff options
context:
space:
mode:
authormhsanaei <ho3ein.sanaei@gmail.com>2024-09-02 11:26:19 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2024-09-02 11:26:19 +0300
commit2dc59a601cdd8167a597a23ac60bc3ffd793c59d (patch)
tree2aa40c86329467765d97e818b1305769bed31868 /web
parent4ad04e2032a85cc039c6f89cc610dcfc264ffa5f (diff)
fix restart after enabling user
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
Diffstat (limited to 'web')
-rw-r--r--web/service/inbound.go55
1 files changed, 34 insertions, 21 deletions
diff --git a/web/service/inbound.go b/web/service/inbound.go
index baf7616f..fa0ecf31 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -534,11 +534,13 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
interfaceClients := settings["clients"].([]interface{})
var newClients []interface{}
+ needApiDel := false
for _, client := range interfaceClients {
c := client.(map[string]interface{})
c_id := c[client_key].(string)
if c_id == clientId {
- email = c["email"].(string)
+ email, _ = c["email"].(string)
+ needApiDel, _ = c["enable"].(bool)
} else {
newClients = append(newClients, client)
}
@@ -557,11 +559,6 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
oldInbound.Settings = string(newSettings)
db := database.GetDB()
- err = s.DelClientStat(db, email)
- if err != nil {
- logger.Error("Delete stats Data Error")
- return false, err
- }
err = s.DelClientIPs(db, email)
if err != nil {
@@ -569,17 +566,31 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
return false, err
}
needRestart := false
+
if len(email) > 0 {
- s.xrayApi.Init(p.GetAPIPort())
- err1 := s.xrayApi.RemoveUser(oldInbound.Tag, email)
- if err1 == nil {
- logger.Debug("Client deleted by api:", email)
- needRestart = false
- } else {
- logger.Debug("Unable to del client by api:", err1)
- needRestart = true
+ notDepleted := true
+ err = db.Model(xray.ClientTraffic{}).Select("enable").Where("email = ?", email).First(&notDepleted).Error
+ if err != nil {
+ logger.Error("Get stats error")
+ return false, err
+ }
+ err = s.DelClientStat(db, email)
+ if err != nil {
+ logger.Error("Delete stats Data Error")
+ return false, err
+ }
+ if needApiDel && notDepleted {
+ s.xrayApi.Init(p.GetAPIPort())
+ err1 := s.xrayApi.RemoveUser(oldInbound.Tag, email)
+ if err1 == nil {
+ logger.Debug("Client deleted by api:", email)
+ needRestart = false
+ } else {
+ logger.Debug("Unable to del client by api:", err1)
+ needRestart = true
+ }
+ s.xrayApi.Close()
}
- s.xrayApi.Close()
}
return needRestart, db.Save(oldInbound).Error
}
@@ -697,12 +708,14 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
needRestart := false
if len(oldEmail) > 0 {
s.xrayApi.Init(p.GetAPIPort())
- err1 := s.xrayApi.RemoveUser(oldInbound.Tag, oldEmail)
- if err1 == nil {
- logger.Debug("Old client deleted by api:", clients[0].Email)
- } else {
- logger.Debug("Error in deleting client by api:", err1)
- needRestart = true
+ if oldClients[clientIndex].Enable {
+ err1 := s.xrayApi.RemoveUser(oldInbound.Tag, oldEmail)
+ if err1 == nil {
+ logger.Debug("Old client deleted by api:", clients[0].Email)
+ } else {
+ logger.Debug("Error in deleting client by api:", err1)
+ needRestart = true
+ }
}
if clients[0].Enable {
cipher := ""