mirror of
https://github.com/qdm12/gluetun.git
synced 2026-06-20 02:14:08 +02:00
hotfix(portforward): log both external and internal ports when they diverge
- useful for ProtonVPN only - clarify things up for the user
This commit is contained in:
@@ -2,6 +2,10 @@ package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"maps"
|
||||
"slices"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -20,3 +24,28 @@ func portsToString(ports []uint16) (s string) {
|
||||
" and " + portStrings[len(portStrings)-1]
|
||||
}
|
||||
}
|
||||
|
||||
func portPairsToString(internalToExternalPort map[uint16]uint16) (s string) {
|
||||
switch len(internalToExternalPort) {
|
||||
case 0:
|
||||
return "no port forwarded"
|
||||
case 1:
|
||||
internal := slices.Collect(maps.Keys(internalToExternalPort))[0]
|
||||
return "port forwarded is " + portPairToString(internal, internalToExternalPort[internal])
|
||||
default:
|
||||
portStrings := make([]string, 0, len(internalToExternalPort))
|
||||
for internal, external := range internalToExternalPort {
|
||||
portStrings = append(portStrings, portPairToString(internal, external))
|
||||
}
|
||||
sort.StringSlice(portStrings).Sort()
|
||||
return "ports forwarded are " + strings.Join(portStrings[:len(portStrings)-1], ", ") +
|
||||
" and " + portStrings[len(portStrings)-1]
|
||||
}
|
||||
}
|
||||
|
||||
func portPairToString(internal, external uint16) string {
|
||||
if internal == external {
|
||||
return strconv.FormatUint(uint64(external), 10)
|
||||
}
|
||||
return fmt.Sprintf("%d (internal port %d)", external, internal)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user