diff --git a/pkg/api/routes.go b/pkg/api/routes.go index 1936864..c4c2c43 100644 --- a/pkg/api/routes.go +++ b/pkg/api/routes.go @@ -76,6 +76,7 @@ func SetupRoutes() *echo.Echo { assets.PUT("/:id", AssetUpdateEndpoint) assets.DELETE("/:id", AssetDeleteEndpoint) assets.GET("/:id", AssetGetEndpoint) + assets.GET("/:id/attributes", AssetGetAttributeEndpoint) assets.POST("/:id/change-owner", Admin(AssetChangeOwnerEndpoint)) } diff --git a/pkg/model/asset-attribute.go b/pkg/model/asset-attribute.go index cde6091..eeaf1af 100644 --- a/pkg/model/asset-attribute.go +++ b/pkg/model/asset-attribute.go @@ -20,7 +20,7 @@ func (r *AssetAttribute) TableName() string { return "asset_attributes" } -var SSHParameterNames = []string{guacd.FontName, guacd.FontSize, guacd.ColorScheme, guacd.Backspace, guacd.TerminalType} +var SSHParameterNames = []string{guacd.FontName, guacd.FontSize, guacd.ColorScheme, guacd.Backspace, guacd.TerminalType, SshMode} var RDPParameterNames = []string{guacd.EnableWallpaper, guacd.EnableTheming, guacd.EnableFontSmoothing, guacd.EnableFullWindowDrag, guacd.EnableDesktopComposition, guacd.EnableMenuAnimations, guacd.DisableBitmapCaching, guacd.DisableOffscreenCaching, guacd.DisableGlyphCaching} var VNCParameterNames = []string{guacd.ColorDepth, guacd.Cursor, guacd.SwapRedBlue, guacd.DestHost, guacd.DestPort} var TelnetParameterNames = []string{guacd.FontName, guacd.FontSize, guacd.ColorScheme, guacd.Backspace, guacd.TerminalType, guacd.UsernameRegex, guacd.PasswordRegex, guacd.LoginSuccessRegex, guacd.LoginFailureRegex} diff --git a/pkg/model/property.go b/pkg/model/property.go index 6c84a73..6cb749c 100644 --- a/pkg/model/property.go +++ b/pkg/model/property.go @@ -5,6 +5,10 @@ import ( "next-terminal/pkg/guacd" ) +const ( + SshMode = "ssh-mode" +) + type Property struct { Name string `gorm:"primary_key" json:"name"` Value string `json:"value"` diff --git a/web/src/components/access/Term.js b/web/src/components/access/Term.js index 6ece5f6..a63022f 100644 --- a/web/src/components/access/Term.js +++ b/web/src/components/access/Term.js @@ -7,7 +7,10 @@ import {getToken, isEmpty} from "../../utils/utils"; import {FitAddon} from 'xterm-addon-fit'; import "./Access.css" import request from "../../common/request"; -import {message} from "antd"; +import {Affix, Button, Col, Drawer, message, Row} from "antd"; +import {AppstoreTwoTone} from "@ant-design/icons"; +import Draggable from "react-draggable"; +import FileSystem from "./FileSystem"; class Term extends Component { @@ -16,7 +19,8 @@ class Term extends Component { height: window.innerHeight, term: undefined, webSocket: undefined, - fitAddon: undefined + fitAddon: undefined, + sessionId: undefined }; componentDidMount = async () => { @@ -123,7 +127,8 @@ class Term extends Component { this.setState({ term: term, webSocket: webSocket, - fitAddon: fitAddon + fitAddon: fitAddon, + sessionId: sessionId }); window.addEventListener('resize', this.onWindowResize); @@ -190,6 +195,39 @@ class Term extends Component { overflowX: 'hidden', overflowY: 'hidden', }}/> + + + +