优化接入网关,解决协程泄漏的问题
This commit is contained in:
@ -5,6 +5,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"next-terminal/server/global/gateway"
|
||||
"next-terminal/server/model"
|
||||
"next-terminal/server/repository"
|
||||
"next-terminal/server/service"
|
||||
@ -28,7 +29,7 @@ func (api AccessGatewayApi) AccessGatewayCreateEndpoint(c echo.Context) error {
|
||||
return err
|
||||
}
|
||||
// 连接网关
|
||||
service.GatewayService.ReConnect(&item)
|
||||
service.GatewayService.ReLoad(&item)
|
||||
return Success(c, "")
|
||||
}
|
||||
|
||||
@ -58,12 +59,11 @@ func (api AccessGatewayApi) AccessGatewayPagingEndpoint(c echo.Context) error {
|
||||
return err
|
||||
}
|
||||
for i := 0; i < len(items); i++ {
|
||||
g, err := service.GatewayService.GetGatewayById(items[i].ID)
|
||||
if err != nil {
|
||||
return err
|
||||
g := gateway.GlobalGatewayManager.GetById(items[i].ID)
|
||||
if g != nil {
|
||||
items[i].Connected = g.Connected
|
||||
items[i].Message = g.Message
|
||||
}
|
||||
items[i].Connected = g.Connected
|
||||
items[i].Message = g.Message
|
||||
}
|
||||
|
||||
return Success(c, Map{
|
||||
@ -83,7 +83,7 @@ func (api AccessGatewayApi) AccessGatewayUpdateEndpoint(c echo.Context) error {
|
||||
if err := repository.GatewayRepository.UpdateById(context.TODO(), &item, id); err != nil {
|
||||
return err
|
||||
}
|
||||
service.GatewayService.ReConnect(&item)
|
||||
service.GatewayService.ReLoad(&item)
|
||||
return Success(c, nil)
|
||||
}
|
||||
|
||||
@ -110,14 +110,3 @@ func (api AccessGatewayApi) AccessGatewayGetEndpoint(c echo.Context) error {
|
||||
|
||||
return Success(c, item)
|
||||
}
|
||||
|
||||
func (api AccessGatewayApi) AccessGatewayReconnectEndpoint(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
item, err := repository.GatewayRepository.FindById(context.TODO(), id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
service.GatewayService.ReConnect(&item)
|
||||
return Success(c, "")
|
||||
}
|
||||
|
@ -72,15 +72,13 @@ func (api GuacamoleApi) Guacamole(c echo.Context) error {
|
||||
api.setConfig(propertyMap, s, configuration)
|
||||
|
||||
if s.AccessGatewayId != "" && s.AccessGatewayId != "-" {
|
||||
g, err := service.GatewayService.GetGatewayAndReconnectById(s.AccessGatewayId)
|
||||
g, err := service.GatewayService.GetGatewayById(s.AccessGatewayId)
|
||||
if err != nil {
|
||||
utils.Disconnect(ws, AccessGatewayUnAvailable, "获取接入网关失败:"+err.Error())
|
||||
return nil
|
||||
}
|
||||
if !g.Connected {
|
||||
utils.Disconnect(ws, AccessGatewayUnAvailable, "接入网关不可用:"+g.Message)
|
||||
return nil
|
||||
}
|
||||
|
||||
defer g.CloseSshTunnel(s.ID)
|
||||
exposedIP, exposedPort, err := g.OpenSshTunnel(s.ID, s.IP, s.Port)
|
||||
if err != nil {
|
||||
utils.Disconnect(ws, AccessGatewayCreateError, "创建SSH隧道失败:"+err.Error())
|
||||
@ -88,7 +86,6 @@ func (api GuacamoleApi) Guacamole(c echo.Context) error {
|
||||
}
|
||||
s.IP = exposedIP
|
||||
s.Port = exposedPort
|
||||
defer g.CloseSshTunnel(s.ID)
|
||||
}
|
||||
|
||||
configuration.SetParameter("hostname", s.IP)
|
||||
|
@ -70,18 +70,16 @@ func (api WebTerminalApi) SshEndpoint(c echo.Context) error {
|
||||
)
|
||||
|
||||
if s.AccessGatewayId != "" && s.AccessGatewayId != "-" {
|
||||
g, err := service.GatewayService.GetGatewayAndReconnectById(s.AccessGatewayId)
|
||||
g, err := service.GatewayService.GetGatewayById(s.AccessGatewayId)
|
||||
if err != nil {
|
||||
return WriteMessage(ws, dto.NewMessage(Closed, "获取接入网关失败:"+err.Error()))
|
||||
}
|
||||
if !g.Connected {
|
||||
return WriteMessage(ws, dto.NewMessage(Closed, "接入网关不可用:"+g.Message))
|
||||
}
|
||||
|
||||
defer g.CloseSshTunnel(s.ID)
|
||||
exposedIP, exposedPort, err := g.OpenSshTunnel(s.ID, ip, port)
|
||||
if err != nil {
|
||||
return WriteMessage(ws, dto.NewMessage(Closed, "创建隧道失败:"+err.Error()))
|
||||
}
|
||||
defer g.CloseSshTunnel(s.ID)
|
||||
ip = exposedIP
|
||||
port = exposedPort
|
||||
}
|
||||
|
Reference in New Issue
Block a user