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