test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package test
  2. import (
  3. "log"
  4. "path/filepath"
  5. "strconv"
  6. "ehang.io/nps/lib/common"
  7. "ehang.io/nps/lib/file"
  8. "github.com/astaxie/beego"
  9. )
  10. func TestServerConfig() {
  11. var postTcpArr []int
  12. var postUdpArr []int
  13. file.GetDb().JsonDb.Tasks.Range(func(key, value interface{}) bool {
  14. v := value.(*file.Tunnel)
  15. if v.Mode == "udp" {
  16. isInArr(&postUdpArr, v.Port, v.Remark, "udp")
  17. } else if v.Port != 0 {
  18. isInArr(&postTcpArr, v.Port, v.Remark, "tcp")
  19. }
  20. return true
  21. })
  22. p, err := beego.AppConfig.Int("web_port")
  23. if err != nil {
  24. log.Fatalln("Getting web management port error :", err)
  25. } else {
  26. isInArr(&postTcpArr, p, "Web Management port", "tcp")
  27. }
  28. if p := beego.AppConfig.String("bridge_port"); p != "" {
  29. if port, err := strconv.Atoi(p); err != nil {
  30. log.Fatalln("get Server and client communication portserror:", err)
  31. } else if beego.AppConfig.String("bridge_type") == "kcp" {
  32. isInArr(&postUdpArr, port, "Server and client communication ports", "udp")
  33. } else {
  34. isInArr(&postTcpArr, port, "Server and client communication ports", "tcp")
  35. }
  36. }
  37. if p := beego.AppConfig.String("httpProxyPort"); p != "" {
  38. if port, err := strconv.Atoi(p); err != nil {
  39. log.Fatalln("get http port error:", err)
  40. } else {
  41. isInArr(&postTcpArr, port, "https port", "tcp")
  42. }
  43. }
  44. if p := beego.AppConfig.String("https_proxy_port"); p != "" {
  45. if b, err := beego.AppConfig.Bool("https_just_proxy"); !(err == nil && b) {
  46. if port, err := strconv.Atoi(p); err != nil {
  47. log.Fatalln("get https port error", err)
  48. } else {
  49. if beego.AppConfig.String("pemPath") != "" && !common.FileExists(filepath.Join(common.GetRunPath(), beego.AppConfig.String("pemPath"))) {
  50. log.Fatalf("ssl certFile %s is not exist", beego.AppConfig.String("pemPath"))
  51. }
  52. if beego.AppConfig.String("keyPath") != "" && !common.FileExists(filepath.Join(common.GetRunPath(), beego.AppConfig.String("keyPath"))) {
  53. log.Fatalf("ssl keyFile %s is not exist", beego.AppConfig.String("pemPath"))
  54. }
  55. isInArr(&postTcpArr, port, "http port", "tcp")
  56. }
  57. }
  58. }
  59. }
  60. func isInArr(arr *[]int, val int, remark string, tp string) {
  61. for _, v := range *arr {
  62. if v == val {
  63. log.Fatalf("the port %d is reused,remark: %s", val, remark)
  64. }
  65. }
  66. if tp == "tcp" {
  67. if !common.TestTcpPort(val) {
  68. log.Fatalf("open the %d port error ,remark: %s", val, remark)
  69. }
  70. } else {
  71. if !common.TestUdpPort(val) {
  72. log.Fatalf("open the %d port error ,remark: %s", val, remark)
  73. }
  74. }
  75. *arr = append(*arr, val)
  76. return
  77. }