Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 14, 05:15 UTC
httpcaddyfile: Minor fixes to parsing storage options
Matthew Holt committed
May 1, 2020 at 09:34 UTC
bca610fbde82c4b45526dd526d7ddfa6e3bdac70
2 files changed
+26
-10
caddyconfig/httpcaddyfile/options.go
+3
-4
@@ -136,14 +136,13 @@ func parseOptOrder(d *caddyfile.Dispenser) ([]string, error) {
136
}
137
138
func parseOptStorage(d *caddyfile.Dispenser) (caddy.StorageConverter, error) {
139
- if !d.Next() {
139
+ if !d.Next() { // consume option name
140
return nil, d.ArgErr()
141
}
142
- args := d.RemainingArgs()
143
- if len(args) != 1 {
142
+ if !d.Next() { // get storage module name
143
return nil, d.ArgErr()
144
}
146
- modName := args[0]
145
+ modName := d.Val()
146
mod, err := caddy.GetModule("caddy.storage." + modName)
147
if err != nil {
148
return nil, d.Errf("getting storage module '%s': %v", modName, err)
modules/filestorage/filestorage.go
+23
-6
@@ -48,15 +48,32 @@ func (s *FileStorage) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
48
if !d.Next() {
49
return d.Err("expected tokens")
50
}
51
- for nesting := d.Nesting(); d.NextBlock(nesting); {
52
- if !d.NextArg() {
53
- return d.ArgErr()
54
- }
51
+ if d.NextArg() {
52
s.Root = d.Val()
56
- if d.NextArg() {
57
- return d.ArgErr()
53
+ }
54
+ if d.NextArg() {
55
+ return d.ArgErr()
56
+ }
57
+ for nesting := d.Nesting(); d.NextBlock(nesting); {
58
+ switch d.Val() {
59
+ case "root":
60
+ if !d.NextArg() {
61
+ return d.ArgErr()
62
+ }
63
+ if s.Root != "" {
64
+ return d.Err("root already set")
65
+ }
66
+ s.Root = d.Val()
67
+ if d.NextArg() {
68
+ return d.ArgErr()
69
+ }
70
+ default:
71
+ return d.Errf("unrecognized parameter '%s'", d.Val())
72
}
73
}
74
+ if s.Root == "" {
75
+ return d.Err("missing root path (to use default, omit storage config entirely)")
76
+ }
77
return nil
78
}
79