validate 'em !
This commit is contained in:
@@ -9,6 +9,68 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func validateRecord(r models.IRecord) error {
|
||||
|
||||
switch r.GetType() {
|
||||
case models.RecordTypeA:
|
||||
record := &models.Record[models.ARecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeAAAA:
|
||||
record := &models.Record[models.AAAARecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeCNAME:
|
||||
record := &models.Record[models.CNAMERecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeCAA:
|
||||
record := &models.Record[models.CAARecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeMX:
|
||||
record := &models.Record[models.MXRecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeNS:
|
||||
record := &models.Record[models.NSRecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeSOA:
|
||||
record := &models.Record[models.SOARecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeSRV:
|
||||
record := &models.Record[models.SRVRecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
case models.RecordTypeTXT:
|
||||
record := &models.Record[models.TXTRecord]{}
|
||||
if err := record.FromEntity(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return record.Content.Validate()
|
||||
default:
|
||||
return models.ErrInvalidType
|
||||
}
|
||||
}
|
||||
|
||||
func getRecords(c *gin.Context) {
|
||||
query := &models.Record[models.RecordContentDefault]{Content: make(models.RecordContentDefault)}
|
||||
if err := c.BindQuery(query); err != nil {
|
||||
@@ -52,6 +114,14 @@ func createRecord(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := validateRecord(record); err != nil {
|
||||
c.JSON(http.StatusBadRequest, Response{
|
||||
Succeed: false,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
irecord, err := controllers.CreateRecord(record)
|
||||
if err != nil {
|
||||
errorHandler(c, err)
|
||||
@@ -99,6 +169,14 @@ func updateRecord(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := validateRecord(record); err != nil {
|
||||
c.JSON(http.StatusBadRequest, Response{
|
||||
Succeed: false,
|
||||
Message: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
domain := c.Param("domain")
|
||||
if domain != record.Zone {
|
||||
c.JSON(http.StatusBadRequest, Response{
|
||||
|
Reference in New Issue
Block a user