mirror of
https://github.com/caddyserver/caddy.git
synced 2025-04-23 05:07:50 +08:00
err
This commit is contained in:
parent
5f4614b643
commit
49b1d05db7
2
admin.go
2
admin.go
@ -351,7 +351,7 @@ func (admin AdminConfig) allowedOrigins(addr NetworkAddress) []*url.URL {
|
||||
}
|
||||
}
|
||||
if !addr.IsUnixNetwork() && !addr.IsFdNetwork() {
|
||||
uniqueOrigins[addr.JoinHostPort(0)] = struct{}{}
|
||||
uniqueOrigins[addr.JoinAt(0)] = struct{}{}
|
||||
}
|
||||
}
|
||||
allowed := make([]*url.URL, 0, len(uniqueOrigins))
|
||||
|
@ -332,7 +332,7 @@ func (st *ServerType) listenersForServerBlockAddress(sblock serverBlock, addr Ad
|
||||
for _, lnAddr := range lnCfgVal.addresses {
|
||||
lnNetw, lnHost, _, err := caddy.SplitNetworkAddress(lnAddr)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("splitting listener address: %v %s", err, lnAddr)
|
||||
return nil, fmt.Errorf("splitting listener address: %v", err)
|
||||
}
|
||||
networkAddr, err := caddy.ParseNetworkAddress(caddy.JoinNetworkAddress(lnNetw, lnHost, lnPort))
|
||||
if err != nil {
|
||||
|
@ -647,7 +647,7 @@ func AdminAPIRequest(adminAddr, method, uri string, headers http.Header, body io
|
||||
if err != nil || parsedAddr.PortRangeSize() > 1 {
|
||||
return nil, fmt.Errorf("invalid admin address %s: %v", adminAddr, err)
|
||||
}
|
||||
origin := "http://" + parsedAddr.JoinHostPort(0)
|
||||
origin := "http://" + parsedAddr.JoinAt(0)
|
||||
if parsedAddr.IsUnixNetwork() {
|
||||
origin = "http://127.0.0.1" // bogus host is a hack so that http.NewRequest() is happy
|
||||
|
||||
@ -704,7 +704,7 @@ func AdminAPIRequest(adminAddr, method, uri string, headers http.Header, body io
|
||||
client := http.Client{
|
||||
Transport: &http.Transport{
|
||||
DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
|
||||
return net.Dial(parsedAddr.Network, parsedAddr.JoinHostPort(0))
|
||||
return net.Dial(parsedAddr.Network, parsedAddr.JoinAt(0))
|
||||
},
|
||||
},
|
||||
}
|
||||
|
16
listeners.go
16
listeners.go
@ -139,7 +139,7 @@ func (na NetworkAddress) Listen(ctx context.Context, portOffset uint, config net
|
||||
}
|
||||
|
||||
// check to see if plugin provides listener
|
||||
if ln, err := getListenerFromPlugin(ctx, na.Network, na.JoinHostPort(portOffset), config); ln != nil || err != nil {
|
||||
if ln, err := getListenerFromPlugin(ctx, na.Network, na.Host, na.port(), portOffset, config); ln != nil || err != nil {
|
||||
return ln, err
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
|
||||
} else if na.IsFdNetwork() {
|
||||
address = na.Host
|
||||
} else {
|
||||
address = na.JoinHostPort(portOffset)
|
||||
address = na.JoinAt(portOffset)
|
||||
}
|
||||
|
||||
if strings.HasPrefix(na.Network, "ip") {
|
||||
@ -216,9 +216,9 @@ func (na NetworkAddress) IsFdNetwork() bool {
|
||||
return IsFdNetwork(na.Network)
|
||||
}
|
||||
|
||||
// JoinHostPort is like net.JoinHostPort, but where the port
|
||||
// JoinAt is like net.JoinHostPort, but where the port
|
||||
// is StartPort + offset.
|
||||
func (na NetworkAddress) JoinHostPort(offset uint) string {
|
||||
func (na NetworkAddress) JoinAt(offset uint) string {
|
||||
if na.IsUnixNetwork() || na.IsFdNetwork() {
|
||||
return na.Host
|
||||
}
|
||||
@ -431,7 +431,7 @@ func JoinNetworkAddress(network, host, port string) string {
|
||||
//
|
||||
// NOTE: This API is EXPERIMENTAL and may be changed or removed.
|
||||
func (na NetworkAddress) ListenQUIC(ctx context.Context, portOffset uint, config net.ListenConfig, tlsConf *tls.Config) (http3.QUICEarlyListener, error) {
|
||||
lnKey := listenerKey("quic"+na.Network, na.JoinHostPort(portOffset))
|
||||
lnKey := listenerKey("quic"+na.Network, na.JoinAt(portOffset))
|
||||
|
||||
sharedEarlyListener, _, err := listenerPool.LoadOrNew(lnKey, func() (Destructor, error) {
|
||||
lnAny, err := na.Listen(ctx, portOffset, config)
|
||||
@ -658,11 +658,11 @@ var unixSocketsMu sync.Mutex
|
||||
// getListenerFromPlugin returns a listener on the given network and address
|
||||
// if a plugin has registered the network name. It may return (nil, nil) if
|
||||
// no plugin can provide a listener.
|
||||
func getListenerFromPlugin(ctx context.Context, network, addr string, config net.ListenConfig) (any, error) {
|
||||
func getListenerFromPlugin(ctx context.Context, network, host, port string, portOffset uint, config net.ListenConfig) (any, error) {
|
||||
// get listener from plugin if network type is registered
|
||||
if getListener, ok := networkTypes[network]; ok {
|
||||
Log().Debug("getting listener from plugin", zap.String("network", network))
|
||||
return getListener(ctx, network, addr, config)
|
||||
return getListener(ctx, network, host, port, portOffset, config)
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
@ -676,7 +676,7 @@ func listenerKey(network, addr string) string {
|
||||
// The listeners must be capable of overlapping: with Caddy, new configs are loaded
|
||||
// before old ones are unloaded, so listeners may overlap briefly if the configs
|
||||
// both need the same listener. EXPERIMENTAL and subject to change.
|
||||
type ListenerFunc func(ctx context.Context, network, addr string, cfg net.ListenConfig) (any, error)
|
||||
type ListenerFunc func(ctx context.Context, network, host, port string, portOffset uint, cfg net.ListenConfig) (any, error)
|
||||
|
||||
var networkTypes = map[string]ListenerFunc{}
|
||||
|
||||
|
@ -471,7 +471,7 @@ func TestJoinHostPort(t *testing.T) {
|
||||
expect: "/run/php/php7.3-fpm.sock",
|
||||
},
|
||||
} {
|
||||
actual := tc.pa.JoinHostPort(tc.offset)
|
||||
actual := tc.pa.JoinAt(tc.offset)
|
||||
if actual != tc.expect {
|
||||
t.Errorf("Test %d: Expected '%s' but got '%s'", i, tc.expect, actual)
|
||||
}
|
||||
|
@ -508,7 +508,7 @@ func (app *App) Start() error {
|
||||
_, h3ok := protocolsUnique["h3"]
|
||||
|
||||
for portOffset := uint(0); portOffset < listenAddr.PortRangeSize(); portOffset++ {
|
||||
hostport := listenAddr.JoinHostPort(portOffset)
|
||||
hostport := listenAddr.JoinAt(portOffset)
|
||||
|
||||
// enable TLS if there is a policy and if this is not the HTTP port
|
||||
useTLS := len(srv.TLSConnPolicies) > 0 && int(listenAddr.StartPort+portOffset) != app.httpPort()
|
||||
@ -628,7 +628,7 @@ func (app *App) Stop() error {
|
||||
for _, server := range app.Servers {
|
||||
for _, na := range server.addresses {
|
||||
for _, addr := range na.Expand() {
|
||||
if caddy.ListenerUsage(addr.Network, addr.JoinHostPort(0)) < 2 {
|
||||
if caddy.ListenerUsage(addr.Network, addr.JoinAt(0)) < 2 {
|
||||
app.logger.Debug("listener closing and shutdown delay is configured", zap.String("address", addr.String()))
|
||||
server.shutdownAtMu.Lock()
|
||||
server.shutdownAt = scheduledTime
|
||||
|
@ -343,7 +343,7 @@ func (h *Handler) doActiveHealthCheckForAllHosts() {
|
||||
}
|
||||
return
|
||||
}
|
||||
hostAddr := addr.JoinHostPort(0)
|
||||
hostAddr := addr.JoinAt(0)
|
||||
dialAddr := hostAddr
|
||||
if addr.IsUnixNetwork() || addr.IsFdNetwork() {
|
||||
// this will be used as the Host portion of a http.Request URL, and
|
||||
|
@ -119,7 +119,7 @@ func (u *Upstream) fillDialInfo(r *http.Request) (DialInfo, error) {
|
||||
return DialInfo{
|
||||
Upstream: u,
|
||||
Network: addr.Network,
|
||||
Address: addr.JoinHostPort(0),
|
||||
Address: addr.JoinAt(0),
|
||||
Host: addr.Host,
|
||||
Port: strconv.Itoa(int(addr.StartPort)),
|
||||
}, nil
|
||||
|
@ -201,12 +201,12 @@ func (h *HTTPTransport) NewTransport(caddyCtx caddy.Context) (*http.Transport, e
|
||||
}
|
||||
switch netaddr.Network {
|
||||
case "tcp", "tcp4", "tcp6":
|
||||
dialer.LocalAddr, err = net.ResolveTCPAddr(netaddr.Network, netaddr.JoinHostPort(0))
|
||||
dialer.LocalAddr, err = net.ResolveTCPAddr(netaddr.Network, netaddr.JoinAt(0))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "unix", "unixgram", "unixpacket":
|
||||
dialer.LocalAddr, err = net.ResolveUnixAddr(netaddr.Network, netaddr.JoinHostPort(0))
|
||||
dialer.LocalAddr, err = net.ResolveUnixAddr(netaddr.Network, netaddr.JoinAt(0))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -230,7 +230,7 @@ func (h *HTTPTransport) NewTransport(caddyCtx caddy.Context) (*http.Transport, e
|
||||
Dial: func(ctx context.Context, _, _ string) (net.Conn, error) {
|
||||
//nolint:gosec
|
||||
addr := h.Resolver.netAddrs[weakrand.Intn(len(h.Resolver.netAddrs))]
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinHostPort(0))
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinAt(0))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ func (su *SRVUpstreams) Provision(ctx caddy.Context) error {
|
||||
Dial: func(ctx context.Context, _, _ string) (net.Conn, error) {
|
||||
//nolint:gosec
|
||||
addr := su.Resolver.netAddrs[weakrand.Intn(len(su.Resolver.netAddrs))]
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinHostPort(0))
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinAt(0))
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -323,7 +323,7 @@ func (au *AUpstreams) Provision(ctx caddy.Context) error {
|
||||
Dial: func(ctx context.Context, _, _ string) (net.Conn, error) {
|
||||
//nolint:gosec
|
||||
addr := au.Resolver.netAddrs[weakrand.Intn(len(au.Resolver.netAddrs))]
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinHostPort(0))
|
||||
return d.DialContext(ctx, addr.Network, addr.JoinAt(0))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -390,7 +390,7 @@ func cmdRespond(fl caddycmd.Flags) (int, error) {
|
||||
if !listenAddr.IsUnixNetwork() && !listenAddr.IsFdNetwork() {
|
||||
listenAddrs := make([]string, 0, listenAddr.PortRangeSize())
|
||||
for offset := uint(0); offset < listenAddr.PortRangeSize(); offset++ {
|
||||
listenAddrs = append(listenAddrs, listenAddr.JoinHostPort(offset))
|
||||
listenAddrs = append(listenAddrs, listenAddr.JoinAt(offset))
|
||||
}
|
||||
|
||||
for i, addr := range listenAddrs {
|
||||
|
@ -308,7 +308,7 @@ func (ash Handler) makeClient() (acme.Client, error) {
|
||||
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
||||
//nolint:gosec
|
||||
addr := ash.resolvers[weakrand.Intn(len(ash.resolvers))]
|
||||
return dialer.DialContext(ctx, addr.Network, addr.JoinHostPort(0))
|
||||
return dialer.DialContext(ctx, addr.Network, addr.JoinAt(0))
|
||||
},
|
||||
}
|
||||
} else {
|
||||
|
@ -212,7 +212,7 @@ func (reconn *redialerConn) Write(b []byte) (n int, err error) {
|
||||
}
|
||||
|
||||
func (reconn *redialerConn) dial() (net.Conn, error) {
|
||||
return net.DialTimeout(reconn.nw.addr.Network, reconn.nw.addr.JoinHostPort(0), reconn.timeout)
|
||||
return net.DialTimeout(reconn.nw.addr.Network, reconn.nw.addr.JoinAt(0), reconn.timeout)
|
||||
}
|
||||
|
||||
// Interface guards
|
||||
|
Loading…
x
Reference in New Issue
Block a user