mirror of
https://github.com/veops/oneterm.git
synced 2025-11-01 19:32:37 +08:00
feat(api): share
This commit is contained in:
@@ -131,11 +131,12 @@ func RunApi() error {
|
||||
|
||||
share := v1.Group("/share")
|
||||
{
|
||||
share.POST("", c.CreateShare, authAdmin())
|
||||
share.DELETE("/:id", c.DeleteShare, authAdmin())
|
||||
share.GET("", c.GetShare, authAdmin())
|
||||
share.POST("", authAdmin(), c.CreateShare)
|
||||
share.DELETE("/:id", authAdmin(), c.DeleteShare)
|
||||
share.GET("", authAdmin(), c.GetShare)
|
||||
share.GET("/connect/:uuid", c.ConnectShare)
|
||||
}
|
||||
r.GET("/api/oneterm/v1/share/connect/:uuid", Error2Resp(), c.ConnectShare)
|
||||
// r.GET("/api/oneterm/v1/share/connect/:uuid", Error2Resp(), c.ConnectShare)
|
||||
|
||||
authorization := v1.Group("/authorization")
|
||||
{
|
||||
|
||||
@@ -36,8 +36,9 @@ import (
|
||||
|
||||
var (
|
||||
Upgrader = websocket.Upgrader{
|
||||
ReadBufferSize: 4096,
|
||||
WriteBufferSize: 4096,
|
||||
HandshakeTimeout: time.Minute,
|
||||
ReadBufferSize: 4096,
|
||||
WriteBufferSize: 4096,
|
||||
CheckOrigin: func(r *http.Request) bool {
|
||||
return true
|
||||
},
|
||||
@@ -255,13 +256,10 @@ func DoConnect(ctx *gin.Context, ws *websocket.Conn) (sess *gsession.Session, er
|
||||
currentUser, _ := acl.GetSessionFromCtx(ctx)
|
||||
|
||||
assetId, accountId := cast.ToInt(ctx.Param("asset_id")), cast.ToInt(ctx.Param("account_id"))
|
||||
fmt.Println("--------------------------------------", assetId, accountId)
|
||||
asset, account, gateway, err := util.GetAAG(assetId, accountId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Println("--------------------------------------", *asset)
|
||||
fmt.Println("--------------------------------------", *account)
|
||||
|
||||
sess = gsession.NewSession(ctx)
|
||||
sess.Ws = ws
|
||||
@@ -280,8 +278,6 @@ func DoConnect(ctx *gin.Context, ws *websocket.Conn) (sess *gsession.Session, er
|
||||
Status: model.SESSIONSTATUS_ONLINE,
|
||||
ShareId: cast.ToInt(ctx.Value("shareId")),
|
||||
}
|
||||
fmt.Printf("==============%+v\n", *sess)
|
||||
fmt.Printf("==============%+v\n", *sess.Session)
|
||||
if sess.IsSsh() {
|
||||
w, h := cast.ToInt(ctx.Query("w")), cast.ToInt(ctx.Query("h"))
|
||||
sess.SshParser = gsession.NewParser(sess.SessionId, w, h)
|
||||
@@ -315,10 +311,8 @@ func DoConnect(ctx *gin.Context, ws *websocket.Conn) (sess *gsession.Session, er
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
switch strings.Split(sess.Protocol, ":")[0] {
|
||||
case "ssh":
|
||||
fmt.Println("-----------------------------------------------fuckkkkkkkkkkkkkkkkkkkkkkkkkkk")
|
||||
go connectSsh(ctx, sess, asset, account, gateway)
|
||||
case "vnc", "rdp":
|
||||
go connectGuacd(ctx, sess, asset, account, gateway)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
@@ -90,7 +91,7 @@ func (c *Controller) ConnectShare(ctx *gin.Context) {
|
||||
}
|
||||
now := time.Now()
|
||||
if now.Before(share.Start) || now.After(share.End) {
|
||||
ctx.AbortWithError(http.StatusBadRequest, &ApiError{Code: ErrBadRequest, Data: map[string]any{"err": "share expired or not started"}})
|
||||
err = fmt.Errorf("share expired or not started")
|
||||
return
|
||||
}
|
||||
if share.NoLimit {
|
||||
@@ -101,7 +102,7 @@ func (c *Controller) ConnectShare(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
if db.RowsAffected != 1 {
|
||||
ctx.AbortWithError(http.StatusBadRequest, &ApiError{Code: ErrBadRequest, Data: map[string]any{"err": "no times left"}})
|
||||
err = fmt.Errorf("no times left")
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user