Browse Source

file_server: Automatically hide all involved Caddyfiles

master
Matthew Holt 6 years ago
parent
commit
c0da7d487a
No known key found for this signature in database GPG Key ID: 2A349DD577D586A5
  1. 20
      caddyconfig/httpcaddyfile/directives.go
  2. 1
      caddyconfig/httpcaddyfile/httptype.go
  3. 9
      modules/caddyhttp/fileserver/caddyfile.go

20
caddyconfig/httpcaddyfile/directives.go

@ -81,6 +81,26 @@ type Helper struct {
*caddyfile.Dispenser *caddyfile.Dispenser
warnings *[]caddyconfig.Warning warnings *[]caddyconfig.Warning
matcherDefs map[string]map[string]json.RawMessage matcherDefs map[string]map[string]json.RawMessage
parentBlock caddyfile.ServerBlock
}
// Caddyfiles returns the list of config files from
// which tokens in the current server block were loaded.
func (h Helper) Caddyfiles() []string {
// first obtain set of names of files involved
// in this server block, without duplicates
files := make(map[string]struct{})
for _, segment := range h.parentBlock.Segments {
for _, token := range segment {
files[token.File] = struct{}{}
}
}
// then convert the set into a slice
filesSlice := make([]string, 0, len(files))
for file := range files {
filesSlice = append(filesSlice, file)
}
return filesSlice
} }
// JSON converts val into JSON. Any errors are added to warnings. // JSON converts val into JSON. Any errors are added to warnings.

1
caddyconfig/httpcaddyfile/httptype.go

@ -95,6 +95,7 @@ func (st ServerType) Setup(originalServerBlocks []caddyfile.ServerBlock,
Dispenser: caddyfile.NewDispenser(segment), Dispenser: caddyfile.NewDispenser(segment),
warnings: &warnings, warnings: &warnings,
matcherDefs: matcherDefs, matcherDefs: matcherDefs,
parentBlock: sb.block,
}) })
if err != nil { if err != nil {
return nil, warnings, fmt.Errorf("parsing caddyfile tokens for '%s': %v", dir, err) return nil, warnings, fmt.Errorf("parsing caddyfile tokens for '%s': %v", dir, err)

9
modules/caddyhttp/fileserver/caddyfile.go

@ -76,6 +76,15 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error)
fsrv.Root = "{http.var.root}" fsrv.Root = "{http.var.root}"
} }
// hide the Caddyfile (and any imported Caddyfiles)
if configFiles := h.Caddyfiles(); len(configFiles) > 0 {
for _, file := range configFiles {
if !fileHidden(file, fsrv.Hide) {
fsrv.Hide = append(fsrv.Hide, file)
}
}
}
return &fsrv, nil return &fsrv, nil
} }

Loading…
Cancel
Save