|
@ -30,7 +30,7 @@ import ( |
|
|
|
|
|
|
|
|
func init() { |
|
|
func init() { |
|
|
RegisterDirective("bind", parseBind) |
|
|
RegisterDirective("bind", parseBind) |
|
|
RegisterDirective("root", parseRoot) |
|
|
RegisterDirective("root", parseRoot) // TODO: isn't this a handler directive?
|
|
|
RegisterDirective("tls", parseTLS) |
|
|
RegisterDirective("tls", parseTLS) |
|
|
RegisterHandlerDirective("redir", parseRedir) |
|
|
RegisterHandlerDirective("redir", parseRedir) |
|
|
RegisterHandlerDirective("respond", parseRespond) |
|
|
RegisterHandlerDirective("respond", parseRespond) |
|
@ -38,6 +38,10 @@ func init() { |
|
|
RegisterHandlerDirective("handle", parseHandle) |
|
|
RegisterHandlerDirective("handle", parseHandle) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseBind parses the bind directive. Syntax:
|
|
|
|
|
|
//
|
|
|
|
|
|
// bind <addresses...>
|
|
|
|
|
|
//
|
|
|
func parseBind(h Helper) ([]ConfigValue, error) { |
|
|
func parseBind(h Helper) ([]ConfigValue, error) { |
|
|
var lnHosts []string |
|
|
var lnHosts []string |
|
|
for h.Next() { |
|
|
for h.Next() { |
|
@ -46,6 +50,10 @@ func parseBind(h Helper) ([]ConfigValue, error) { |
|
|
return h.NewBindAddresses(lnHosts), nil |
|
|
return h.NewBindAddresses(lnHosts), nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseRoot parses the root directive. Syntax:
|
|
|
|
|
|
//
|
|
|
|
|
|
// root [<matcher>] <path>
|
|
|
|
|
|
//
|
|
|
func parseRoot(h Helper) ([]ConfigValue, error) { |
|
|
func parseRoot(h Helper) ([]ConfigValue, error) { |
|
|
if !h.Next() { |
|
|
if !h.Next() { |
|
|
return nil, h.ArgErr() |
|
|
return nil, h.ArgErr() |
|
@ -251,6 +259,10 @@ func parseTLS(h Helper) ([]ConfigValue, error) { |
|
|
return configVals, nil |
|
|
return configVals, nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseRedir parses the redir directive. Syntax:
|
|
|
|
|
|
//
|
|
|
|
|
|
// redir [<matcher>] <to> [<code>]
|
|
|
|
|
|
//
|
|
|
func parseRedir(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
func parseRedir(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
if !h.Next() { |
|
|
if !h.Next() { |
|
|
return nil, h.ArgErr() |
|
|
return nil, h.ArgErr() |
|
@ -269,10 +281,10 @@ func parseRedir(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
code = "301" |
|
|
code = "301" |
|
|
} |
|
|
} |
|
|
if code == "temporary" || code == "" { |
|
|
if code == "temporary" || code == "" { |
|
|
code = "307" |
|
|
code = "302" |
|
|
} |
|
|
} |
|
|
var body string |
|
|
var body string |
|
|
if code == "meta" { |
|
|
if code == "html" { |
|
|
// Script tag comes first since that will better imitate a redirect in the browser's
|
|
|
// Script tag comes first since that will better imitate a redirect in the browser's
|
|
|
// history, but the meta tag is a fallback for most non-JS clients.
|
|
|
// history, but the meta tag is a fallback for most non-JS clients.
|
|
|
const metaRedir = `<!DOCTYPE html> |
|
|
const metaRedir = `<!DOCTYPE html> |
|
@ -296,6 +308,7 @@ func parseRedir(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
}, nil |
|
|
}, nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseRespond parses the respond directive.
|
|
|
func parseRespond(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
func parseRespond(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
sr := new(caddyhttp.StaticResponse) |
|
|
sr := new(caddyhttp.StaticResponse) |
|
|
err := sr.UnmarshalCaddyfile(h.Dispenser) |
|
|
err := sr.UnmarshalCaddyfile(h.Dispenser) |
|
@ -305,6 +318,7 @@ func parseRespond(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
return sr, nil |
|
|
return sr, nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseRoute parses the route directive.
|
|
|
func parseRoute(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
func parseRoute(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
sr := new(caddyhttp.Subroute) |
|
|
sr := new(caddyhttp.Subroute) |
|
|
|
|
|
|
|
@ -337,6 +351,7 @@ func parseRoute(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
return sr, nil |
|
|
return sr, nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// parseHandle parses the route directive.
|
|
|
func parseHandle(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
func parseHandle(h Helper) (caddyhttp.MiddlewareHandler, error) { |
|
|
var allResults []ConfigValue |
|
|
var allResults []ConfigValue |
|
|
|
|
|
|
|
|