Browse Source
file_server: Automatically hide all involved Caddyfiles
master
Matthew Holt
6 years ago
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
3 changed files with
30 additions and
0 deletions
-
caddyconfig/httpcaddyfile/directives.go
-
caddyconfig/httpcaddyfile/httptype.go
-
modules/caddyhttp/fileserver/caddyfile.go
|
|
@ -81,6 +81,26 @@ type Helper struct { |
|
|
|
*caddyfile.Dispenser |
|
|
|
warnings *[]caddyconfig.Warning |
|
|
|
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.
|
|
|
|
|
|
@ -95,6 +95,7 @@ func (st ServerType) Setup(originalServerBlocks []caddyfile.ServerBlock, |
|
|
|
Dispenser: caddyfile.NewDispenser(segment), |
|
|
|
warnings: &warnings, |
|
|
|
matcherDefs: matcherDefs, |
|
|
|
parentBlock: sb.block, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
return nil, warnings, fmt.Errorf("parsing caddyfile tokens for '%s': %v", dir, err) |
|
|
|
|
|
@ -76,6 +76,15 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) |
|
|
|
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 |
|
|
|
} |
|
|
|
|
|
|
|