mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package config
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/mholt/caddy/middleware"
 | 
						|
	"github.com/mholt/caddy/middleware/browse"
 | 
						|
	"github.com/mholt/caddy/middleware/extensionless"
 | 
						|
	"github.com/mholt/caddy/middleware/fastcgi"
 | 
						|
	"github.com/mholt/caddy/middleware/gzip"
 | 
						|
	"github.com/mholt/caddy/middleware/headers"
 | 
						|
	"github.com/mholt/caddy/middleware/log"
 | 
						|
	"github.com/mholt/caddy/middleware/markdown"
 | 
						|
	"github.com/mholt/caddy/middleware/proxy"
 | 
						|
	"github.com/mholt/caddy/middleware/redirect"
 | 
						|
	"github.com/mholt/caddy/middleware/rewrite"
 | 
						|
	"github.com/mholt/caddy/middleware/websockets"
 | 
						|
)
 | 
						|
 | 
						|
// This init function registers middleware. Register middleware
 | 
						|
// in the order they should be executed during a request.
 | 
						|
// Middleware execute in this order: A-B-C-*-C-B-A
 | 
						|
// assuming they call the Next handler in the chain.
 | 
						|
func init() {
 | 
						|
	register("gzip", gzip.New)
 | 
						|
	register("header", headers.New)
 | 
						|
	register("log", log.New)
 | 
						|
	register("rewrite", rewrite.New)
 | 
						|
	register("redirect", redirect.New)
 | 
						|
	register("ext", extensionless.New)
 | 
						|
	register("proxy", proxy.New)
 | 
						|
	register("fastcgi", fastcgi.New)
 | 
						|
	register("websocket", websockets.New)
 | 
						|
	register("markdown", markdown.New)
 | 
						|
	register("browse", browse.New)
 | 
						|
}
 | 
						|
 | 
						|
// registry stores the registered middleware:
 | 
						|
// both the order and the directives to which they
 | 
						|
// are bound.
 | 
						|
var registry = struct {
 | 
						|
	directiveMap map[string]middleware.Generator
 | 
						|
	ordered      []string
 | 
						|
}{
 | 
						|
	directiveMap: make(map[string]middleware.Generator),
 | 
						|
}
 | 
						|
 | 
						|
// register binds a middleware generator (outer function)
 | 
						|
// to a directive. Upon each request, middleware will be
 | 
						|
// executed in the order they are registered.
 | 
						|
func register(directive string, generator middleware.Generator) {
 | 
						|
	registry.directiveMap[directive] = generator
 | 
						|
	registry.ordered = append(registry.ordered, directive)
 | 
						|
}
 | 
						|
 | 
						|
// middlewareRegistered returns whether or not a directive is registered.
 | 
						|
func middlewareRegistered(directive string) bool {
 | 
						|
	_, ok := registry.directiveMap[directive]
 | 
						|
	return ok
 | 
						|
}
 |