RestApiCtrl.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. _, err := Service.SysDataS.SavePortForwardByApi(fromAddr, protocol, toAddr)
  33. if err != nil {
  34. c.Data["json"] = Models.FuncResult{Code: 1, Msg: "保存端口配置失败"}
  35. c.ServeJSON()
  36. return
  37. }
  38. }
  39. //测试
  40. //http://127.0.0.1:8000/api/v1/OpenForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306
  41. resultChan := make(chan Models.FuncResult)
  42. config := Service.SysDataS.ToForwardConfig(entity)
  43. go Service.ForWardServ.OpenForward(config, resultChan)
  44. c.Data["json"] = <-resultChan
  45. c.ServeJSON()
  46. }
  47. // @router /CloseForward [get,post]
  48. func (c *RestApiCtrl) CloseForward() {
  49. fromAddr := c.GetString("fromAddr")
  50. toAddr := c.GetString("toAddr")
  51. protocol := c.GetString("protocol", "TCP")
  52. //fType, _ := c.GetInt("fType", 0)
  53. //测试
  54. //http://127.0.0.1:8000/api/v1/CloseForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306
  55. config := new(Models.ForwardConfig)
  56. config.RuleId = 0
  57. config.Name = ""
  58. config.Protocol = protocol
  59. config.SrcAddr = strings.Split(fromAddr, ":")[0]
  60. config.SrcPort = Utils.ToInt(strings.Split(fromAddr, ":")[1])
  61. config.DestAddr = strings.Split(toAddr, ":")[0]
  62. config.DestPort = Utils.ToInt(strings.Split(toAddr, ":")[1])
  63. config.Status = 0
  64. Service.ForWardServ.CloseForward(config)
  65. c.Data["json"] = Models.FuncResult{Code: 0, Msg: ""}
  66. c.ServeJSON()
  67. }
粤ICP备19079148号