Don't listen on disabled addresses in mDNS or web server.

This commit is contained in:
Marc Brooks 2025-09-09 01:35:24 -05:00
parent 4e45eb3993
commit 41592e4bcf
No known key found for this signature in database
GPG Key ID: 583A6AF2D6AE1DC6
3 changed files with 25 additions and 12 deletions

View File

@ -56,13 +56,12 @@ type NetworkConfig struct {
} }
func (c *NetworkConfig) GetMDNSMode() *mdns.MDNSListenOptions { func (c *NetworkConfig) GetMDNSMode() *mdns.MDNSListenOptions {
mode := c.MDNSMode.String
listenOptions := &mdns.MDNSListenOptions{ listenOptions := &mdns.MDNSListenOptions{
IPv4: true, IPv4: c.IPv4Mode.String != "disabled",
IPv6: true, IPv6: c.IPv6Mode.String != "disabled",
} }
switch mode { switch c.MDNSMode.String {
case "ipv4_only": case "ipv4_only":
listenOptions.IPv6 = false listenOptions.IPv6 = false
case "ipv6_only": case "ipv6_only":

View File

@ -13,10 +13,7 @@ func initMdns() error {
networkState.GetHostname(), networkState.GetHostname(),
networkState.GetFQDN(), networkState.GetFQDN(),
}, },
ListenOptions: &mdns.MDNSListenOptions{ ListenOptions: config.NetworkConfig.GetMDNSMode(),
IPv4: true,
IPv6: true,
},
}) })
if err != nil { if err != nil {
return err return err

25
web.go
View File

@ -562,14 +562,31 @@ func RunWebServer() {
r := setupRouter() r := setupRouter()
// Determine the binding address based on the config // Determine the binding address based on the config
bindAddress := ":80" // Default to all interfaces var bindAddress string
listenPort := 80 // default port
useIPv4 := config.NetworkConfig.IPv4Mode.String != "disabled"
useIPv6 := config.NetworkConfig.IPv6Mode.String != "disabled"
if config.LocalLoopbackOnly { if config.LocalLoopbackOnly {
bindAddress = "localhost:80" // Loopback only (both IPv4 and IPv6) if useIPv4 && useIPv6 {
bindAddress = fmt.Sprintf("localhost:%d", listenPort)
} else if useIPv4 {
bindAddress = fmt.Sprintf("127.0.0.1:%d", listenPort)
} else if useIPv6 {
bindAddress = fmt.Sprintf("[::1]:%d", listenPort)
}
} else {
if useIPv4 && useIPv6 {
bindAddress = fmt.Sprintf(":%d", listenPort)
} else if useIPv4 {
bindAddress = fmt.Sprintf("0.0.0.0:%d", listenPort)
} else if useIPv6 {
bindAddress = fmt.Sprintf("[::]:%d", listenPort)
}
} }
logger.Info().Str("bindAddress", bindAddress).Bool("loopbackOnly", config.LocalLoopbackOnly).Msg("Starting web server") logger.Info().Str("bindAddress", bindAddress).Bool("loopbackOnly", config.LocalLoopbackOnly).Msg("Starting web server")
err := r.Run(bindAddress) if err := r.Run(bindAddress); err != nil {
if err != nil {
panic(err) panic(err)
} }
} }