Changes to L1 router to also pass the protocol it is routing.

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-08-03 11:55:53 -03:00
parent e0626f4176
commit 3906bd3b57
5 changed files with 69 additions and 25 deletions

View File

@@ -16,7 +16,7 @@ import (
"github.com/play-with-docker/play-with-docker/router"
)
func director(host string) (*net.TCPAddr, error) {
func director(protocol router.Protocol, host string) (*net.TCPAddr, error) {
info, err := router.DecodeHost(host)
if err != nil {
return nil, err
@@ -29,8 +29,15 @@ func director(host string) (*net.TCPAddr, error) {
}
if port == 0 {
// TODO: Should default depending on the protocol
port = 80
if protocol == router.ProtocolHTTP {
port = 80
} else if protocol == router.ProtocolHTTPS {
port = 443
} else if protocol == router.ProtocolSSH {
port = 22
} else if protocol == router.ProtocolDNS {
port = 53
}
}
t, err := net.ResolveTCPAddr("tcp4", fmt.Sprintf("%s:%d", info.InstanceIP, port))

View File

@@ -3,42 +3,55 @@ package main
import (
"testing"
"github.com/play-with-docker/play-with-docker/router"
"github.com/stretchr/testify/assert"
)
func TestDirector(t *testing.T) {
addr, err := director("ip10-0-0-1-aabb-8080.foo.bar")
addr, err := director(router.ProtocolHTTP, "ip10-0-0-1-aabb-8080.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:8080", addr.String())
addr, err = director("ip10-0-0-1-aabb.foo.bar")
addr, err = director(router.ProtocolHTTP, "ip10-0-0-1-aabb.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:80", addr.String())
addr, err = director("ip10-0-0-1-aabb.foo.bar:9090")
addr, err = director(router.ProtocolHTTPS, "ip10-0-0-1-aabb.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:443", addr.String())
addr, err = director(router.ProtocolSSH, "ip10-0-0-1-aabb.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:22", addr.String())
addr, err = director(router.ProtocolDNS, "ip10-0-0-1-aabb.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:53", addr.String())
addr, err = director(router.ProtocolHTTP, "ip10-0-0-1-aabb.foo.bar:9090")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:9090", addr.String())
addr, err = director("ip10-0-0-1-aabb-2222.foo.bar:9090")
addr, err = director(router.ProtocolHTTP, "ip10-0-0-1-aabb-2222.foo.bar:9090")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:2222", addr.String())
addr, err = director("lala.ip10-0-0-1-aabb-2222.foo.bar")
addr, err = director(router.ProtocolHTTP, "lala.ip10-0-0-1-aabb-2222.foo.bar")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:2222", addr.String())
addr, err = director("lala.ip10-0-0-1-aabb-2222")
addr, err = director(router.ProtocolHTTP, "lala.ip10-0-0-1-aabb-2222")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:2222", addr.String())
addr, err = director("ip10-0-0-1-aabb-2222")
addr, err = director(router.ProtocolHTTP, "ip10-0-0-1-aabb-2222")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:2222", addr.String())
addr, err = director("ip10-0-0-1-aabb")
addr, err = director(router.ProtocolHTTP, "ip10-0-0-1-aabb")
assert.Nil(t, err)
assert.Equal(t, "10.0.0.1:80", addr.String())
_, err = director("lala10-0-0-1-aabb.foo.bar")
_, err = director(router.ProtocolHTTP, "lala10-0-0-1-aabb.foo.bar")
assert.NotNil(t, err)
}