feat(api): share

This commit is contained in:
ttk
2024-09-19 20:48:47 +08:00
parent 7ee8b58f5f
commit 1ea2304ed1
3 changed files with 11 additions and 15 deletions

View File

@@ -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")
{

View File

@@ -36,6 +36,7 @@ import (
var (
Upgrader = websocket.Upgrader{
HandshakeTimeout: time.Minute,
ReadBufferSize: 4096,
WriteBufferSize: 4096,
CheckOrigin: func(r *http.Request) bool {
@@ -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)

View File

@@ -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