domain.go 1.1 KB

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