fix(go): egress update; (#3674)

This commit is contained in:
Vishal Dalwadi
2025-10-01 13:53:00 +05:30
committed by GitHub
parent 74fd81999f
commit f995da621f
2 changed files with 40 additions and 11 deletions

View File

@@ -204,20 +204,23 @@ func updateEgress(w http.ResponseWriter, r *http.Request) {
return
}
var egressRange string
var cidrErr error
if !req.IsInetGw {
egressRange, cidrErr = logic.NormalizeCIDR(req.Range)
isDomain := logic.IsFQDN(req.Range)
if cidrErr != nil && !isDomain {
if cidrErr != nil {
logic.ReturnErrorResponse(w, r, logic.FormatError(cidrErr, "badrequest"))
} else {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("bad domain name"), "badrequest"))
if req.Range != "" {
var err error
egressRange, err = logic.NormalizeCIDR(req.Range)
if err != nil {
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
return
}
return
}
if isDomain {
req.Domain = req.Range
if req.Domain != "" {
isDomain := logic.IsFQDN(req.Domain)
if !isDomain {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("bad domain name"), "badrequest"))
return
}
egressRange = ""
}
} else {
@@ -233,12 +236,20 @@ func updateEgress(w http.ResponseWriter, r *http.Request) {
}
var updateNat bool
var updateStatus bool
var resetDomain bool
var resetRange bool
if req.Nat != e.Nat {
updateNat = true
}
if req.Status != e.Status {
updateStatus = true
}
if req.Domain == "" {
resetDomain = true
}
if req.Range == "" || egressRange == "" {
resetRange = true
}
event := &models.Event{
Action: models.Update,
Source: models.Subject{
@@ -294,6 +305,12 @@ func updateEgress(w http.ResponseWriter, r *http.Request) {
e.Status = req.Status
e.UpdateEgressStatus(db.WithContext(context.TODO()))
}
if resetDomain {
_ = e.ResetDomain(db.WithContext(context.TODO()))
}
if resetRange {
_ = e.ResetRange(db.WithContext(context.TODO()))
}
event.Diff.New = e
logic.LogEvent(event)
if req.Domain != "" {

View File

@@ -52,6 +52,18 @@ func (e *Egress) UpdateEgressStatus(ctx context.Context) error {
}).Error
}
func (e *Egress) ResetDomain(ctx context.Context) error {
return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Updates(map[string]any{
"domain": "",
}).Error
}
func (e *Egress) ResetRange(ctx context.Context) error {
return db.FromContext(ctx).Table(e.Table()).Where("id = ?", e.ID).Updates(map[string]any{
"range": "",
}).Error
}
func (e *Egress) DoesEgressRouteExists(ctx context.Context) error {
return db.FromContext(ctx).Table(e.Table()).Where("range = ?", e.Range).First(&e).Error
}