| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package ssl
- import (
- "github.com/go-acme/lego/v4/providers/dns"
- "os"
- "pmail/utils/errors"
- "regexp"
- "strings"
- )
- func GetServerParamsList(serverName string) ([]string, error) {
- var serverParams []string
- infos, err := os.ReadDir("./")
- if err != nil {
- return nil, errors.Wrap(err)
- }
- upperServerName := strings.ToUpper(serverName)
- for _, info := range infos {
- if strings.HasPrefix(info.Name(), upperServerName) {
- serverParams = append(serverParams, info.Name())
- }
- }
- if len(serverParams) != 0 {
- return serverParams, nil
- }
- _, err = dns.NewDNSChallengeProviderByName(serverName)
- if err == nil {
- return nil, errors.New(serverName + " Not Support")
- }
- if strings.Contains(err.Error(), "unrecognized DNS provider") {
- return nil, err
- }
- re := regexp.MustCompile(`missing: (.+)`)
- // namesilo: some credentials information are missing: NAMESILO_API_KEY
- estr := err.Error()
- name := re.FindStringSubmatch(estr)
- if len(name) == 2 {
- names := strings.Split(name[1], ",")
- for _, s := range names {
- serverParams = append(serverParams, s)
- SetDomainServerParams(s, "empty")
- }
- }
- _, err = dns.NewDNSChallengeProviderByName(serverName)
- return serverParams, err
- }
- func SetDomainServerParams(name, value string) {
- key := name
- err := os.WriteFile(key, []byte(value), 0644)
- if err != nil {
- panic(err)
- }
- err = os.Setenv(name+"_FILE", key)
- if err != nil {
- panic(err)
- }
- }
|