mirror of
				https://github.com/veops/oneterm.git
				synced 2025-10-31 02:46:29 +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,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) | ||||
|   | ||||
| @@ -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