mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
feat: improved port selection
This commit is contained in:
parent
ccb4639f43
commit
5f780f4902
2 changed files with 30 additions and 6 deletions
|
@ -406,10 +406,7 @@ func (r *Route) Finalize() {
|
|||
if pp == 0 {
|
||||
switch {
|
||||
case isDocker:
|
||||
pp = lowestPort(cont.PrivatePortMapping)
|
||||
if pp == 0 {
|
||||
pp = lowestPort(cont.PublicPortMapping)
|
||||
}
|
||||
pp = preferredPort(cont.PrivatePortMapping)
|
||||
case r.Scheme == "https":
|
||||
pp = 443
|
||||
default:
|
||||
|
@ -519,9 +516,24 @@ func (r *Route) FinalizeHomepageConfig() {
|
|||
}
|
||||
}
|
||||
|
||||
func lowestPort(ports map[int]container.Port) (res int) {
|
||||
var preferredPortOrder = []int{
|
||||
80,
|
||||
8080,
|
||||
3000,
|
||||
8000,
|
||||
443,
|
||||
8443,
|
||||
}
|
||||
|
||||
func preferredPort(portMapping map[int]container.Port) (res int) {
|
||||
for _, port := range preferredPortOrder {
|
||||
if _, ok := portMapping[port]; ok {
|
||||
return port
|
||||
}
|
||||
}
|
||||
// fallback to lowest port
|
||||
cmp := (uint16)(65535)
|
||||
for port, v := range ports {
|
||||
for port, v := range portMapping {
|
||||
if v.PrivatePort < cmp {
|
||||
cmp = v.PrivatePort
|
||||
res = port
|
||||
|
|
|
@ -3,6 +3,7 @@ package route
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/yusing/go-proxy/internal/common"
|
||||
"github.com/yusing/go-proxy/internal/docker"
|
||||
loadbalance "github.com/yusing/go-proxy/internal/net/gphttp/loadbalancer/types"
|
||||
|
@ -136,3 +137,14 @@ func TestRouteValidate(t *testing.T) {
|
|||
expect.NotNil(t, r.HealthCheck)
|
||||
})
|
||||
}
|
||||
|
||||
func TestPreferredPort(t *testing.T) {
|
||||
ports := map[int]container.Port{
|
||||
22: {PrivatePort: 22},
|
||||
1000: {PrivatePort: 1000},
|
||||
3000: {PrivatePort: 80},
|
||||
}
|
||||
|
||||
port := preferredPort(ports)
|
||||
expect.Equal(t, port, 3000)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue