aboutsummaryrefslogtreecommitdiff
path: root/services/domain
diff options
context:
space:
mode:
Diffstat (limited to 'services/domain')
-rw-r--r--services/domain/defaults.go6
-rw-r--r--services/domain/domain.go23
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)
+}