summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/caddyhttp/encode/caddyfile.go2
-rw-r--r--modules/filestorage/filestorage.go49
2 files changed, 50 insertions, 1 deletions
diff --git a/modules/caddyhttp/encode/caddyfile.go b/modules/caddyhttp/encode/caddyfile.go
index 2f0e151..4764e9b 100644
--- a/modules/caddyhttp/encode/caddyfile.go
+++ b/modules/caddyhttp/encode/caddyfile.go
@@ -68,7 +68,7 @@ func (enc *Encode) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
name := d.Val()
mod, err := caddy.GetModule("http.encoders." + name)
if err != nil {
- return fmt.Errorf("getting encoder module '%s': %v", mod.Name, err)
+ return fmt.Errorf("getting encoder module '%s': %v", name, err)
}
unm, ok := mod.New().(caddyfile.Unmarshaler)
if !ok {
diff --git a/modules/filestorage/filestorage.go b/modules/filestorage/filestorage.go
new file mode 100644
index 0000000..654dbb2
--- /dev/null
+++ b/modules/filestorage/filestorage.go
@@ -0,0 +1,49 @@
+package filestorage
+
+import (
+ "github.com/caddyserver/caddy/v2"
+ "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile"
+ "github.com/mholt/certmagic"
+)
+
+func init() {
+ caddy.RegisterModule(FileStorage{})
+}
+
+// FileStorage is a certmagic.Storage wrapper for certmagic.FileStorage.
+type FileStorage struct {
+ Root string `json:"root,omitempty"`
+}
+
+// CaddyModule returns the Caddy module information.
+func (FileStorage) CaddyModule() caddy.ModuleInfo {
+ return caddy.ModuleInfo{
+ Name: "caddy.storage.file_system",
+ New: func() caddy.Module { return new(FileStorage) },
+ }
+}
+
+// CertMagicStorage converts s to a certmagic.Storage instance.
+func (s FileStorage) CertMagicStorage() (certmagic.Storage, error) {
+ return &certmagic.FileStorage{Path: s.Root}, nil
+}
+
+// UnmarshalCaddyfile sets up the storage module from Caddyfile tokens.
+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()
+ }
+ s.Root = d.Val()
+ if d.NextArg() {
+ return d.ArgErr()
+ }
+ }
+ return nil
+}
+
+// Interface guard
+var _ caddy.StorageConverter = (*FileStorage)(nil)