31 lines
743 B
Go
31 lines
743 B
Go
package domain
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
ChallengeDNS01 = "dns-01"
|
|
ChallengeHTTP01 = "http-01"
|
|
)
|
|
|
|
// NormalizeChallengeType 保持历史空值使用 DNS 验证,拒绝未知方式及所有泛域名。
|
|
func NormalizeChallengeType(value string, names []string) (string, error) {
|
|
value = strings.ToLower(strings.TrimSpace(value))
|
|
if value == "" {
|
|
value = ChallengeDNS01
|
|
}
|
|
if value != ChallengeDNS01 && value != ChallengeHTTP01 {
|
|
return "", fmt.Errorf("证书验证方式无效:%s", value)
|
|
}
|
|
if value == ChallengeHTTP01 {
|
|
for _, name := range names {
|
|
if strings.HasPrefix(strings.TrimSpace(name), "*.") {
|
|
return "", fmt.Errorf("HTTP-01 不支持泛域名,请使用 DNS-01")
|
|
}
|
|
}
|
|
}
|
|
return value, nil
|
|
}
|