|
|
|
@ -12,6 +12,7 @@ import (
|
|
|
|
|
|
|
|
|
|
"github.com/fatedier/frp/client" |
|
|
|
|
"github.com/fatedier/frp/server" |
|
|
|
|
"github.com/fatedier/frp/utils/net" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
@ -52,6 +53,8 @@ var (
|
|
|
|
|
ProxyUdpPortNotAllowed string = "udp_port_not_allowed" |
|
|
|
|
ProxyUdpPortNormal string = "udp_port_normal" |
|
|
|
|
ProxyUdpRandomPort string = "udp_random_port" |
|
|
|
|
|
|
|
|
|
ProxyHttpProxy string = "http_proxy" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func init() { |
|
|
|
@ -122,67 +125,67 @@ func TestStcp(t *testing.T) {
|
|
|
|
|
func TestHttp(t *testing.T) { |
|
|
|
|
assert := assert.New(t) |
|
|
|
|
// web01
|
|
|
|
|
code, body, err := sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "", nil) |
|
|
|
|
code, body, err := sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_NORMAL_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// web02
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test2.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test2.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_NORMAL_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// error host header
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "errorhost.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "errorhost.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(404, code) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// web03
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test3.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test3.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_NORMAL_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d/foo", TEST_HTTP_FRP_PORT), "test3.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d/foo", TEST_HTTP_FRP_PORT), "test3.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_FOO_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// web04
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d/bar", TEST_HTTP_FRP_PORT), "test3.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d/bar", TEST_HTTP_FRP_PORT), "test3.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_BAR_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// web05
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test5.frp.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test5.frp.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(401, code) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
header := make(map[string]string) |
|
|
|
|
header["Authorization"] = basicAuth("test", "test") |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test5.frp.com", header) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test5.frp.com", header, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(401, code) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// subhost01
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test01.sub.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test01.sub.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal("test01.sub.com", body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// subhost02
|
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test02.sub.com", nil) |
|
|
|
|
code, body, err = sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), "test02.sub.com", nil, "") |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal("test02.sub.com", body) |
|
|
|
@ -258,3 +261,28 @@ func TestRandomPort(t *testing.T) {
|
|
|
|
|
assert.Equal(TEST_UDP_ECHO_STR, res) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestPluginHttpProxy(t *testing.T) { |
|
|
|
|
assert := assert.New(t) |
|
|
|
|
status, err := getProxyStatus(ProxyHttpProxy) |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(client.ProxyStatusRunning, status.Status) |
|
|
|
|
|
|
|
|
|
// http proxy
|
|
|
|
|
addr := status.RemoteAddr |
|
|
|
|
code, body, err := sendHttpMsg("GET", fmt.Sprintf("http://127.0.0.1:%d", TEST_HTTP_FRP_PORT), |
|
|
|
|
"", nil, "http://"+addr) |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
assert.Equal(200, code) |
|
|
|
|
assert.Equal(TEST_HTTP_NORMAL_STR, body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// connect method
|
|
|
|
|
conn, err := net.ConnectTcpServerByHttpProxy("http://"+addr, fmt.Sprintf("127.0.0.1:%d", TEST_TCP_FRP_PORT)) |
|
|
|
|
if assert.NoError(err) { |
|
|
|
|
res, err := sendTcpMsgByConn(conn, TEST_TCP_ECHO_STR) |
|
|
|
|
assert.NoError(err) |
|
|
|
|
assert.Equal(TEST_TCP_ECHO_STR, res) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|