domain.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package setup
  2. import (
  3. "github.com/Jinnrry/pmail/config"
  4. "github.com/Jinnrry/pmail/utils/array"
  5. "github.com/Jinnrry/pmail/utils/errors"
  6. "strings"
  7. )
  8. func GetDomainSettings() (string, string, []string, error) {
  9. configData, err := config.ReadConfig()
  10. if err != nil {
  11. return "", "", []string{}, errors.Wrap(err)
  12. }
  13. return configData.Domain, configData.WebDomain, array.Difference(configData.Domains, []string{configData.Domain}), nil
  14. }
  15. func SetDomainSettings(smtpDomain, webDomain, multiDomains string) error {
  16. configData, err := config.ReadConfig()
  17. if err != nil {
  18. return errors.Wrap(err)
  19. }
  20. if smtpDomain == "" {
  21. return errors.New("domain must not empty!")
  22. }
  23. if webDomain == "" {
  24. return errors.New("web domain must not empty!")
  25. }
  26. configData.Domains = []string{}
  27. if multiDomains != "" {
  28. domains := strings.Split(multiDomains, ",")
  29. configData.Domains = domains
  30. }
  31. if !array.InArray(smtpDomain, configData.Domains) {
  32. configData.Domains = append(configData.Domains, smtpDomain)
  33. }
  34. configData.Domain = smtpDomain
  35. configData.WebDomain = webDomain
  36. // 检查域名是否指向本机 todo
  37. err = config.WriteConfig(configData)
  38. if err != nil {
  39. return errors.Wrap(err)
  40. }
  41. return nil
  42. }