mirror of
https://github.com/caddyserver/caddy.git
synced 2025-12-08 06:09:53 +00:00
to_device
This commit is contained in:
parent
4435af28d3
commit
b3b711b2bc
3 changed files with 86 additions and 83 deletions
|
|
@ -321,8 +321,8 @@ func (st *ServerType) listenersForServerBlockAddress(sblock serverBlock, addr Ad
|
|||
} else {
|
||||
lnCfgVals = []bindOptions{{
|
||||
addresses: []string{""},
|
||||
interfaces: nil,
|
||||
protocols: nil,
|
||||
to_device: false,
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
|
@ -332,9 +332,9 @@ func (st *ServerType) listenersForServerBlockAddress(sblock serverBlock, addr Ad
|
|||
interfaces := map[string][]net.Addr{}
|
||||
for _, lnCfgVal := range lnCfgVals {
|
||||
lnAddresses := make([]string, 0, len(lnCfgVal.addresses))
|
||||
lnAddresses = append(lnAddresses, lnCfgVal.addresses...)
|
||||
for _, lnIface := range lnCfgVal.interfaces {
|
||||
lnNetw, lnDevice, _, err := caddy.SplitNetworkAddress(lnIface)
|
||||
for _, lnAddress := range lnCfgVal.addresses {
|
||||
if lnCfgVal.to_device {
|
||||
lnNetw, lnDevice, _, err := caddy.SplitNetworkAddress(lnAddress)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("splitting listener interface: %v", err)
|
||||
}
|
||||
|
|
@ -403,6 +403,9 @@ func (st *ServerType) listenersForServerBlockAddress(sblock serverBlock, addr Ad
|
|||
for _, lnIfaceAddress := range lnIfaceAddresses {
|
||||
lnAddresses = append(lnAddresses, caddy.JoinNetworkAddress(lnNetw, lnIfaceAddress, ""))
|
||||
}
|
||||
} else {
|
||||
lnAddresses = append(lnAddresses, lnAddress)
|
||||
}
|
||||
}
|
||||
for _, lnAddr := range lnAddresses {
|
||||
lnNetw, lnHost, _, err := caddy.SplitNetworkAddress(lnAddr)
|
||||
|
|
@ -427,8 +430,8 @@ func (st *ServerType) listenersForServerBlockAddress(sblock serverBlock, addr Ad
|
|||
|
||||
type bindOptions struct {
|
||||
addresses []string
|
||||
interfaces []string
|
||||
protocols []string
|
||||
to_device bool
|
||||
}
|
||||
|
||||
// Address represents a site address. It contains
|
||||
|
|
|
|||
|
|
@ -63,21 +63,21 @@ func init() {
|
|||
// }]
|
||||
func parseBind(h Helper) ([]ConfigValue, error) {
|
||||
h.Next() // consume directive name
|
||||
var addresses, interfaces, protocols []string
|
||||
var (
|
||||
addresses, protocols []string
|
||||
to_device bool
|
||||
)
|
||||
addresses = h.RemainingArgs()
|
||||
|
||||
for h.NextBlock(0) {
|
||||
switch h.Val() {
|
||||
case "interfaces":
|
||||
interfaces = h.RemainingArgs()
|
||||
if len(interfaces) == 0 {
|
||||
return nil, h.Errf("interfaces requires one or more arguments")
|
||||
}
|
||||
case "protocols":
|
||||
protocols = h.RemainingArgs()
|
||||
if len(protocols) == 0 {
|
||||
return nil, h.Errf("protocols requires one or more arguments")
|
||||
}
|
||||
case "to_device":
|
||||
to_device = true
|
||||
default:
|
||||
return nil, h.Errf("unknown subdirective: %s", h.Val())
|
||||
}
|
||||
|
|
@ -85,8 +85,8 @@ func parseBind(h Helper) ([]ConfigValue, error) {
|
|||
|
||||
return []ConfigValue{{Class: "bind", Value: bindOptions{
|
||||
addresses: addresses,
|
||||
interfaces: interfaces,
|
||||
protocols: protocols,
|
||||
to_device: to_device,
|
||||
}}}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -307,7 +307,10 @@ func parseOptSingleString(d *caddyfile.Dispenser, _ any) (any, error) {
|
|||
|
||||
func parseOptDefaultBind(d *caddyfile.Dispenser, _ any) (any, error) {
|
||||
d.Next() // consume option name
|
||||
var addresses, interfaces, protocols []string
|
||||
var (
|
||||
addresses, protocols []string
|
||||
to_device bool
|
||||
)
|
||||
addresses = d.RemainingArgs()
|
||||
|
||||
if len(addresses) == 0 {
|
||||
|
|
@ -316,16 +319,13 @@ func parseOptDefaultBind(d *caddyfile.Dispenser, _ any) (any, error) {
|
|||
|
||||
for d.NextBlock(0) {
|
||||
switch d.Val() {
|
||||
case "interfaces":
|
||||
interfaces = d.RemainingArgs()
|
||||
if len(interfaces) == 0 {
|
||||
return nil, d.Errf("interfaces requires one or more arguments")
|
||||
}
|
||||
case "protocols":
|
||||
protocols = d.RemainingArgs()
|
||||
if len(protocols) == 0 {
|
||||
return nil, d.Errf("protocols requires one or more arguments")
|
||||
}
|
||||
case "to_device":
|
||||
to_device = true
|
||||
default:
|
||||
return nil, d.Errf("unknown subdirective: %s", d.Val())
|
||||
}
|
||||
|
|
@ -333,8 +333,8 @@ func parseOptDefaultBind(d *caddyfile.Dispenser, _ any) (any, error) {
|
|||
|
||||
return []ConfigValue{{Class: "bind", Value: bindOptions{
|
||||
addresses: addresses,
|
||||
interfaces: interfaces,
|
||||
protocols: protocols,
|
||||
to_device: to_device,
|
||||
}}}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue