mirror of
https://github.com/gravitl/netmaker.git
synced 2025-12-24 13:28:22 +08:00
fix(go): egress update; (#3674)
This commit is contained in:
@@ -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 != "" {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user