server.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package basic
  2. import (
  3. "fmt"
  4. "github.com/fatedier/frp/test/e2e/framework"
  5. "github.com/fatedier/frp/test/e2e/framework/consts"
  6. "github.com/fatedier/frp/test/e2e/pkg/port"
  7. "github.com/fatedier/frp/test/e2e/pkg/request"
  8. . "github.com/onsi/ginkgo"
  9. )
  10. var _ = Describe("[Feature: Server Manager]", func() {
  11. f := framework.NewDefaultFramework()
  12. It("Ports Whitelist", func() {
  13. serverConf := consts.DefaultServerConfig
  14. clientConf := consts.DefaultClientConfig
  15. serverConf += `
  16. allow_ports = 10000-20000,20002,30000-50000
  17. `
  18. tcpPortName := port.GenName("TCP", port.WithRangePorts(10000, 20000))
  19. udpPortName := port.GenName("UDP", port.WithRangePorts(30000, 50000))
  20. clientConf += fmt.Sprintf(`
  21. [tcp-allowded-in-range]
  22. type = tcp
  23. local_port = {{ .%s }}
  24. remote_port = {{ .%s }}
  25. `, framework.TCPEchoServerPort, tcpPortName)
  26. clientConf += fmt.Sprintf(`
  27. [tcp-port-not-allowed]
  28. type = tcp
  29. local_port = {{ .%s }}
  30. remote_port = 20001
  31. `, framework.TCPEchoServerPort)
  32. clientConf += fmt.Sprintf(`
  33. [tcp-port-unavailable]
  34. type = tcp
  35. local_port = {{ .%s }}
  36. remote_port = {{ .%s }}
  37. `, framework.TCPEchoServerPort, consts.PortServerName)
  38. clientConf += fmt.Sprintf(`
  39. [udp-allowed-in-range]
  40. type = udp
  41. local_port = {{ .%s }}
  42. remote_port = {{ .%s }}
  43. `, framework.UDPEchoServerPort, udpPortName)
  44. clientConf += fmt.Sprintf(`
  45. [udp-port-not-allowed]
  46. type = udp
  47. local_port = {{ .%s }}
  48. remote_port = 20003
  49. `, framework.UDPEchoServerPort)
  50. f.RunProcesses([]string{serverConf}, []string{clientConf})
  51. // TCP
  52. // Allowed in range
  53. framework.NewRequestExpect(f).PortName(tcpPortName).Ensure()
  54. // Not Allowed
  55. framework.NewRequestExpect(f).Request(framework.SetRequestPort(20001)).ExpectError(true).Ensure()
  56. // Unavailable, already bind by frps
  57. framework.NewRequestExpect(f).PortName(consts.PortServerName).ExpectError(true).Ensure()
  58. // UDP
  59. // Allowed in range
  60. framework.NewRequestExpect(f).Request(framework.SetRequestProtocol("udp")).PortName(udpPortName).Ensure()
  61. // Not Allowed
  62. framework.NewRequestExpect(f).Request(func(r *request.Request) {
  63. r.UDP().Port(20003)
  64. }).ExpectError(true).Ensure()
  65. })
  66. })