diff options
Diffstat (limited to 'services/domain')
| -rw-r--r-- | services/domain/defaults.go | 6 | ||||
| -rw-r--r-- | services/domain/domain.go | 23 |
2 files changed, 29 insertions, 0 deletions
diff --git a/services/domain/defaults.go b/services/domain/defaults.go new file mode 100644 index 0000000..aee8c14 --- /dev/null +++ b/services/domain/defaults.go @@ -0,0 +1,6 @@ +package domain + +const ( + DefaultAddress = "127.0.0.1" + DefaultMXTarget = "mail" +) diff --git a/services/domain/domain.go b/services/domain/domain.go index f320189..ff3efa5 100644 --- a/services/domain/domain.go +++ b/services/domain/domain.go @@ -3,7 +3,9 @@ package domain import ( "strings" + dnsModel "dove/models/dns" domainModel "dove/models/domain" + dnsRepo "dove/repositories/dns" domainRepo "dove/repositories/domain" mailRepo "dove/repositories/mail" "dove/utils/shortcuts" @@ -86,9 +88,19 @@ func CreateDomain(request CreateDomainRequest) *shortcuts.Error { return shortcuts.ServiceError(shortcuts.Internal, DomainCreationFailed) } + seedDefaultARecord(newDomain.ID) + return nil } +func seedDefaultARecord(domainID uint) { + dnsRepo.CreateARecord(&dnsModel.ARecord{ + DomainID: domainID, + Name: "@", + Address: DefaultAddress, + }) +} + func EditDomainFormData(domainID uint) (*EditDomainFormResponse, *shortcuts.Error) { foundDomain := domainRepo.FindDomainByID(domainID) if foundDomain == nil { @@ -156,9 +168,20 @@ func DeleteDomain(domainID uint) *shortcuts.Error { return shortcuts.ServiceError(shortcuts.Unprocessable, DomainHasMailboxes) } + deleteAllDNSRecords(foundDomain.ID) + if deleteError := domainRepo.DeleteDomain(foundDomain); deleteError != nil { return shortcuts.ServiceError(shortcuts.Internal, DomainDeletionFailed) } return nil } + +func deleteAllDNSRecords(domainID uint) { + dnsRepo.DeleteARecordsByDomainID(domainID) + dnsRepo.DeleteAAAARecordsByDomainID(domainID) + dnsRepo.DeleteCNAMERecordsByDomainID(domainID) + dnsRepo.DeleteMXRecordsByDomainID(domainID) + dnsRepo.DeleteTXTRecordsByDomainID(domainID) + dnsRepo.DeleteSRVRecordsByDomainID(domainID) +} |
