mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-13 22:51:08 -05:00
Implement missing bits for an external servertype
Make ServerListeners public and add two helper methods to get access to the address they listen on. This is useful for tests (among other things) Also make DefaultConfigFile a var so it can be overridden by server types.
This commit is contained in:
parent
fdc62d015f
commit
a609fa5f56
2 changed files with 27 additions and 6 deletions
11
caddy.go
11
caddy.go
|
@ -76,7 +76,7 @@ type Instance struct {
|
||||||
context Context
|
context Context
|
||||||
|
|
||||||
// servers is the list of servers with their listeners.
|
// servers is the list of servers with their listeners.
|
||||||
servers []serverListener
|
servers []ServerListener
|
||||||
|
|
||||||
// these callbacks execute when certain events occur
|
// these callbacks execute when certain events occur
|
||||||
onFirstStartup []func() error // starting, not as part of a restart
|
onFirstStartup []func() error // starting, not as part of a restart
|
||||||
|
@ -86,6 +86,9 @@ type Instance struct {
|
||||||
onFinalShutdown []func() error // stopping, not as part of a restart
|
onFinalShutdown []func() error // stopping, not as part of a restart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Servers returns the ServerListeners in i.
|
||||||
|
func (i *Instance) Servers() []ServerListener { return i.servers }
|
||||||
|
|
||||||
// Stop stops all servers contained in i. It does NOT
|
// Stop stops all servers contained in i. It does NOT
|
||||||
// execute shutdown callbacks.
|
// execute shutdown callbacks.
|
||||||
func (i *Instance) Stop() error {
|
func (i *Instance) Stop() error {
|
||||||
|
@ -202,7 +205,7 @@ func (i *Instance) Restart(newCaddyfile Input) (*Instance, error) {
|
||||||
// internally-kept list of servers that is running. For
|
// internally-kept list of servers that is running. For
|
||||||
// saved servers, graceful restarts will be provided.
|
// saved servers, graceful restarts will be provided.
|
||||||
func (i *Instance) SaveServer(s Server, ln net.Listener) {
|
func (i *Instance) SaveServer(s Server, ln net.Listener) {
|
||||||
i.servers = append(i.servers, serverListener{server: s, listener: ln})
|
i.servers = append(i.servers, ServerListener{server: s, listener: ln})
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasListenerWithAddress returns whether this package is
|
// HasListenerWithAddress returns whether this package is
|
||||||
|
@ -644,7 +647,7 @@ func startServers(serverList []Server, inst *Instance, restartFds map[string]res
|
||||||
errChan <- s.ServePacket(pc)
|
errChan <- s.ServePacket(pc)
|
||||||
}(s, ln, pc, inst)
|
}(s, ln, pc, inst)
|
||||||
|
|
||||||
inst.servers = append(inst.servers, serverListener{server: s, listener: ln, packet: pc})
|
inst.servers = append(inst.servers, ServerListener{server: s, listener: ln, packet: pc})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log errors that may be returned from Serve() calls,
|
// Log errors that may be returned from Serve() calls,
|
||||||
|
@ -836,7 +839,7 @@ var (
|
||||||
instancesMu sync.Mutex
|
instancesMu sync.Mutex
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
var (
|
||||||
// DefaultConfigFile is the name of the configuration file that is loaded
|
// DefaultConfigFile is the name of the configuration file that is loaded
|
||||||
// by default if no other file is specified.
|
// by default if no other file is specified.
|
||||||
DefaultConfigFile = "Caddyfile"
|
DefaultConfigFile = "Caddyfile"
|
||||||
|
|
22
plugins.go
22
plugins.go
|
@ -82,13 +82,31 @@ func ValidDirectives(serverType string) []string {
|
||||||
return stype.Directives
|
return stype.Directives
|
||||||
}
|
}
|
||||||
|
|
||||||
// serverListener pairs a server to its listener and/or packetconn.
|
// ServerListener pairs a server to its listener and/or packetconn.
|
||||||
type serverListener struct {
|
type ServerListener struct {
|
||||||
server Server
|
server Server
|
||||||
listener net.Listener
|
listener net.Listener
|
||||||
packet net.PacketConn
|
packet net.PacketConn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LocalAddr returns the local network address of the packetconn. It returns
|
||||||
|
// nil when it is not set.
|
||||||
|
func (s ServerListener) LocalAddr() net.Addr {
|
||||||
|
if s.packet == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return s.packet.LocalAddr()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Addr returns the listener's network address. It returns nil when it is
|
||||||
|
// not set.
|
||||||
|
func (s ServerListener) Addr() net.Addr {
|
||||||
|
if s.listener == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return s.listener.Addr()
|
||||||
|
}
|
||||||
|
|
||||||
// Context is a type which carries a server type through
|
// Context is a type which carries a server type through
|
||||||
// the load and setup phase; it maintains the state
|
// the load and setup phase; it maintains the state
|
||||||
// between loading the Caddyfile, then executing its
|
// between loading the Caddyfile, then executing its
|
||||||
|
|
Loading…
Reference in a new issue