MCPcopy
hub / github.com/caddyserver/caddy / parseACMEServer

Function parseACMEServer

modules/caddypki/acmeserver/caddyfile.go:45–150  ·  view source on GitHub ↗

parseACMEServer sets up an ACME server handler from Caddyfile tokens. acme_server [<matcher>] { ca <id> lifetime <duration> resolvers <addresses...> challenges <challenges...> allow_wildcard_names allow { domains <domains...> ip_ranges <addresses...> } deny { domai

(h httpcaddyfile.Helper)

Source from the content-addressed store, hash-verified

43// sign_with_root
44// }
45func parseACMEServer(h httpcaddyfile.Helper) ([]httpcaddyfile.ConfigValue, error) {
46 h.Next() // consume directive name
47 matcherSet, err := h.ExtractMatcherSet()
48 if err != nil {
49 return nil, err
50 }
51 h.Next() // consume the directive name again (matcher parsing resets)
52
53 // no inline args allowed
54 if h.NextArg() {
55 return nil, h.ArgErr()
56 }
57
58 var acmeServer Handler
59 var ca *caddypki.CA
60
61 for h.NextBlock(0) {
62 switch h.Val() {
63 case "ca":
64 if !h.AllArgs(&acmeServer.CA) {
65 return nil, h.ArgErr()
66 }
67 if ca == nil {
68 ca = new(caddypki.CA)
69 }
70 ca.ID = acmeServer.CA
71 case "lifetime":
72 if !h.NextArg() {
73 return nil, h.ArgErr()
74 }
75 dur, err := caddy.ParseDuration(h.Val())
76 if err != nil {
77 return nil, err
78 }
79 acmeServer.Lifetime = caddy.Duration(dur)
80 case "resolvers":
81 acmeServer.Resolvers = h.RemainingArgs()
82 if len(acmeServer.Resolvers) == 0 {
83 return nil, h.Errf("must specify at least one resolver address")
84 }
85 case "challenges":
86 acmeServer.Challenges = append(acmeServer.Challenges, stringToChallenges(h.RemainingArgs())...)
87 case "allow_wildcard_names":
88 if acmeServer.Policy == nil {
89 acmeServer.Policy = &Policy{}
90 }
91 acmeServer.Policy.AllowWildcardNames = true
92 case "allow":
93 r := &RuleSet{}
94 for nesting := h.Nesting(); h.NextBlock(nesting); {
95 if h.CountRemainingArgs() == 0 {
96 return nil, h.ArgErr() // TODO:
97 }
98 switch h.Val() {
99 case "domains":
100 r.Domains = append(r.Domains, h.RemainingArgs()...)
101 case "ip_ranges":
102 r.IPRanges = append(r.IPRanges, h.RemainingArgs()...)

Callers

nothing calls this directly

Calls 14

stringToChallengesFunction · 0.85
ExtractMatcherSetMethod · 0.80
NextArgMethod · 0.80
ArgErrMethod · 0.80
NextBlockMethod · 0.80
ValMethod · 0.80
AllArgsMethod · 0.80
DurationMethod · 0.80
RemainingArgsMethod · 0.80
ErrfMethod · 0.80
NestingMethod · 0.80
CountRemainingArgsMethod · 0.80

Tested by

no test coverage detected