mirror of
https://github.com/veops/oneterm.git
synced 2025-10-10 17:50:09 +08:00
feat: guacd-gateway
This commit is contained in:
@@ -31,6 +31,7 @@ import (
|
||||
"github.com/veops/oneterm/pkg/server/guacd"
|
||||
"github.com/veops/oneterm/pkg/server/model"
|
||||
"github.com/veops/oneterm/pkg/server/storage/db/mysql"
|
||||
"github.com/veops/oneterm/pkg/util"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -410,7 +411,7 @@ func newSshReq(ctx *gin.Context, action int) *model.SshReq {
|
||||
|
||||
func connectGuacd(ctx *gin.Context, protocol string, chs *model.SessionChans) {
|
||||
w, h, dpi := cast.ToInt(ctx.Query("w")), cast.ToInt(ctx.Query("h")), cast.ToInt(ctx.Query("dpi"))
|
||||
w, h, dpi = 731, 929, 96 //TODO
|
||||
w, h, dpi = 746, 929, 96 //TODO
|
||||
currentUser, _ := acl.GetSessionFromCtx(ctx)
|
||||
|
||||
var err error
|
||||
@@ -419,7 +420,7 @@ func connectGuacd(ctx *gin.Context, protocol string, chs *model.SessionChans) {
|
||||
}()
|
||||
|
||||
asset, account, gateway := &model.Asset{}, &model.Account{}, &model.Gateway{}
|
||||
if err := mysql.DB.Model(&asset).Where("id = ?", ctx.Param("asset_id")).First(asset).Error; err != nil {
|
||||
if err = mysql.DB.Model(&asset).Where("id = ?", ctx.Param("asset_id")).First(asset).Error; err != nil {
|
||||
logger.L.Error("find asset failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
@@ -428,15 +429,18 @@ func connectGuacd(ctx *gin.Context, protocol string, chs *model.SessionChans) {
|
||||
logger.L.Error(err.Error())
|
||||
return
|
||||
}
|
||||
if err := mysql.DB.Model(&account).Where("id = ?", ctx.Param("account_id")).First(account).Error; err != nil {
|
||||
if err = mysql.DB.Model(&account).Where("id = ?", ctx.Param("account_id")).First(account).Error; err != nil {
|
||||
logger.L.Error("find account failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
if asset.GatewayId != 0 {
|
||||
if err := mysql.DB.Model(&gateway).Where("id = ?", asset.GatewayId).First(gateway).Error; err != nil {
|
||||
if err = mysql.DB.Model(&gateway).Where("id = ?", asset.GatewayId).First(gateway).Error; err != nil {
|
||||
logger.L.Error("find gateway failed", zap.Error(err))
|
||||
return
|
||||
}
|
||||
gateway.Password = util.DecryptAES(gateway.Password)
|
||||
gateway.Pk = util.DecryptAES(gateway.Pk)
|
||||
gateway.Phrase = util.DecryptAES(gateway.Phrase)
|
||||
}
|
||||
|
||||
t, err := guacd.NewTunnel("", w, h, dpi, protocol, asset, account, gateway)
|
||||
@@ -850,7 +854,8 @@ func (c *Controller) TestConnect(ctx *gin.Context) {
|
||||
NickName: "",
|
||||
},
|
||||
})
|
||||
ctx.Params = append(ctx.Params, gin.Param{Key: "asset_id", Value: "1"}, gin.Param{Key: "account_id", Value: "1"}, gin.Param{Key: "protocol", Value: "rdp:13389"})
|
||||
// ctx.Params = append(ctx.Params, gin.Param{Key: "asset_id", Value: "1"}, gin.Param{Key: "account_id", Value: "1"}, gin.Param{Key: "protocol", Value: "rdp:13389"})
|
||||
ctx.Params = append(ctx.Params, gin.Param{Key: "asset_id", Value: "1"}, gin.Param{Key: "account_id", Value: "3"}, gin.Param{Key: "protocol", Value: "vnc:15901"})
|
||||
c.Connect(ctx)
|
||||
}
|
||||
|
||||
@@ -902,7 +907,7 @@ func handleError(ctx *gin.Context, sessionId string, err error, ws *websocket.Co
|
||||
if err == nil {
|
||||
return
|
||||
}
|
||||
logger.L.Debug("monitor failed", zap.String("session_id", sessionId), zap.Error(err))
|
||||
logger.L.Debug("", zap.String("session_id", sessionId), zap.Error(err))
|
||||
ae, ok := err.(*ApiError)
|
||||
if !ok {
|
||||
return
|
||||
|
Reference in New Issue
Block a user