toggles for ipv4 and ipv6

This commit is contained in:
vmorganp
2024-08-14 00:33:52 -07:00
parent 79ba9d0dbc
commit 89aa33ebbd
4 changed files with 54 additions and 10 deletions

View File

@@ -87,7 +87,7 @@ Group properties that can be changed include:
#### Verbose Logging #### Verbose Logging
If you would like more verbose logging, you can apply the environment variable `VERBOSE=true` to lazytainer like so For more verbose logging, you can apply the environment variable `VERBOSE=true` to lazytainer:
```yaml ```yaml
lazytainer: lazytainer:
@@ -96,6 +96,18 @@ lazytainer:
- VERBOSE=true - VERBOSE=true
``` ```
#### ipv4/ipv6 toggles
To disable ipv4 or ipv6, pass environment variables:
```yaml
lazytainer:
# ... configuration omitted for brevity
environment:
- IPV6_DISABLED=true
- IPV4_DISABLED=true
```
#### Volumes #### Volumes
If using lazytainer, you MUST provide the following volume to lazytainer If using lazytainer, you MUST provide the following volume to lazytainer

View File

@@ -10,6 +10,8 @@ services:
# build: . # build: .
environment: environment:
- VERBOSE=true # probably set this to false unless you're debugging or doing the initial demo - VERBOSE=true # probably set this to false unless you're debugging or doing the initial demo
- IPV4_DISABLED=false
- IPV6_DISABLED=false
ports: ports:
- 81:81 - 81:81
- 82:82 - 82:82

View File

@@ -148,17 +148,29 @@ func (lg LazyGroup) getRxPackets(packetCount *int) {
func (lg LazyGroup) getActiveClients() int { func (lg LazyGroup) getActiveClients() int {
// get active clients // get active clients
var allSocks []netstat.SockTabEntry var allSocks []netstat.SockTabEntry
udpSocks, err := netstat.UDPSocks(netstat.NoopFilter)
check(err) // ipv4
udp6Socks, err := netstat.UDP6Socks(netstat.NoopFilter) if ipv6Enabled {
check(err) udpSocks, err := netstat.UDPSocks(netstat.NoopFilter)
tcpSocks, err := netstat.TCPSocks(netstat.NoopFilter) check(err)
check(err) allSocks = append(allSocks, udpSocks...)
tcp6Socks, err := netstat.TCP6Socks(netstat.NoopFilter) tcpSocks, err := netstat.TCPSocks(netstat.NoopFilter)
check(err) check(err)
allSocks = append(allSocks, tcpSocks...)
}
// ipv6
if ipv6Enabled {
udp6Socks, err := netstat.UDP6Socks(netstat.NoopFilter)
check(err)
allSocks = append(allSocks, udp6Socks...)
tcp6Socks, err := netstat.TCP6Socks(netstat.NoopFilter)
check(err)
allSocks = append(allSocks, tcp6Socks...)
}
activeClients := 0 activeClients := 0
for _, socketEntry := range append(append(append(append(allSocks, udp6Socks...), tcp6Socks...), tcpSocks...), udpSocks...) { for _, socketEntry := range allSocks {
if socketEntry.State.String() == "ESTABLISHED" { if socketEntry.State.String() == "ESTABLISHED" {
for _, aPort := range lg.ports { for _, aPort := range lg.ports {
if strconv.FormatUint(uint64(aPort), 10) == fmt.Sprintf("%v", socketEntry.LocalAddr.Port) { if strconv.FormatUint(uint64(aPort), 10) == fmt.Sprintf("%v", socketEntry.LocalAddr.Port) {

View File

@@ -17,6 +17,8 @@ import (
var infoLogger *log.Logger var infoLogger *log.Logger
var debugLogger *log.Logger var debugLogger *log.Logger
var dockerClient *client.Client var dockerClient *client.Client
var ipv6Enabled bool
var ipv4Enabled bool
func main() { func main() {
flags := log.LstdFlags | log.Lshortfile flags := log.LstdFlags | log.Lshortfile
@@ -29,6 +31,22 @@ func main() {
debugLogger.SetOutput(io.Discard) debugLogger.SetOutput(io.Discard)
} }
// if the IPV6_DISABLED flag isn't set to true, leave ipv6 enabled
envIpv6, existsEnvDisableIpv6 := os.LookupEnv("IPV6_DISABLED")
if existsEnvDisableIpv6 && strings.ToLower(envIpv6) != "true" {
ipv6Enabled = true
} else {
ipv6Enabled = false
}
// if the IPV4_DISABLED flag isn't set to true, leave ipv4 enabled
envIpv4, existsEnvDisableIpv4 := os.LookupEnv("IPV4_DISABLED")
if existsEnvDisableIpv4 && strings.ToLower(envIpv4) != "true" {
ipv4Enabled = true
} else {
ipv4Enabled = false
}
// configure groups. eventually it might be nice to have file based config as well. // configure groups. eventually it might be nice to have file based config as well.
groups := configureFromLabels() groups := configureFromLabels()
for _, v := range groups { for _, v := range groups {