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:
authorAlireza Ahmadi <alireza.ahmadi@tzconnect.com>2023-03-17 20:51:43 +0300
committerAlireza Ahmadi <alireza.ahmadi@tzconnect.com>2023-03-17 21:02:56 +0300
commitbaaa814a519e9867536811529b490af059d55fbb (patch)
treebf31bc1c69b28011684535f333484cb859577fb6 /web/service
parenta0d6f85837dc59ab8e62620dd38be5aaefbc32b9 (diff)
Fix del/update affects on clientIPs
Diffstat (limited to 'web/service')
-rw-r--r--web/service/inbound.go53
1 files changed, 48 insertions, 5 deletions
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 87440c84..fca42edd 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -179,6 +179,20 @@ func (s *InboundService) DelInbound(id int) error {
if err != nil {
return err
}
+ inbound, err := s.GetInbound(id)
+ if err != nil {
+ return err
+ }
+ clients, err := s.getClients(inbound)
+ if err != nil {
+ return err
+ }
+ for _, client := range clients {
+ err := db.Where("client_email = ?", client.Email).Delete(model.InboundClientIps{}).Error
+ if err != nil {
+ return err
+ }
+ }
return db.Delete(model.Inbound{}, id).Error
}
@@ -286,6 +300,12 @@ func (s *InboundService) DelInboundClient(inbound *model.Inbound, email string)
oldInbound.Settings = inbound.Settings
+ err = s.DelClientIPs(db, email)
+ if err != nil {
+ logger.Error("Error in delete client IPs")
+ return err
+ }
+
return db.Save(oldInbound).Error
}
@@ -319,12 +339,26 @@ func (s *InboundService) UpdateInboundClient(inbound *model.Inbound, index int)
if len(clients[index].Email) > 0 {
if len(oldClients[index].Email) > 0 {
- s.UpdateClientStat(oldClients[index].Email, &clients[index])
+ err = s.UpdateClientStat(oldClients[index].Email, &clients[index])
+ if err != nil {
+ return err
+ }
+ err = s.UpdateClientIPs(db, oldClients[index].Email, clients[index].Email)
+ if err != nil {
+ return err
+ }
} else {
s.AddClientStat(inbound.Id, &clients[index])
}
} else {
- s.DelClientStat(db, oldClients[index].Email)
+ err = s.DelClientStat(db, oldClients[index].Email)
+ if err != nil {
+ return err
+ }
+ err = s.DelClientIPs(db, oldClients[index].Email)
+ if err != nil {
+ return err
+ }
}
return db.Save(oldInbound).Error
}
@@ -483,8 +517,17 @@ func (s *InboundService) UpdateClientStat(email string, client *model.Client) er
}
return nil
}
+
+func (s *InboundService) UpdateClientIPs(tx *gorm.DB, oldEmail string, newEmail string) error {
+ return tx.Model(model.InboundClientIps{}).Where("client_email = ?", oldEmail).Update("client_email", newEmail).Error
+}
+
func (s *InboundService) DelClientStat(tx *gorm.DB, email string) error {
- return tx.Where("email = ?", email).Delete(xray.ClientTraffic{}).Error
+ return tx.Where("client_email = ?", email).Delete(xray.ClientTraffic{}).Error
+}
+
+func (s *InboundService) DelClientIPs(tx *gorm.DB, email string) error {
+ return tx.Where("email = ?", email).Delete(model.InboundClientIps{}).Error
}
func (s *InboundService) ResetClientTraffic(id int, clientEmail string) error {
@@ -567,6 +610,7 @@ func (s *InboundService) SearchClientTraffic(query string) (traffic *xray.Client
}
return traffic, err
}
+
func (s *InboundService) GetInboundClientIps(clientEmail string) (string, error) {
db := database.GetDB()
InboundClientIps := &model.InboundClientIps{}
@@ -576,7 +620,7 @@ func (s *InboundService) GetInboundClientIps(clientEmail string) (string, error)
}
return InboundClientIps.Ips, nil
}
-func (s *InboundService) ClearClientIps(clientEmail string) (error) {
+func (s *InboundService) ClearClientIps(clientEmail string) error {
db := database.GetDB()
result := db.Model(model.InboundClientIps{}).
@@ -584,7 +628,6 @@ func (s *InboundService) ClearClientIps(clientEmail string) (error) {
Update("ips", "")
err := result.Error
-
if err != nil {
return err
}