package Controllers import ( "forward-core/Models" "forward-core/Utils" "forward-server/Controllers/BaseCtrl" "forward-server/Service" "runtime" "strings" "time" ) type RestApiCtrl struct { BaseCtrl.ApiCtrl } // @router /ServerSummary [get,post] func (c *RestApiCtrl) ServerSummary() { obj := make(map[string]interface{}) obj["runtime_NumGoroutine"] = runtime.NumGoroutine() obj["runtime_GOOS"] = runtime.GOOS obj["runtime_GOARCH"] = runtime.GOARCH obj["server_Time"] = time.Now() obj["forwardList"] = Service.ForWardServ.FindAllForward() c.Data["json"] = obj c.ServeJSON() } // @router /OpenForward [get,post] func (c *RestApiCtrl) OpenForward() { fromAddr := c.GetString("fromAddr") toAddr := c.GetString("toAddr") protocol := c.GetString("protocol", "TCP") entity := Service.SysDataS.ChkPortForwardByApi(fromAddr, protocol, toAddr) if entity == nil { _, err := Service.SysDataS.SavePortForwardByApi(fromAddr, protocol, toAddr) if err != nil { c.Data["json"] = Models.FuncResult{Code: 1, Msg: "保存端口配置失败"} c.ServeJSON() return } } //测试 //http://127.0.0.1:8000/api/v1/OpenForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306 resultChan := make(chan Models.FuncResult) config := Service.SysDataS.ToForwardConfig(entity) go Service.ForWardServ.OpenForward(config, resultChan) c.Data["json"] = <-resultChan c.ServeJSON() } // @router /CloseForward [get,post] func (c *RestApiCtrl) CloseForward() { fromAddr := c.GetString("fromAddr") toAddr := c.GetString("toAddr") protocol := c.GetString("protocol", "TCP") //fType, _ := c.GetInt("fType", 0) //测试 //http://127.0.0.1:8000/api/v1/CloseForward?auth=26CCD056107481F45D1AC805A24A9E59&fromAddr=:8010&toAddr=127.0.0.1:3306 config := new(Models.ForwardConfig) config.RuleId = 0 config.Name = "" config.Protocol = protocol config.SrcAddr = strings.Split(fromAddr, ":")[0] config.SrcPort = Utils.ToInt(strings.Split(fromAddr, ":")[1]) config.DestAddr = strings.Split(toAddr, ":")[0] config.DestPort = Utils.ToInt(strings.Split(toAddr, ":")[1]) config.Status = 0 Service.ForWardServ.CloseForward(config) c.Data["json"] = Models.FuncResult{Code: 0, Msg: ""} c.ServeJSON() }