1
0

tls_test.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package ci
  2. import (
  3. "os"
  4. "testing"
  5. "time"
  6. "github.com/fatedier/frp/tests/config"
  7. "github.com/fatedier/frp/tests/consts"
  8. "github.com/fatedier/frp/tests/util"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. const FRPS_TLS_TCP_CONF = `
  12. [common]
  13. bind_addr = 0.0.0.0
  14. bind_port = 20000
  15. log_file = console
  16. log_level = debug
  17. token = 123456
  18. `
  19. const FRPC_TLS_TCP_CONF = `
  20. [common]
  21. server_addr = 127.0.0.1
  22. server_port = 20000
  23. log_file = console
  24. log_level = debug
  25. token = 123456
  26. protocol = tcp
  27. tls_enable = true
  28. [tcp]
  29. type = tcp
  30. local_port = 10701
  31. remote_port = 20801
  32. `
  33. func TestTlsOverTCP(t *testing.T) {
  34. assert := assert.New(t)
  35. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_TLS_TCP_CONF)
  36. if assert.NoError(err) {
  37. defer os.Remove(frpsCfgPath)
  38. }
  39. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_TLS_TCP_CONF)
  40. if assert.NoError(err) {
  41. defer os.Remove(frpcCfgPath)
  42. }
  43. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  44. err = frpsProcess.Start()
  45. if assert.NoError(err) {
  46. defer frpsProcess.Stop()
  47. }
  48. time.Sleep(200 * time.Millisecond)
  49. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  50. err = frpcProcess.Start()
  51. if assert.NoError(err) {
  52. defer frpcProcess.Stop()
  53. }
  54. time.Sleep(500 * time.Millisecond)
  55. // test tcp
  56. res, err := util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  57. assert.NoError(err)
  58. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  59. }
  60. const FRPS_TLS_KCP_CONF = `
  61. [common]
  62. bind_addr = 0.0.0.0
  63. bind_port = 20000
  64. kcp_bind_port = 20000
  65. log_file = console
  66. log_level = debug
  67. token = 123456
  68. `
  69. const FRPC_TLS_KCP_CONF = `
  70. [common]
  71. server_addr = 127.0.0.1
  72. server_port = 20000
  73. log_file = console
  74. log_level = debug
  75. token = 123456
  76. protocol = kcp
  77. tls_enable = true
  78. [tcp]
  79. type = tcp
  80. local_port = 10701
  81. remote_port = 20801
  82. `
  83. func TestTLSOverKCP(t *testing.T) {
  84. assert := assert.New(t)
  85. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_TLS_KCP_CONF)
  86. if assert.NoError(err) {
  87. defer os.Remove(frpsCfgPath)
  88. }
  89. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_TLS_KCP_CONF)
  90. if assert.NoError(err) {
  91. defer os.Remove(frpcCfgPath)
  92. }
  93. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  94. err = frpsProcess.Start()
  95. if assert.NoError(err) {
  96. defer frpsProcess.Stop()
  97. }
  98. time.Sleep(200 * time.Millisecond)
  99. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  100. err = frpcProcess.Start()
  101. if assert.NoError(err) {
  102. defer frpcProcess.Stop()
  103. }
  104. time.Sleep(500 * time.Millisecond)
  105. // test tcp
  106. res, err := util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  107. assert.NoError(err)
  108. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  109. }
  110. const FRPS_TLS_WS_CONF = `
  111. [common]
  112. bind_addr = 0.0.0.0
  113. bind_port = 20000
  114. log_file = console
  115. log_level = debug
  116. token = 123456
  117. `
  118. const FRPC_TLS_WS_CONF = `
  119. [common]
  120. server_addr = 127.0.0.1
  121. server_port = 20000
  122. log_file = console
  123. log_level = debug
  124. token = 123456
  125. protocol = websocket
  126. tls_enable = true
  127. [tcp]
  128. type = tcp
  129. local_port = 10701
  130. remote_port = 20801
  131. `
  132. func TestTLSOverWebsocket(t *testing.T) {
  133. assert := assert.New(t)
  134. frpsCfgPath, err := config.GenerateConfigFile(consts.FRPS_NORMAL_CONFIG, FRPS_TLS_WS_CONF)
  135. if assert.NoError(err) {
  136. defer os.Remove(frpsCfgPath)
  137. }
  138. frpcCfgPath, err := config.GenerateConfigFile(consts.FRPC_NORMAL_CONFIG, FRPC_TLS_WS_CONF)
  139. if assert.NoError(err) {
  140. defer os.Remove(frpcCfgPath)
  141. }
  142. frpsProcess := util.NewProcess(consts.FRPS_BIN_PATH, []string{"-c", frpsCfgPath})
  143. err = frpsProcess.Start()
  144. if assert.NoError(err) {
  145. defer frpsProcess.Stop()
  146. }
  147. time.Sleep(200 * time.Millisecond)
  148. frpcProcess := util.NewProcess(consts.FRPC_BIN_PATH, []string{"-c", frpcCfgPath})
  149. err = frpcProcess.Start()
  150. if assert.NoError(err) {
  151. defer frpcProcess.Stop()
  152. }
  153. time.Sleep(500 * time.Millisecond)
  154. // test tcp
  155. res, err := util.SendTcpMsg("127.0.0.1:20801", consts.TEST_TCP_ECHO_STR)
  156. assert.NoError(err)
  157. assert.Equal(consts.TEST_TCP_ECHO_STR, res)
  158. }