mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-04 03:27:23 -05:00 
			
		
		
		
	Merge branch 'configfix' into letsencrypt
This commit is contained in:
		
						commit
						4c93ab8c68
					
				@ -47,8 +47,9 @@ func Load(filename string, input io.Reader) (Group, error) {
 | 
			
		||||
	// executing the directives that were parsed.
 | 
			
		||||
	for i, sb := range serverBlocks {
 | 
			
		||||
		onces := makeOnces()
 | 
			
		||||
		storages := makeStorages()
 | 
			
		||||
 | 
			
		||||
		for _, addr := range sb.Addresses {
 | 
			
		||||
		for j, addr := range sb.Addresses {
 | 
			
		||||
			config := server.Config{
 | 
			
		||||
				Host:       addr.Host,
 | 
			
		||||
				Port:       addr.Port,
 | 
			
		||||
@ -76,8 +77,10 @@ func Load(filename string, input io.Reader) (Group, error) {
 | 
			
		||||
							})
 | 
			
		||||
							return err
 | 
			
		||||
						},
 | 
			
		||||
						ServerBlockIndex: i,
 | 
			
		||||
						ServerBlockHosts: sb.HostList(),
 | 
			
		||||
						ServerBlockIndex:     i,
 | 
			
		||||
						ServerBlockHostIndex: j,
 | 
			
		||||
						ServerBlockHosts:     sb.HostList(),
 | 
			
		||||
						ServerBlockStorage:   storages[dir.name],
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					midware, err := dir.setup(controller)
 | 
			
		||||
@ -88,6 +91,7 @@ func Load(filename string, input io.Reader) (Group, error) {
 | 
			
		||||
						// TODO: For now, we only support the default path scope /
 | 
			
		||||
						config.Middleware["/"] = append(config.Middleware["/"], midware)
 | 
			
		||||
					}
 | 
			
		||||
					storages[dir.name] = controller.ServerBlockStorage // persist for this server block
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@ -129,6 +133,18 @@ func makeOnces() map[string]*sync.Once {
 | 
			
		||||
	return onces
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// makeStorages makes a map of directive name to interface{}
 | 
			
		||||
// so that directives' setup functions can persist state
 | 
			
		||||
// between different hosts on the same server block during the
 | 
			
		||||
// setup phase.
 | 
			
		||||
func makeStorages() map[string]interface{} {
 | 
			
		||||
	storages := make(map[string]interface{})
 | 
			
		||||
	for _, dir := range directiveOrder {
 | 
			
		||||
		storages[dir.name] = nil
 | 
			
		||||
	}
 | 
			
		||||
	return storages
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// arrangeBindings groups configurations by their bind address. For example,
 | 
			
		||||
// a server that should listen on localhost and another on 127.0.0.1 will
 | 
			
		||||
// be grouped into the same address: 127.0.0.1. It will return an error
 | 
			
		||||
 | 
			
		||||
@ -29,17 +29,29 @@ type Controller struct {
 | 
			
		||||
	// server block as it appeared in the input.
 | 
			
		||||
	ServerBlockIndex int
 | 
			
		||||
 | 
			
		||||
	// ServerBlockHostIndex is the 0-based index of this
 | 
			
		||||
	// host as it appeared in the input at the head of the
 | 
			
		||||
	// server block.
 | 
			
		||||
	ServerBlockHostIndex int
 | 
			
		||||
 | 
			
		||||
	// ServerBlockHosts is a list of hosts that are
 | 
			
		||||
	// associated with this server block. All these
 | 
			
		||||
	// hosts, consequently, share the same tokens.
 | 
			
		||||
	ServerBlockHosts []string
 | 
			
		||||
 | 
			
		||||
	// ServerBlockStorage is used by a directive's
 | 
			
		||||
	// setup function to persist state between all
 | 
			
		||||
	// the hosts on a server block.
 | 
			
		||||
	ServerBlockStorage interface{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewTestController creates a new *Controller for
 | 
			
		||||
// the input specified, with a filename of "Testfile"
 | 
			
		||||
// the input specified, with a filename of "Testfile".
 | 
			
		||||
// The Config is bare, consisting only of a Root of cwd.
 | 
			
		||||
//
 | 
			
		||||
// Used primarily for testing but needs to be exported so
 | 
			
		||||
// add-ons can use this as a convenience.
 | 
			
		||||
// add-ons can use this as a convenience. Does not initialize
 | 
			
		||||
// the server-block-related fields.
 | 
			
		||||
func NewTestController(input string) *Controller {
 | 
			
		||||
	return &Controller{
 | 
			
		||||
		Config: &server.Config{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user