aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--caddyconfig/httpcaddyfile/options.go7
-rw-r--r--modules/filestorage/filestorage.go29
2 files changed, 26 insertions, 10 deletions
diff --git a/caddyconfig/httpcaddyfile/options.go b/caddyconfig/httpcaddyfile/options.go
index 072d8f49d..2ab73b24c 100644
--- a/caddyconfig/httpcaddyfile/options.go
+++ b/caddyconfig/httpcaddyfile/options.go
@@ -136,14 +136,13 @@ func parseOptOrder(d *caddyfile.Dispenser) ([]string, error) {
}
func parseOptStorage(d *caddyfile.Dispenser) (caddy.StorageConverter, error) {
- if !d.Next() {
+ if !d.Next() { // consume option name
return nil, d.ArgErr()
}
- args := d.RemainingArgs()
- if len(args) != 1 {
+ if !d.Next() { // get storage module name
return nil, d.ArgErr()
}
- modName := args[0]
+ modName := d.Val()
mod, err := caddy.GetModule("caddy.storage." + modName)
if err != nil {
return nil, d.Errf("getting storage module '%s': %v", modName, err)
diff --git a/modules/filestorage/filestorage.go b/modules/filestorage/filestorage.go
index 6e688ef0f..629dc27ed 100644
--- a/modules/filestorage/filestorage.go
+++ b/modules/filestorage/filestorage.go
@@ -48,15 +48,32 @@ func (s *FileStorage) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
if !d.Next() {
return d.Err("expected tokens")
}
- for nesting := d.Nesting(); d.NextBlock(nesting); {
- if !d.NextArg() {
- return d.ArgErr()
- }
+ if d.NextArg() {
s.Root = d.Val()
- if d.NextArg() {
- return d.ArgErr()
+ }
+ if d.NextArg() {
+ return d.ArgErr()
+ }
+ for nesting := d.Nesting(); d.NextBlock(nesting); {
+ switch d.Val() {
+ case "root":
+ if !d.NextArg() {
+ return d.ArgErr()
+ }
+ if s.Root != "" {
+ return d.Err("root already set")
+ }
+ s.Root = d.Val()
+ if d.NextArg() {
+ return d.ArgErr()
+ }
+ default:
+ return d.Errf("unrecognized parameter '%s'", d.Val())
}
}
+ if s.Root == "" {
+ return d.Err("missing root path (to use default, omit storage config entirely)")
+ }
return nil
}