|
|
|
@ -2,13 +2,22 @@ package tests
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
|
|
|
|
|
"github.com/fatedier/frp/client"
|
|
|
|
|
"github.com/fatedier/frp/server"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
SERVER_ADDR = "127.0.0.1"
|
|
|
|
|
ADMIN_ADDR = "127.0.0.1:10600"
|
|
|
|
|
ADMIN_USER = "abc"
|
|
|
|
|
ADMIN_PWD = "abc"
|
|
|
|
|
|
|
|
|
|
TEST_STR = "frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet."
|
|
|
|
|
TEST_TCP_PORT int = 10701
|
|
|
|
|
TEST_TCP_FRP_PORT int = 10801
|
|
|
|
@ -33,6 +42,14 @@ var (
|
|
|
|
|
TEST_STCP_FRP_PORT int = 10805
|
|
|
|
|
TEST_STCP_EC_FRP_PORT int = 10905
|
|
|
|
|
TEST_STCP_ECHO_STR string = "stcp type:" + TEST_STR
|
|
|
|
|
|
|
|
|
|
ProxyTcpPortNotAllowed string = "tcp_port_not_allowed"
|
|
|
|
|
ProxyTcpPortUnavailable string = "tcp_port_unavailable"
|
|
|
|
|
ProxyTcpPortNormal string = "tcp_port_normal"
|
|
|
|
|
ProxyTcpRandomPort string = "tcp_random_port"
|
|
|
|
|
ProxyUdpPortNotAllowed string = "udp_port_not_allowed"
|
|
|
|
|
ProxyUdpPortNormal string = "udp_port_normal"
|
|
|
|
|
ProxyUdpRandomPort string = "udp_random_port"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
@ -155,3 +172,57 @@ func TestHttp(t *testing.T) {
|
|
|
|
|
assert.Equal(401, code)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestPrivilegeAllowPorts(t *testing.T) {
|
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
// Port not allowed
|
|
|
|
|
status, err := getProxyStatus(ProxyTcpPortNotAllowed)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
assert.Equal(client.ProxyStatusStartErr, status.Status)
|
|
|
|
|
assert.True(strings.Contains(status.Err, server.ErrPortNotAllowed.Error()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status, err = getProxyStatus(ProxyUdpPortNotAllowed)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
assert.Equal(client.ProxyStatusStartErr, status.Status)
|
|
|
|
|
assert.True(strings.Contains(status.Err, server.ErrPortNotAllowed.Error()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status, err = getProxyStatus(ProxyTcpPortUnavailable)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
assert.Equal(client.ProxyStatusStartErr, status.Status)
|
|
|
|
|
assert.True(strings.Contains(status.Err, server.ErrPortUnAvailable.Error()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Port normal
|
|
|
|
|
status, err = getProxyStatus(ProxyTcpPortNormal)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
assert.Equal(client.ProxyStatusRunning, status.Status)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status, err = getProxyStatus(ProxyUdpPortNormal)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
assert.Equal(client.ProxyStatusRunning, status.Status)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestRandomPort(t *testing.T) {
|
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
// tcp
|
|
|
|
|
status, err := getProxyStatus(ProxyTcpRandomPort)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
addr := status.RemoteAddr
|
|
|
|
|
res, err := sendTcpMsg(addr, TEST_TCP_ECHO_STR)
|
|
|
|
|
assert.NoError(err)
|
|
|
|
|
assert.Equal(TEST_TCP_ECHO_STR, res)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// udp
|
|
|
|
|
status, err = getProxyStatus(ProxyUdpRandomPort)
|
|
|
|
|
if assert.NoError(err) {
|
|
|
|
|
addr := status.RemoteAddr
|
|
|
|
|
res, err := sendUdpMsg(addr, TEST_UDP_ECHO_STR)
|
|
|
|
|
assert.NoError(err)
|
|
|
|
|
assert.Equal(TEST_UDP_ECHO_STR, res)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|