aboutsummaryrefslogtreecommitdiff
path: root/cmd/acme/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/acme/config.go')
-rw-r--r--cmd/acme/config.go35
1 files changed, 26 insertions, 9 deletions
diff --git a/cmd/acme/config.go b/cmd/acme/config.go
index e58aad7..04b9ab2 100644
--- a/cmd/acme/config.go
+++ b/cmd/acme/config.go
@@ -108,16 +108,33 @@ func LoadConfig(fname string) (*Config, error) {
v.Key = path.Join(c.BaseDir, v.Key)
v.Cert = path.Join(c.BaseDir, v.Cert)
}
- switch len(v.Altnames) {
- case 0:
- return nil, errNoAltNames
- case 1:
- an := v.Altnames[0]
- if strings.HasPrefix(an, "www.") {
- v.Altnames = append(v.Altnames, an[4:])
- }
- }
+ v.Altnames = checkWWW(v.Altnames)
c.Desire[k] = v
}
return c, nil
}
+
+func checkWWW(altnames []string) []string {
+ find := func(prefix string) (ret []string) {
+ for _, an := range altnames {
+ if strings.HasPrefix(an, prefix) {
+ ret = append(ret, an[len(prefix):])
+ }
+ }
+ return
+ }
+ has := func(s string) bool {
+ for _, an := range altnames {
+ if an == s {
+ return true
+ }
+ }
+ return false
+ }
+ for _, d := range find("www.") {
+ if !has(d) {
+ altnames = append(altnames, d)
+ }
+ }
+ return altnames
+}