refactor(misc): small code refactor
Some checks failed
Docker Image CI (socket-proxy) / build (push) Has been cancelled

This commit is contained in:
yusing 2025-07-13 14:33:58 +08:00
parent a954ac8946
commit e3b53a548d
3 changed files with 66 additions and 71 deletions

View file

@ -34,16 +34,15 @@ func (c *Config) Client() *Client {
func (c *Config) Init() gperr.Error { func (c *Config) Init() gperr.Error {
var tr *http.Transport var tr *http.Transport
if c.NoTLSVerify { if c.NoTLSVerify {
// user specified
tr = gphttp.NewTransportWithTLSConfig(&tls.Config{ tr = gphttp.NewTransportWithTLSConfig(&tls.Config{
InsecureSkipVerify: true, InsecureSkipVerify: true, //nolint:gosec
}) })
} else { } else {
tr = gphttp.NewTransport() tr = gphttp.NewTransport()
} }
if strings.HasSuffix(c.URL, "/") { c.URL = strings.TrimSuffix(c.URL, "/")
c.URL = c.URL[:len(c.URL)-1]
}
if !strings.HasSuffix(c.URL, "/api2/json") { if !strings.HasSuffix(c.URL, "/api2/json") {
c.URL += "/api2/json" c.URL += "/api2/json"
} }

View file

@ -9,7 +9,6 @@ import (
D "github.com/yusing/go-proxy/internal/docker" D "github.com/yusing/go-proxy/internal/docker"
"github.com/yusing/go-proxy/internal/route" "github.com/yusing/go-proxy/internal/route"
T "github.com/yusing/go-proxy/internal/route/types" T "github.com/yusing/go-proxy/internal/route/types"
. "github.com/yusing/go-proxy/internal/utils/testing"
expect "github.com/yusing/go-proxy/internal/utils/testing" expect "github.com/yusing/go-proxy/internal/utils/testing"
) )
@ -30,7 +29,7 @@ func makeRoutes(cont *container.SummaryTrimmed, dockerHostIP ...string) route.Ro
} }
cont.ID = "test" cont.ID = "test"
p.name = "test" p.name = "test"
routes := Must(p.routesFromContainerLabels(D.FromDocker(cont, host))) routes := expect.Must(p.routesFromContainerLabels(D.FromDocker(cont, host)))
for _, r := range routes { for _, r := range routes {
r.Finalize() r.Finalize()
} }
@ -39,7 +38,7 @@ func makeRoutes(cont *container.SummaryTrimmed, dockerHostIP ...string) route.Ro
func TestExplicitOnly(t *testing.T) { func TestExplicitOnly(t *testing.T) {
p := NewDockerProvider("a!", "") p := NewDockerProvider("a!", "")
ExpectTrue(t, p.IsExplicitOnly()) expect.True(t, p.IsExplicitOnly())
} }
func TestApplyLabel(t *testing.T) { func TestApplyLabel(t *testing.T) {
@ -146,18 +145,18 @@ func TestApplyLabelWithAlias(t *testing.T) {
}, },
}) })
a, ok := entries["a"] a, ok := entries["a"]
ExpectTrue(t, ok) expect.True(t, ok)
b, ok := entries["b"] b, ok := entries["b"]
ExpectTrue(t, ok) expect.True(t, ok)
c, ok := entries["c"] c, ok := entries["c"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, a.Scheme, "http") expect.Equal(t, a.Scheme, "http")
ExpectEqual(t, a.Port.Proxy, 3333) expect.Equal(t, a.Port.Proxy, 3333)
ExpectEqual(t, a.NoTLSVerify, true) expect.Equal(t, a.NoTLSVerify, true)
ExpectEqual(t, b.Scheme, "http") expect.Equal(t, b.Scheme, "http")
ExpectEqual(t, b.Port.Proxy, 1234) expect.Equal(t, b.Port.Proxy, 1234)
ExpectEqual(t, c.Scheme, "https") expect.Equal(t, c.Scheme, "https")
} }
func TestApplyLabelWithRef(t *testing.T) { func TestApplyLabelWithRef(t *testing.T) {
@ -174,18 +173,18 @@ func TestApplyLabelWithRef(t *testing.T) {
}, },
}) })
a, ok := entries["a"] a, ok := entries["a"]
ExpectTrue(t, ok) expect.True(t, ok)
b, ok := entries["b"] b, ok := entries["b"]
ExpectTrue(t, ok) expect.True(t, ok)
c, ok := entries["c"] c, ok := entries["c"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, a.Scheme, "http") expect.Equal(t, a.Scheme, "http")
ExpectEqual(t, a.Host, "localhost") expect.Equal(t, a.Host, "localhost")
ExpectEqual(t, a.Port.Proxy, 4444) expect.Equal(t, a.Port.Proxy, 4444)
ExpectEqual(t, b.Port.Proxy, 9999) expect.Equal(t, b.Port.Proxy, 9999)
ExpectEqual(t, c.Scheme, "https") expect.Equal(t, c.Scheme, "https")
ExpectEqual(t, c.Port.Proxy, 1111) expect.Equal(t, c.Port.Proxy, 1111)
} }
func TestApplyLabelWithRefIndexError(t *testing.T) { func TestApplyLabelWithRefIndexError(t *testing.T) {
@ -201,7 +200,7 @@ func TestApplyLabelWithRefIndexError(t *testing.T) {
}, "") }, "")
var p DockerProvider var p DockerProvider
_, err := p.routesFromContainerLabels(c) _, err := p.routesFromContainerLabels(c)
ExpectError(t, ErrAliasRefIndexOutOfRange, err) expect.ErrorIs(t, ErrAliasRefIndexOutOfRange, err)
c = D.FromDocker(&container.SummaryTrimmed{ c = D.FromDocker(&container.SummaryTrimmed{
Names: dummyNames, Names: dummyNames,
@ -212,7 +211,7 @@ func TestApplyLabelWithRefIndexError(t *testing.T) {
}, },
}, "") }, "")
_, err = p.routesFromContainerLabels(c) _, err = p.routesFromContainerLabels(c)
ExpectError(t, ErrAliasRefIndexOutOfRange, err) expect.ErrorIs(t, ErrAliasRefIndexOutOfRange, err)
} }
func TestDynamicAliases(t *testing.T) { func TestDynamicAliases(t *testing.T) {
@ -228,14 +227,14 @@ func TestDynamicAliases(t *testing.T) {
entries := makeRoutes(c) entries := makeRoutes(c)
r, ok := entries["app1"] r, ok := entries["app1"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, r.Scheme, "http") expect.Equal(t, r.Scheme, "http")
ExpectEqual(t, r.Port.Proxy, 1234) expect.Equal(t, r.Port.Proxy, 1234)
r, ok = entries["app1_backend"] r, ok = entries["app1_backend"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, r.Scheme, "http") expect.Equal(t, r.Scheme, "http")
ExpectEqual(t, r.Port.Proxy, 5678) expect.Equal(t, r.Port.Proxy, 5678)
} }
func TestDisableHealthCheck(t *testing.T) { func TestDisableHealthCheck(t *testing.T) {
@ -248,24 +247,24 @@ func TestDisableHealthCheck(t *testing.T) {
}, },
} }
r, ok := makeRoutes(c)["a"] r, ok := makeRoutes(c)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectFalse(t, r.UseHealthCheck()) expect.False(t, r.UseHealthCheck())
} }
func TestPublicIPLocalhost(t *testing.T) { func TestPublicIPLocalhost(t *testing.T) {
c := &container.SummaryTrimmed{Names: dummyNames, State: "running"} c := &container.SummaryTrimmed{Names: dummyNames, State: "running"}
r, ok := makeRoutes(c)["a"] r, ok := makeRoutes(c)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, r.Container.PublicHostname, "127.0.0.1") expect.Equal(t, r.Container.PublicHostname, "127.0.0.1")
ExpectEqual(t, r.Host, r.Container.PublicHostname) expect.Equal(t, r.Host, r.Container.PublicHostname)
} }
func TestPublicIPRemote(t *testing.T) { func TestPublicIPRemote(t *testing.T) {
c := &container.SummaryTrimmed{Names: dummyNames, State: "running"} c := &container.SummaryTrimmed{Names: dummyNames, State: "running"}
raw, ok := makeRoutes(c, testIP)["a"] raw, ok := makeRoutes(c, testIP)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, raw.Container.PublicHostname, testIP) expect.Equal(t, raw.Container.PublicHostname, testIP)
ExpectEqual(t, raw.Host, raw.Container.PublicHostname) expect.Equal(t, raw.Host, raw.Container.PublicHostname)
} }
func TestPrivateIPLocalhost(t *testing.T) { func TestPrivateIPLocalhost(t *testing.T) {
@ -280,9 +279,9 @@ func TestPrivateIPLocalhost(t *testing.T) {
}, },
} }
r, ok := makeRoutes(c)["a"] r, ok := makeRoutes(c)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, r.Container.PrivateHostname, testDockerIP) expect.Equal(t, r.Container.PrivateHostname, testDockerIP)
ExpectEqual(t, r.Host, r.Container.PrivateHostname) expect.Equal(t, r.Host, r.Container.PrivateHostname)
} }
func TestPrivateIPRemote(t *testing.T) { func TestPrivateIPRemote(t *testing.T) {
@ -298,10 +297,10 @@ func TestPrivateIPRemote(t *testing.T) {
}, },
} }
r, ok := makeRoutes(c, testIP)["a"] r, ok := makeRoutes(c, testIP)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectEqual(t, r.Container.PrivateHostname, "") expect.Equal(t, r.Container.PrivateHostname, "")
ExpectEqual(t, r.Container.PublicHostname, testIP) expect.Equal(t, r.Container.PublicHostname, testIP)
ExpectEqual(t, r.Host, r.Container.PublicHostname) expect.Equal(t, r.Host, r.Container.PublicHostname)
} }
func TestStreamDefaultValues(t *testing.T) { func TestStreamDefaultValues(t *testing.T) {
@ -325,22 +324,22 @@ func TestStreamDefaultValues(t *testing.T) {
t.Run("local", func(t *testing.T) { t.Run("local", func(t *testing.T) {
r, ok := makeRoutes(cont)["a"] r, ok := makeRoutes(cont)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectNoError(t, r.Validate()) expect.NoError(t, r.Validate())
ExpectEqual(t, r.Scheme, T.Scheme("udp")) expect.Equal(t, r.Scheme, T.Scheme("udp"))
ExpectEqual(t, r.TargetURL().Hostname(), privIP) expect.Equal(t, r.TargetURL().Hostname(), privIP)
ExpectEqual(t, r.Port.Listening, 0) expect.Equal(t, r.Port.Listening, 0)
ExpectEqual(t, r.Port.Proxy, int(privPort)) expect.Equal(t, r.Port.Proxy, int(privPort))
}) })
t.Run("remote", func(t *testing.T) { t.Run("remote", func(t *testing.T) {
r, ok := makeRoutes(cont, testIP)["a"] r, ok := makeRoutes(cont, testIP)["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectNoError(t, r.Validate()) expect.NoError(t, r.Validate())
ExpectEqual(t, r.Scheme, T.Scheme("udp")) expect.Equal(t, r.Scheme, T.Scheme("udp"))
ExpectEqual(t, r.TargetURL().Hostname(), testIP) expect.Equal(t, r.TargetURL().Hostname(), testIP)
ExpectEqual(t, r.Port.Listening, 0) expect.Equal(t, r.Port.Listening, 0)
ExpectEqual(t, r.Port.Proxy, int(pubPort)) expect.Equal(t, r.Port.Proxy, int(pubPort))
}) })
} }
@ -353,8 +352,8 @@ func TestExplicitExclude(t *testing.T) {
"proxy.a.no_tls_verify": "true", "proxy.a.no_tls_verify": "true",
}, },
}, "")["a"] }, "")["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectTrue(t, r.ShouldExclude()) expect.True(t, r.ShouldExclude())
} }
func TestImplicitExcludeDatabase(t *testing.T) { func TestImplicitExcludeDatabase(t *testing.T) {
@ -365,8 +364,8 @@ func TestImplicitExcludeDatabase(t *testing.T) {
{Destination: "/var/lib/postgresql/data"}, {Destination: "/var/lib/postgresql/data"},
}, },
})["a"] })["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectTrue(t, r.ShouldExclude()) expect.True(t, r.ShouldExclude())
}) })
t.Run("exposed port detection", func(t *testing.T) { t.Run("exposed port detection", func(t *testing.T) {
r, ok := makeRoutes(&container.SummaryTrimmed{ r, ok := makeRoutes(&container.SummaryTrimmed{
@ -375,7 +374,7 @@ func TestImplicitExcludeDatabase(t *testing.T) {
{Type: "tcp", PrivatePort: 5432, PublicPort: 5432}, {Type: "tcp", PrivatePort: 5432, PublicPort: 5432},
}, },
})["a"] })["a"]
ExpectTrue(t, ok) expect.True(t, ok)
ExpectTrue(t, r.ShouldExclude()) expect.True(t, r.ShouldExclude())
}) })
} }

View file

@ -35,11 +35,8 @@ func DefaultTimeNow() time.Time {
func init() { func init() {
go func() { go func() {
for { for range timeNowTicker.C {
select {
case <-timeNowTicker.C:
shouldCallTimeNow.Store(true) shouldCallTimeNow.Store(true)
} }
}
}() }()
} }