| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package setup
- import (
- "encoding/json"
- "fmt"
- "io"
- "net/http"
- "pmail/dto"
- "pmail/i18n"
- "pmail/services/auth"
- "pmail/utils/errors"
- )
- type DNSItem struct {
- Type string `json:"type"`
- Host string `json:"host"`
- Value string `json:"value"`
- TTL int `json:"ttl"`
- Tips string `json:"tips"`
- }
- func GetDNSSettings(ctx *dto.Context) ([]*DNSItem, error) {
- configData, err := ReadConfig()
- if err != nil {
- return nil, errors.Wrap(err)
- }
- ret := []*DNSItem{
- {Type: "A", Host: "smtp", Value: getIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
- {Type: "MX", Host: "-", Value: fmt.Sprintf("smtp.%s", configData.Domain), TTL: 3600},
- {Type: "TXT", Host: "-", Value: "v=spf1 a mx ~all", TTL: 3600},
- {Type: "TXT", Host: "default._domainkey", Value: auth.DkimGen(), TTL: 3600},
- }
- return ret, nil
- }
- func getIp() string {
- resp, err := http.Get("http://ip-api.com/json/?lang=zh-CN ")
- if err != nil {
- return "Your Server IP"
- }
- defer resp.Body.Close()
- if resp.StatusCode == 200 {
- body, err := io.ReadAll(resp.Body)
- if err == nil {
- var queryRes map[string]string
- _ = json.Unmarshal(body, &queryRes)
- return queryRes["query"]
- }
- }
- return "Your Server IP"
- }
|