diff options
| author | Alireza Ahmadi <alireza.ahmadi@tzconnect.com> | 2023-03-17 20:51:43 +0300 |
|---|---|---|
| committer | Alireza Ahmadi <alireza.ahmadi@tzconnect.com> | 2023-03-17 21:02:56 +0300 |
| commit | baaa814a519e9867536811529b490af059d55fbb (patch) | |
| tree | bf31bc1c69b28011684535f333484cb859577fb6 /web/service | |
| parent | a0d6f85837dc59ab8e62620dd38be5aaefbc32b9 (diff) | |
Fix del/update affects on clientIPs
Diffstat (limited to 'web/service')
| -rw-r--r-- | web/service/inbound.go | 53 |
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 } |
