RestApiCtrl.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package Controllers
  2. import (
  3. "forward-core/Models"
  4. "forward-core/Utils"
  5. "forward-server/Controllers/BaseCtrl"
  6. "forward-server/Service"
  7. "runtime"
  8. "strings"
  9. "time"
  10. )
  11. type RestApiCtrl struct {
  12. BaseCtrl.ApiCtrl
  13. }
  14. // @router /ServerSummary [get,post]
  15. func (c *RestApiCtrl) ServerSummary() {
  16. obj := make(map[string]interface{})
  17. obj["runtime_NumGoroutine"] = runtime.NumGoroutine()
  18. obj["runtime_GOOS"] = runtime.GOOS
  19. obj["runtime_GOARCH"] = runtime.GOARCH
  20. obj["server_Time"] = time.Now()
  21. obj["forwardList"] = Service.ForWardServ.FindAllForward()
  22. c.Data["json"] = obj
  23. c.ServeJSON()
  24. }
  25. // @router /OpenForward [get,post]
  26. func (c *RestApiCtrl) OpenForward() {
  27. fromAddr := c.GetString("fromAddr")
  28. toAddr := c.GetString("toAddr")
  29. protocol := c.GetString("protocol", "TCP")
  30. entity := Service.SysDataS.ChkPortForwardByApi(fromAddr, protocol, toAddr)
  31. if entity == nil {
  32. var err error
  33. entity, err = Service.SysDataS.SavePortForwardByApi(fromAddr, protocol, toAddr)
  34. if err != nil {
  35. c.Data["json"] = Models.FuncResult{Code: 1, Msg: "保存端口配置失败"}
  36. c.ServeJSON()
  37. return
  38. }
  39. }
  40. //测试
  41. //http://127.0.0.1:8000/api/v1/OpenForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306
  42. resultChan := make(chan Models.FuncResult)
  43. config := Service.SysDataS.ToForwardConfig(entity)
  44. go Service.ForWardServ.OpenForward(config, resultChan)
  45. c.Data["json"] = <-resultChan
  46. c.ServeJSON()
  47. }
  48. // @router /CloseForward [get,post]
  49. func (c *RestApiCtrl) CloseForward() {
  50. fromAddr := c.GetString("fromAddr")
  51. toAddr := c.GetString("toAddr")
  52. protocol := c.GetString("protocol", "TCP")
  53. //fType, _ := c.GetInt("fType", 0)
  54. //测试
  55. //http://127.0.0.1:8000/api/v1/CloseForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306
  56. config := new(Models.ForwardConfig)
  57. config.RuleId = 0
  58. config.Name = ""
  59. config.Protocol = protocol
  60. config.SrcAddr = strings.Split(fromAddr, ":")[0]
  61. config.SrcPort = Utils.ToInt(strings.Split(fromAddr, ":")[1])
  62. config.DestAddr = strings.Split(toAddr, ":")[0]
  63. config.DestPort = Utils.ToInt(strings.Split(toAddr, ":")[1])
  64. config.Status = 0
  65. Service.ForWardServ.CloseForward(config)
  66. c.Data["json"] = Models.FuncResult{Code: 0, Msg: ""}
  67. c.ServeJSON()
  68. }
粤ICP备19079148号