fix change tag

This commit is contained in:
Alireza Ahmadi
2025-01-05 19:33:56 +01:00
parent 56710aef1e
commit dbee22b637
3 changed files with 37 additions and 16 deletions
+6 -1
View File
@@ -73,7 +73,12 @@ func (s *EndpointService) Save(tx *gorm.DB, action string, data json.RawMessage)
return err return err
} }
if action == "edit" { if action == "edit" {
err = corePtr.RemoveEndpoint(endpoint.Tag) var oldTag string
err = tx.Model(model.Endpoint{}).Select("tag").Where("id = ?", endpoint.Id).Find(&oldTag).Error
if err != nil {
return err
}
err = corePtr.RemoveEndpoint(oldTag)
if err != nil && err != os.ErrInvalid { if err != nil && err != os.ErrInvalid {
return err return err
} }
+25 -14
View File
@@ -76,74 +76,85 @@ func (s *InboundService) FromIds(ids []uint) ([]*model.Inbound, error) {
return inbounds, nil return inbounds, nil
} }
func (s *InboundService) Save(tx *gorm.DB, act string, data json.RawMessage, hostname string) error { func (s *InboundService) Save(tx *gorm.DB, act string, data json.RawMessage, hostname string) (uint, error) {
var err error var err error
var id uint
switch act { switch act {
case "new", "edit": case "new", "edit":
var inbound model.Inbound var inbound model.Inbound
err = inbound.UnmarshalJSON(data) err = inbound.UnmarshalJSON(data)
if err != nil { if err != nil {
return err return 0, err
} }
id = inbound.Id
if inbound.TlsId > 0 { if inbound.TlsId > 0 {
err = tx.Model(model.Tls{}).Where("id = ?", inbound.TlsId).Find(&inbound.Tls).Error err = tx.Model(model.Tls{}).Where("id = ?", inbound.TlsId).Find(&inbound.Tls).Error
if err != nil { if err != nil {
return err return 0, err
} }
} }
if corePtr.IsRunning() { if corePtr.IsRunning() {
if act == "edit" { if act == "edit" {
err = corePtr.RemoveInbound(inbound.Tag) var oldTag string
err = tx.Model(model.Inbound{}).Select("tag").Where("id = ?", inbound.Id).Find(&oldTag).Error
if err != nil {
return 0, err
}
err = corePtr.RemoveInbound(oldTag)
if err != nil && err != os.ErrInvalid { if err != nil && err != os.ErrInvalid {
return err return 0, err
} }
} }
inboundConfig, err := inbound.MarshalJSON() inboundConfig, err := inbound.MarshalJSON()
if err != nil { if err != nil {
return err return 0, err
} }
inboundConfig, err = s.addUsers(tx, inboundConfig, inbound.Id, inbound.Type) inboundConfig, err = s.addUsers(tx, inboundConfig, inbound.Id, inbound.Type)
if err != nil { if err != nil {
return err return 0, err
} }
err = corePtr.AddInbound(inboundConfig) err = corePtr.AddInbound(inboundConfig)
if err != nil { if err != nil {
return err return 0, err
} }
} }
err = util.FillOutJson(&inbound, hostname) err = util.FillOutJson(&inbound, hostname)
if err != nil { if err != nil {
return err return 0, err
} }
err = tx.Save(&inbound).Error err = tx.Save(&inbound).Error
if err != nil { if err != nil {
return err return 0, err
} }
case "del": case "del":
var tag string var tag string
err = json.Unmarshal(data, &tag) err = json.Unmarshal(data, &tag)
if err != nil { if err != nil {
return err return 0, err
} }
if corePtr.IsRunning() { if corePtr.IsRunning() {
err = corePtr.RemoveInbound(tag) err = corePtr.RemoveInbound(tag)
if err != nil && err != os.ErrInvalid { if err != nil && err != os.ErrInvalid {
return err return 0, err
} }
} }
err = tx.Model(model.Inbound{}).Select("id").Where("tag = ?", tag).Scan(&id).Error
if err != nil {
return 0, err
}
err = tx.Where("tag = ?", tag).Delete(model.Inbound{}).Error err = tx.Where("tag = ?", tag).Delete(model.Inbound{}).Error
if err != nil { if err != nil {
return err return 0, err
} }
} }
return nil return id, nil
} }
func (s *InboundService) UpdateOutJsons(tx *gorm.DB, inboundIds []uint, hostname string) error { func (s *InboundService) UpdateOutJsons(tx *gorm.DB, inboundIds []uint, hostname string) error {
+6 -1
View File
@@ -73,7 +73,12 @@ func (s *OutboundService) Save(tx *gorm.DB, action string, data json.RawMessage)
return err return err
} }
if action == "edit" { if action == "edit" {
err = corePtr.RemoveOutbound(outbound.Tag) var oldTag string
err = tx.Model(model.Outbound{}).Select("tag").Where("id = ?", outbound.Id).Find(&oldTag).Error
if err != nil {
return err
}
err = corePtr.RemoveOutbound(oldTag)
if err != nil && err != os.ErrInvalid { if err != nil && err != os.ErrInvalid {
return err return err
} }