mirror of
https://github.com/qdm12/gluetun.git
synced 2026-06-10 22:32:14 +02:00
f8a677a424
- useful for ProtonVPN only - clarify things up for the user
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"fmt"
|
|
"maps"
|
|
"slices"
|
|
"sort"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func portsToString(ports []uint16) (s string) {
|
|
switch len(ports) {
|
|
case 0:
|
|
return "no port forwarded"
|
|
case 1:
|
|
return "port forwarded is " + fmt.Sprint(int(ports[0]))
|
|
default:
|
|
portStrings := make([]string, len(ports))
|
|
for i, port := range ports {
|
|
portStrings[i] = fmt.Sprint(int(port))
|
|
}
|
|
return "ports forwarded are " + strings.Join(portStrings[:len(portStrings)-1], ", ") +
|
|
" 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)
|
|
}
|