MCPcopy
hub / github.com/caddyserver/caddy / cmdFileServer

Function cmdFileServer

modules/caddyhttp/fileserver/command.go:86–224  ·  view source on GitHub ↗
(fs caddycmd.Flags)

Source from the content-addressed store, hash-verified

84}
85
86func cmdFileServer(fs caddycmd.Flags) (int, error) {
87 caddy.TrapSignals()
88
89 domain := fs.String("domain")
90 root := fs.String("root")
91 listen := fs.String("listen")
92 browse := fs.Bool("browse")
93 templates := fs.Bool("templates")
94 accessLog := fs.Bool("access-log")
95 fileLimit := fs.Int("file-limit")
96 debug := fs.Bool("debug")
97 revealSymlinks := fs.Bool("reveal-symlinks")
98 compress := !fs.Bool("no-compress")
99 precompressed, err := fs.GetStringSlice("precompressed")
100 if err != nil {
101 return caddy.ExitCodeFailedStartup, fmt.Errorf("invalid precompressed flag: %v", err)
102 }
103 var handlers []json.RawMessage
104
105 if compress {
106 zstd, err := caddy.GetModule("http.encoders.zstd")
107 if err != nil {
108 return caddy.ExitCodeFailedStartup, err
109 }
110
111 gzip, err := caddy.GetModule("http.encoders.gzip")
112 if err != nil {
113 return caddy.ExitCodeFailedStartup, err
114 }
115
116 handlers = append(handlers, caddyconfig.JSONModuleObject(encode.Encode{
117 EncodingsRaw: caddy.ModuleMap{
118 "zstd": caddyconfig.JSON(zstd.New(), nil),
119 "gzip": caddyconfig.JSON(gzip.New(), nil),
120 },
121 Prefer: []string{"zstd", "gzip"},
122 }, "handler", "encode", nil))
123 }
124
125 if templates {
126 handler := caddytpl.Templates{FileRoot: root}
127 handlers = append(handlers, caddyconfig.JSONModuleObject(handler, "handler", "templates", nil))
128 }
129
130 handler := FileServer{Root: root}
131
132 if len(precompressed) != 0 {
133 // logic mirrors modules/caddyhttp/fileserver/caddyfile.go case "precompressed"
134 var order []string
135 for _, compression := range precompressed {
136 modID := "http.precompressed." + compression
137 mod, err := caddy.GetModule(modID)
138 if err != nil {
139 return caddy.ExitCodeFailedStartup, fmt.Errorf("getting module named '%s': %v", modID, err)
140 }
141 inst := mod.New()
142 precompress, ok := inst.(encode.Precompressed)
143 if !ok {

Callers

nothing calls this directly

Calls 6

JSONModuleObjectFunction · 0.92
JSONFunction · 0.92
DurationMethod · 0.80
StringMethod · 0.45
BoolMethod · 0.45
IntMethod · 0.45

Tested by

no test coverage detected