diff --git a/backend/app/api/v1/terminal.go b/backend/app/api/v1/terminal.go index 295754682..eb7c9c8a8 100644 --- a/backend/app/api/v1/terminal.go +++ b/backend/app/api/v1/terminal.go @@ -5,15 +5,44 @@ import ( "strconv" "time" + "github.com/1Panel-dev/1Panel/app/api/v1/helper" + "github.com/1Panel-dev/1Panel/constant" "github.com/1Panel-dev/1Panel/global" "github.com/1Panel-dev/1Panel/utils/copier" "github.com/1Panel-dev/1Panel/utils/ssh" "github.com/1Panel-dev/1Panel/utils/terminal" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" + "github.com/pkg/errors" ) func (b *BaseApi) WsSsh(c *gin.Context) { + id, err := strconv.Atoi(c.Query("id")) + if err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + return + } + cols, err := strconv.Atoi(c.DefaultQuery("cols", "80")) + if err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + return + } + rows, err := strconv.Atoi(c.DefaultQuery("rows", "40")) + if err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + return + } + host, err := hostService.GetConnInfo(uint(id)) + if err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, err) + return + } + var connInfo ssh.ConnInfo + if err := copier.Copy(&connInfo, &host); err != nil { + helper.ErrorWithDetail(c, constant.CodeErrBadRequest, constant.ErrTypeInvalidParams, constant.ErrStructTransform) + return + } + wsConn, err := upGrader.Upgrade(c.Writer, c.Request, nil) if err != nil { global.LOG.Errorf("gin context http handler failed, err: %v", err) @@ -21,31 +50,8 @@ func (b *BaseApi) WsSsh(c *gin.Context) { } defer wsConn.Close() - id, err := strconv.Atoi(c.Query("id")) - if wshandleError(wsConn, err) { - return - } - host, err := hostService.GetConnInfo(uint(id)) - if wshandleError(wsConn, err) { - return - } - var connInfo ssh.ConnInfo - err = copier.Copy(&connInfo, &host) - if wshandleError(wsConn, err) { - return - } - - cols, err := strconv.Atoi(c.DefaultQuery("cols", "80")) - if wshandleError(wsConn, err) { - return - } - rows, err := strconv.Atoi(c.DefaultQuery("rows", "40")) - if wshandleError(wsConn, err) { - return - } - client, err := connInfo.NewClient() - if wshandleError(wsConn, err) { + if wshandleError(wsConn, errors.WithMessage(err, " Failed to set up the connection. Please check the host information")) { return } defer client.Close() diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 9930b4f56..2f3af2712 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -8,6 +8,7 @@ export default { cancel: 'Cancel', reset: 'Reset', login: 'Login', + conn: 'Connect', }, table: { name: 'Name', @@ -87,6 +88,19 @@ export default { changePassword: 'Change Password', logout: 'Logout', }, + terminal: { + connHistory: 'historys', + hostHistory: 'History record', + addHost: 'Add Host', + name: 'Name', + port: 'Port', + user: 'User', + authMode: 'Auth Mode', + passwordMode: 'password', + keyMode: 'PrivateKey', + password: 'Password', + key: 'Private Key', + }, operations: { detail: { users: 'User', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 262fcbf39..b543227c8 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -8,6 +8,7 @@ export default { cancel: '取消', reset: '重置', login: '登陆', + conn: '连接', }, table: { name: '名称', @@ -88,6 +89,19 @@ export default { changePassword: '修改密码', logout: '退出登录', }, + terminal: { + connHistory: '历史连接', + hostHistory: '历史主机信息', + addHost: '添加主机', + name: '名称', + port: '端口', + user: '用户', + authMode: '认证方式', + passwordMode: '密码输入', + keyMode: '密钥输入', + password: '密码', + key: '密钥', + }, operations: { detail: { users: '用户', diff --git a/frontend/src/styles/element.scss b/frontend/src/styles/element.scss index f8d48eb41..d133be3e7 100644 --- a/frontend/src/styles/element.scss +++ b/frontend/src/styles/element.scss @@ -176,4 +176,5 @@ font-size: 17px; } } + border-radius: 5px; } diff --git a/frontend/src/views/terminal/index.vue b/frontend/src/views/terminal/index.vue index d71ce5021..c12e03f10 100644 --- a/frontend/src/views/terminal/index.vue +++ b/frontend/src/views/terminal/index.vue @@ -1,8 +1,25 @@