From 6528a2c772b8938180f266bef5099adb0e3d76e2 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Tue, 5 Jul 2022 16:29:31 -0400 Subject: [PATCH 1/5] Adds directory sharing flag to the ACL, protected by a config variable (#951) --- packages/teleport/src/Main/fixtures/index.ts | 1 + packages/teleport/src/config.ts | 2 ++ packages/teleport/src/services/user/makeAcl.ts | 8 ++++++++ packages/teleport/src/services/user/types.ts | 1 + packages/teleport/src/services/user/user.test.ts | 1 + 5 files changed, 13 insertions(+) diff --git a/packages/teleport/src/Main/fixtures/index.ts b/packages/teleport/src/Main/fixtures/index.ts index 92cb76ea1..30e119b9b 100644 --- a/packages/teleport/src/Main/fixtures/index.ts +++ b/packages/teleport/src/Main/fixtures/index.ts @@ -43,6 +43,7 @@ export const fullAcl: Acl = { nodes: fullAccess, clipboardSharingEnabled: true, desktopSessionRecordingEnabled: true, + directorySharingEnabled: true, }; export const userContext = makeUserContext({ diff --git a/packages/teleport/src/config.ts b/packages/teleport/src/config.ts index dd2426c99..17e05284e 100644 --- a/packages/teleport/src/config.ts +++ b/packages/teleport/src/config.ts @@ -22,6 +22,8 @@ import { RecordingType } from 'teleport/services/recordings'; import generateResourcePath from './generateResourcePath'; const cfg = { + // TODO(isaiah): remove after feature is finished. + enableDirectorySharing: false, // note to reviewers: should be false in any PRs. isEnterprise: false, isCloud: false, tunnelPublicAddress: '', diff --git a/packages/teleport/src/services/user/makeAcl.ts b/packages/teleport/src/services/user/makeAcl.ts index a27f1de35..a8b90c69c 100644 --- a/packages/teleport/src/services/user/makeAcl.ts +++ b/packages/teleport/src/services/user/makeAcl.ts @@ -15,6 +15,7 @@ limitations under the License. */ import { Acl } from './types'; +import cfg from 'teleport/config'; export default function makeAcl(json): Acl { json = json || {}; @@ -42,6 +43,12 @@ export default function makeAcl(json): Acl { json.desktopSessionRecording !== undefined ? json.desktopSessionRecording : true; + // Behaves like clipboardSharingEnabled, see + // https://github.com/gravitational/teleport/pull/12684#issue-1237830087 + const directorySharingEnabled = + (json.directorySharing !== undefined ? json.directorySharing : true) && + cfg.enableDirectorySharing; + const nodes = json.nodes || defaultAccess; return { @@ -62,6 +69,7 @@ export default function makeAcl(json): Acl { clipboardSharingEnabled, desktopSessionRecordingEnabled, nodes, + directorySharingEnabled, }; } diff --git a/packages/teleport/src/services/user/types.ts b/packages/teleport/src/services/user/types.ts index cf06c663d..48a68f2db 100644 --- a/packages/teleport/src/services/user/types.ts +++ b/packages/teleport/src/services/user/types.ts @@ -46,6 +46,7 @@ export interface Access { } export interface Acl { + directorySharingEnabled: boolean; desktopSessionRecordingEnabled: boolean; clipboardSharingEnabled: boolean; windowsLogins: string[]; diff --git a/packages/teleport/src/services/user/user.test.ts b/packages/teleport/src/services/user/user.test.ts index c41872e1e..bd7cace25 100644 --- a/packages/teleport/src/services/user/user.test.ts +++ b/packages/teleport/src/services/user/user.test.ts @@ -150,6 +150,7 @@ test('undefined values in context response gives proper default values', async ( }, clipboardSharingEnabled: true, desktopSessionRecordingEnabled: true, + directorySharingEnabled: false, }, cluster: { clusterId: 'aws', From d07d364092f21aaa13e5f711975a14323eae442e Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Wed, 6 Jul 2022 13:07:45 -0400 Subject: [PATCH 2/5] Directory sharing menu item (#952) --- packages/design/src/Icon/Icon.jsx | 2 + packages/design/src/Icon/Icon.story.js | 2 + packages/design/src/Icon/index.js | 4 + .../src/assets/icomoon/fonts/icomoon.svg | 11 + .../src/assets/icomoon/fonts/icomoon.ttf | Bin 50660 -> 53392 bytes .../src/assets/icomoon/fonts/icomoon.woff | Bin 50736 -> 53468 bytes .../src/assets/icomoon/fonts/icomoon.woff2 | Bin 21884 -> 22884 bytes packages/design/src/assets/icomoon/style.css | 40 +- .../src/DesktopSession/ActionMenu.tsx | 12 +- .../DesktopSession/DesktopSession.story.tsx | 8 +- .../src/DesktopSession/DesktopSession.tsx | 20 +- .../teleport/src/DesktopSession/TopBar.tsx | 80 +- .../DesktopSession.story.test.tsx.snap | 690 ++++++++++-------- .../src/DesktopSession/useDesktopSession.tsx | 9 + packages/teleport/src/lib/tdp/client.ts | 38 +- packages/teleport/src/lib/tdp/playerClient.ts | 2 +- tsconfig.json | 4 +- 17 files changed, 567 insertions(+), 355 deletions(-) diff --git a/packages/design/src/Icon/Icon.jsx b/packages/design/src/Icon/Icon.jsx index d7810c398..760d732a0 100644 --- a/packages/design/src/Icon/Icon.jsx +++ b/packages/design/src/Icon/Icon.jsx @@ -143,6 +143,8 @@ export const Expand = makeFontIcon('Expand', 'icon-frame-expand'); export const Facebook = makeFontIcon('Facebook', 'icon-facebook'); export const FacebookSquare = makeFontIcon('FacebookSquare', 'icon-facebook2'); export const FileCode = makeFontIcon('Youtube', 'icon-file-code'); +export const FolderPlus = makeFontIcon('FolderPlus', 'icon-folder-plus'); +export const FolderShared = makeFontIcon('FolderShared', 'icon-folder-shared'); export const ForwarderAdded = makeFontIcon( 'ForwarderAdded', 'icon-add-fowarder' diff --git a/packages/design/src/Icon/Icon.story.js b/packages/design/src/Icon/Icon.story.js index a54843a65..14aee88dc 100644 --- a/packages/design/src/Icon/Icon.story.js +++ b/packages/design/src/Icon/Icon.story.js @@ -96,6 +96,8 @@ export const ListOfIcons = () => ( + + diff --git a/packages/design/src/Icon/index.js b/packages/design/src/Icon/index.js index f6981e07e..c055c7fe6 100644 --- a/packages/design/src/Icon/index.js +++ b/packages/design/src/Icon/index.js @@ -88,6 +88,8 @@ import Icon, { Facebook, FacebookSquare, FileCode, + FolderPlus, + FolderShared, ForwarderAdded, Github, Google, @@ -251,6 +253,8 @@ export { Facebook, FacebookSquare, FileCode, + FolderPlus, + FolderShared, ForwarderAdded, Github, Google, diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.svg b/packages/design/src/assets/icomoon/fonts/icomoon.svg index 2843098f8..87fa6af6d 100644 --- a/packages/design/src/assets/icomoon/fonts/icomoon.svg +++ b/packages/design/src/assets/icomoon/fonts/icomoon.svg @@ -9,6 +9,7 @@ + @@ -19,8 +20,11 @@ + + + @@ -141,6 +145,13 @@ + + + + + + + diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.ttf b/packages/design/src/assets/icomoon/fonts/icomoon.ttf index 564e4b512445384f8ba8b0a5a223f0141a6a870c..dd20d7f8b22255b4cabf963a5d2218286440ffe9 100644 GIT binary patch delta 3336 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 delta 842 zcmbQRkoieBb3Fqi0|Ns$LjwadgMojrz7f9={{o=M9w1Ig&P^;(`gzHafq_v5h>xTv z78d};1sE8Z9sp^M^qk7HXYXbx0r@Y0TCQZICZ@>!pZT7FVLwQ}Sq4ym<2ma@ApZ-H zuac2lQZaj_LJb4M0STaxB9;nt_0pz4HI54m>r~&<>@PO$->Vw-4 z?mcvUnEB|~W2MIyPpzK@KRx>N_~a}`X~y))ZHz`zU`4mED!Rewlcc~Tzd&9`UQ6zX z+(KDbnO8Dbr7lbDk@A-El5&-DkdTv*6kjPmRlG;MO}tS&TRcuYMm$hlNt{#crx=6i zAJLDZ#{}91^!b1D|KdN)e~AAee;vObzdFAfKL_6yK6Ric7$;9;N}v3b$z^gNbJJ#N z7ID_eNt~9OKXWGaZQi>uTSG?N{0n0|zs*+$ZWfS_8Scie+6$v6yPPr?T@4WjOENG4 zDIi~K@{Ch@Y>Zkg42)WvZ=8C~I63+>@8maU%Ihr{;uw}OJYXzioWOXB@d=X&QytSf zrdLcqnAw;Wn8TQRn7^^8v81rHu*_q*#cIcz#X5`i8(Rw70=9eXVH^q^b(|txaop>8 zGI$Q~R`FirH{d@dutac;&@y2T;UeKJA|0YyqJPBY#MelylH`-DlDs6fOj<|!lgt#^ z3fU)eUiI>7@;M3u3hxwC6mKa-DIHKYP;OD-Q@Nv>r+P`PK;1=sm4=kY3C#&wv$T$B zebScG_R^lCYp1(N&rP2}e}h4Sp@rcyqiM!A#t%%|Om$4NOb?hPm@P1SXRc&kU_Q(I zkp-Vcn#BT(L)LyaN;Y@wnCzZ7ggAV0a&QiF-s2+W5_-%v%WZ8VL?D8%1{oxnnx5w{^|EmC_fGGic0v-i&1sVlb1?~u{3uXw`2wf2RDy%C~ YEJ`B!S*%2yMO+p*->lwz?%W|p0IO#cTmS$7 diff --git a/packages/design/src/assets/icomoon/fonts/icomoon.woff b/packages/design/src/assets/icomoon/fonts/icomoon.woff index ecb305235a050c321e7e864cf28fbc220527bb42..1acac7b28e181beaf915ba48c4236624cc7926bd 100644 GIT binary patch delta 3318 zcmbtXdu&tJ89(Qq>wB;5B-f5#iS5LXTi*l{JIVF4d6A?EZAl0L5|hD3N%O1*DJrls z_`~khqHd)d;Ho1QMuV|Rv#Kgvs&%Ru^D3aIB`aesn^?qBx`4DH7O88+Hf;7CJB-Kv z+IE$5?m6H0JKyVk-*=tq{bcSKF+aa%$Agv>zxH4rUq0ytgg`>#e8_sZcHW?L_tS z%>3y5hx31!zw&9AE0GS z&%~XNoy2j>(d_U!YAerH{;=Y4`wjc=te;pX zqfdBAXX0z*_0A~5Buxeoi%KC5dY3+o6|+fif31bFj z(@~~hap#caPZQ);X8uZSDlbZ-0TLyc-Yzz|EW8?9csPFRW^*o$qs=$*C;f}fI10-} zl;G9P>+U)r8jcnagTq^jwZJsupr^nXl=xAyLW_kIB z#-%1tYuc=Gcdi+T;$tJ1GTfqo5R43e@O#Vn@j!BjfRxt59m~n^K>zJj~SvaK0 zPSLrrcY3|fm!|}iFeM1QnV%H38gY_Ut5g~y2q*?#3CMrvbCM(*kq142Hlhji4fHa4 z9nlU1`6CBb;CwDr$!-yI?mQu+K$e({kWM97x{Cs$*$5CL@E|K!;3Wb;3~m|R4}?RC z1DlQDxD?I@Ep|6bJOnWq2ti7lK`cmo82&K-z6dijDmBaVDVkN)&sC=&B!Z9%9|_wk zDr_mDQRQ0XE?YPZ3;yG z{Q!d_jc_UeGr$@`N*HFPzQNOqs}jH5+ULVA&Zxe9Mlf+4QD4LlJ`85=5;ST~#pDtV zqvpio*CR1zBjn@3Z^Ie2iAyYjk}4CF9fDTr2S1X~3M-I=nov7h4~Z#3bD{-D6Oa~N z6K!6!@`Cz+?12=j!H{!7eZD*9>oni|DAOU35Xb!D?m(SbsUN<4wW&(vR)@_ zXia*v2~oRC)QWMZ7q8Zev%r6wun_HCOm(4H^Bj%Hd=3j1m>N~~y3-3AkTB)+es7mn z%mN-?1EHce&Vqb3mrLR=DC4>|3hA@Nqql}+X#6s=!MzQ_XCiN80II1K(}v@~P+Zhn z_`usxt(-+14VyP&iGnsS|!WG&QGs}?(Z{f4oXf-g3H;$Er~Wd{y?NkKtBM;8XY(Q_4KeyvfXwGEz@kNe>wzyU8JP zj^x-0_Aq;i{Zge<^{A#*b6gQO!Cm4@`9A)fa7b8G@6%i;au!`KR*G+wJRu&}HS5i# zm4-6I9>brEvhg3LBj!oVfwIbSdwIP4hPBgHW;+_Qk5q6Kf3A#Ho^%{`TycKOwZ(PG z-QzwlDbjK2%SYm#UeCPTDPOJnS+%`-|FXvAOifWuq-Lb%K+Vb867RIn==*uybM@}} ziw$XI&@cGk3aks<3LXv4g_O|6aA|l;__grWNKvFe5|8};(b7i)O_}D`T6$Y|u86js zZI6w0{PeMNoxaZfU6HQ2$C)RUC*NMBtV(z9>Au!;Vf7om_TIy5Hm^C?7wS9OcX4fK z?Tc&Y*Bx13xqkQhtNoe*-N4|$y8~CFLbN_Q82v%?%7znz@?h`Avzv6ArZ+b~)jCx4 ebnEcuVfgO_uI3#EL+hXq{l$`hX5y!(@xK6Lg|W2& delta 904 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 TR?WJHPS5yvA4Q1UE literal 21884 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 H0D&z4PHt(3 diff --git a/packages/design/src/assets/icomoon/style.css b/packages/design/src/assets/icomoon/style.css index f81659e0b..bf9a2aa62 100644 --- a/packages/design/src/assets/icomoon/style.css +++ b/packages/design/src/assets/icomoon/style.css @@ -1,11 +1,6 @@ @font-face { font-family: 'icomoon'; - src: url('fonts/icomoon.eot'); - font-display: block; -} -@font-face { - font-family: 'icomoon'; - src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format('truetype'); + src: url("data:application/x-font-ttf;charset=utf-8;base64,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") format('truetype'); font-weight: normal; font-style: normal; font-display: block; @@ -26,6 +21,9 @@ -moz-osx-font-smoothing: grayscale; } +.icon-key:before { + content: "\e968"; +} .icon-desktop:before { content: "\e966"; } @@ -89,6 +87,15 @@ .icon-archive2:before { content: "\e90c"; } +.icon-copy:before { + content: "\e96c"; +} +.icon-folder-plus:before { + content: "\e96d"; +} +.icon-folder-shared:before { + content: "\e96e"; +} .icon-clipboard-text:before { content: "\e90d"; } @@ -215,6 +222,12 @@ .icon-sync2:before { content: "\e962"; } +.icon-clock3:before { + content: "\e96b"; +} +.icon-exit-right:before { + content: "\e969"; +} .icon-cli:before { content: "\e920"; } @@ -227,6 +240,9 @@ .icon-link:before { content: "\e922"; } +.icon-unlink2:before { + content: "\e96a"; +} .icon-magnifier:before { content: "\e93d"; } @@ -341,12 +357,24 @@ .icon-add:before { content: "\e145"; } +.icon-arrow_back:before { + content: "\e5c4"; +} .icon-arrow_drop_down:before { content: "\e5c5"; } .icon-arrow_drop_up:before { content: "\e5c7"; } +.icon-arrow_forward:before { + content: "\e5c8"; +} +.icon-chat_bubble_outline:before { + content: "\e0cb"; +} +.icon-check:before { + content: "\e5ca"; +} .icon-close:before { content: "\e5cd"; } diff --git a/packages/teleport/src/DesktopSession/ActionMenu.tsx b/packages/teleport/src/DesktopSession/ActionMenu.tsx index 8b1f0e718..138d5a6f9 100644 --- a/packages/teleport/src/DesktopSession/ActionMenu.tsx +++ b/packages/teleport/src/DesktopSession/ActionMenu.tsx @@ -20,6 +20,8 @@ import * as Icons from 'design/Icon'; import { Flex } from 'design'; export default function ActionMenu(props: Props) { + const { showShareDirectory, onShareDirectory, onDisconnect } = props; + return ( - + {showShareDirectory && ( + + + Share Directory + + )} + Disconnect @@ -41,6 +49,8 @@ export default function ActionMenu(props: Props) { } type Props = { + showShareDirectory: boolean; + onShareDirectory: VoidFunction; onDisconnect: VoidFunction; }; diff --git a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx index 2f65a91ab..779daab61 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx @@ -53,7 +53,12 @@ const props: State = { onWsClose: () => {}, wsConnection: 'closed', disconnected: false, - setDisconnected: () => null, + setDisconnected: () => {}, + setClipboardState: () => {}, + setIsRecording: () => {}, + canShareDirectory: true, + isSharingDirectory: false, + setIsSharingDirectory: () => {}, onPngFrame: () => {}, onTdpError: () => {}, onKeyDown: () => {}, @@ -136,6 +141,7 @@ export const ConnectedSettingsTrue = () => { errorText: '', }} isRecording={true} + isSharingDirectory={true} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); }} diff --git a/packages/teleport/src/DesktopSession/DesktopSession.tsx b/packages/teleport/src/DesktopSession/DesktopSession.tsx index 01e42edc5..f759e16c3 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.tsx @@ -107,7 +107,12 @@ function Session(props: PropsWithChildren) { username, hostname, clipboardState, + setClipboardState, isRecording, + setIsRecording, + canShareDirectory, + isSharingDirectory, + setIsSharingDirectory, onPngFrame, onClipboardData, onTdpError, @@ -144,11 +149,22 @@ function Session(props: PropsWithChildren) { { setDisconnected(true); + setClipboardState(prevState => ({ + ...prevState, + enabled: false, + })); + setIsRecording(false); + setIsSharingDirectory(false); tdpClient.nuke(); }} userHost={`${username}@${hostname}`} - clipboard={clipboardSharingActive} - recording={isRecording} + clipboardSharingEnabled={clipboardSharingActive} + isRecording={isRecording} + canShareDirectory={canShareDirectory} + isSharingDirectory={isSharingDirectory} + onShareDirectory={() => { + setIsSharingDirectory(true); + }} /> {props.children} diff --git a/packages/teleport/src/DesktopSession/TopBar.tsx b/packages/teleport/src/DesktopSession/TopBar.tsx index 98d06915c..3d485a1bb 100644 --- a/packages/teleport/src/DesktopSession/TopBar.tsx +++ b/packages/teleport/src/DesktopSession/TopBar.tsx @@ -16,12 +16,20 @@ limitations under the License. import React from 'react'; import styled, { useTheme } from 'styled-components'; import { Text, TopNav, Flex } from 'design'; -import { Clipboard } from 'design/Icon'; +import { Clipboard, FolderShared } from 'design/Icon'; import { colors } from 'teleport/Console/colors'; import ActionMenu from './ActionMenu'; export default function TopBar(props: Props) { - const { userHost, clipboard, recording, onDisconnect } = props; + const { + userHost, + clipboardSharingEnabled, + isRecording, + onDisconnect, + canShareDirectory, + isSharingDirectory, + onShareDirectory, + } = props; const theme = useTheme(); const primaryOnTrue = (b: boolean): any => { @@ -42,30 +50,45 @@ export default function TopBar(props: Props) { {userHost} - - - Clipboard Sharing {clipboard ? 'Enabled' : 'Disabled'} - - - - - {recording ? '' : 'Not '}Recording - + + + + Recording + - + ); @@ -79,6 +102,12 @@ const StyledClipboard = styled(Clipboard)` align-self: 'center'; `; +const StyledFolderShared = styled(FolderShared)` + font-weight: ${({ theme }) => theme.fontWeights.bold}; + font-size: ${({ theme }) => theme.fontSizes[6] + 'px'}; + align-self: 'center'; +`; + const StyledRecordingIndicator = styled.div` width: 10px; height: 10px; @@ -89,7 +118,10 @@ const StyledRecordingIndicator = styled.div` type Props = { userHost: string; - clipboard: boolean; - recording: boolean; + clipboardSharingEnabled: boolean; + isRecording: boolean; + canShareDirectory: boolean; + isSharingDirectory: boolean; onDisconnect: VoidFunction; + onShareDirectory: VoidFunction; }; diff --git a/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap b/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap index 0ed77a051..778b304bd 100644 --- a/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap +++ b/packages/teleport/src/DesktopSession/__snapshots__/DesktopSession.story.test.tsx.snap @@ -1,20 +1,20 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`clipboard error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -36,20 +36,20 @@ exports[`clipboard error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -61,7 +61,7 @@ exports[`clipboard error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -83,25 +83,31 @@ exports[`clipboard error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -110,7 +116,7 @@ exports[`clipboard error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -133,7 +139,7 @@ exports[`clipboard error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -154,45 +160,49 @@ exports[`clipboard error 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -200,7 +210,7 @@ exports[`clipboard error 1`] = `
clipboard error @@ -213,20 +223,20 @@ exports[`clipboard error 1`] = ` `; exports[`connected settings false 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -248,20 +258,20 @@ exports[`connected settings false 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -273,7 +283,7 @@ exports[`connected settings false 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -295,25 +305,31 @@ exports[`connected settings false 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -339,45 +355,49 @@ exports[`connected settings false 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -392,20 +412,20 @@ exports[`connected settings false 1`] = ` `; exports[`connected settings true 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -427,20 +447,20 @@ exports[`connected settings true 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -452,7 +472,7 @@ exports[`connected settings true 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -474,25 +494,31 @@ exports[`connected settings true 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -518,45 +544,49 @@ exports[`connected settings true 1`] = `
- - Clipboard Sharing - Enabled -
-
-
-
+
- - Recording +
+
+ Recording +
@@ -571,20 +601,20 @@ exports[`connected settings true 1`] = ` `; exports[`connection error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -606,20 +636,20 @@ exports[`connection error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -631,7 +661,7 @@ exports[`connection error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -653,25 +683,31 @@ exports[`connection error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -680,7 +716,7 @@ exports[`connection error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -703,7 +739,7 @@ exports[`connection error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -724,45 +760,49 @@ exports[`connection error 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -770,7 +810,7 @@ exports[`connection error 1`] = `
some connection error @@ -783,26 +823,26 @@ exports[`connection error 1`] = ` `; exports[`disconnected 1`] = ` -.c12 { +.c13 { box-sizing: border-box; margin: 72px; text-align: center; } -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -824,20 +864,20 @@ exports[`disconnected 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -849,7 +889,7 @@ exports[`disconnected 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -871,25 +911,31 @@ exports[`disconnected 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -915,45 +961,49 @@ exports[`disconnected 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -961,10 +1011,10 @@ exports[`disconnected 1`] = `
Session successfully disconnected
@@ -977,20 +1027,20 @@ exports[`disconnected 1`] = ` `; exports[`fetch error 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1012,20 +1062,20 @@ exports[`fetch error 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1037,7 +1087,7 @@ exports[`fetch error 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1059,25 +1109,31 @@ exports[`fetch error 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1086,7 +1142,7 @@ exports[`fetch error 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -1109,7 +1165,7 @@ exports[`fetch error 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -1130,45 +1186,49 @@ exports[`fetch error 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1176,7 +1236,7 @@ exports[`fetch error 1`] = `
some fetch error @@ -1189,20 +1249,20 @@ exports[`fetch error 1`] = ` `; exports[`unintended disconnect 1`] = ` -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1224,20 +1284,20 @@ exports[`unintended disconnect 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1249,7 +1309,7 @@ exports[`unintended disconnect 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1271,25 +1331,31 @@ exports[`unintended disconnect 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1298,7 +1364,7 @@ exports[`unintended disconnect 1`] = ` vertical-align: text-bottom; } -.c12 { +.c13 { display: flex; align-items: center; justify-content: center; @@ -1321,7 +1387,7 @@ exports[`unintended disconnect 1`] = ` min-width: 450px; } -.c12 a { +.c13 a { color: #FFFFFF; } @@ -1342,45 +1408,49 @@ exports[`unintended disconnect 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1388,7 +1458,7 @@ exports[`unintended disconnect 1`] = `
Session disconnected for an unknown reason @@ -1401,26 +1471,26 @@ exports[`unintended disconnect 1`] = ` `; exports[`webauthn prompt 1`] = ` -.c12 { +.c13 { box-sizing: border-box; margin: 72px; text-align: center; } -.c5 { +.c6 { display: inline-block; transition: color .3s; - padding-right: 8px; + padding-right: 16px; color: #FFFFFF; } -.c11 { +.c12 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c10 { +.c11 { align-items: center; border: none; cursor: pointer; @@ -1442,20 +1512,20 @@ exports[`webauthn prompt 1`] = ` color: rgba(255,255,255,0.56); } -.c10 .c4 { +.c11 .c5 { color: inherit; } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:disabled { +.c11:disabled { color: rgba(255,255,255,0.3); } -.c10:hover, -.c10:focus { +.c11:hover, +.c11:focus { background: rgba(255,255,255,0.1); } @@ -1467,7 +1537,7 @@ exports[`webauthn prompt 1`] = ` padding-right: 16px; } -.c3 { +.c10 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -1489,25 +1559,31 @@ exports[`webauthn prompt 1`] = ` flex-direction: row; } -.c7 { +.c3 { box-sizing: border-box; padding-left: 16px; padding-right: 16px; display: flex; } -.c8 { +.c4 { box-sizing: border-box; display: flex; align-items: center; } -.c6 { +.c8 { font-weight: 600; font-size: 18px; align-self: 'center'; } +.c7 { + font-weight: 600; + font-size: 22px; + align-self: 'center'; +} + .c9 { width: 10px; height: 10px; @@ -1533,45 +1609,49 @@ exports[`webauthn prompt 1`] = `
- - Clipboard Sharing - Disabled -
-
-
-
+
- Not - Recording +
+
+ Recording +
@@ -1579,7 +1659,7 @@ exports[`webauthn prompt 1`] = `
(); const [hostname, setHostname] = useState(''); @@ -125,6 +128,7 @@ export default function useDesktopSession() { userService.fetchUserContext().then(user => { setHasClipboardSharingEnabled(user.acl.clipboardSharingEnabled); setIsRecording(user.acl.desktopSessionRecordingEnabled); + setCanShareDirectory(user.acl.directorySharingEnabled); }), ]) ); @@ -148,7 +152,12 @@ export default function useDesktopSession() { hostname, username, clipboardState, + setClipboardState, isRecording, + setIsRecording, + canShareDirectory, + isSharingDirectory, + setIsSharingDirectory, fetchAttempt, tdpConnection, wsConnection, diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 0f211e4fb..b7596baa6 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -39,11 +39,10 @@ export enum TdpClientEvent { // calling Client.nuke() (typically after Client emits a TdpClientEvent.DISCONNECT or TdpClientEvent.ERROR event) in order to clean // up its websocket listeners. export default class Client extends EventEmitterWebAuthnSender { - codec: Codec; - socket: WebSocket; - socketAddr: string; - username: string; - logger = Logger.create('TDPClient'); + protected codec: Codec; + protected socket: WebSocket | undefined; + private socketAddr: string; + private logger = Logger.create('TDPClient'); constructor(socketAddr: string) { super(); @@ -179,30 +178,41 @@ export default class Client extends EventEmitterWebAuthnSender { } } + protected send( + data: string | ArrayBufferLike | Blob | ArrayBufferView + ): void { + if (this.socket && this.socket.readyState === 1) { + this.socket.send(data); + return; + } + + this.handleError(new Error('websocket unavailable')); + } + sendUsername(username: string) { - this.socket?.send(this.codec.encodeUsername(username)); + this.send(this.codec.encodeUsername(username)); } sendMouseMove(x: number, y: number) { - this.socket.send(this.codec.encodeMouseMove(x, y)); + this.send(this.codec.encodeMouseMove(x, y)); } sendMouseButton(button: MouseButton, state: ButtonState) { - this.socket.send(this.codec.encodeMouseButton(button, state)); + this.send(this.codec.encodeMouseButton(button, state)); } sendMouseWheelScroll(axis: ScrollAxis, delta: number) { - this.socket.send(this.codec.encodeMouseWheelScroll(axis, delta)); + this.send(this.codec.encodeMouseWheelScroll(axis, delta)); } sendKeyboardInput(code: string, state: ButtonState) { // Only send message if key is recognized, otherwise do nothing. const msg = this.codec.encodeKeyboardInput(code, state); - if (msg) this.socket.send(msg); + if (msg) this.send(msg); } sendClipboardData(clipboardData: ClipboardData) { - this.socket.send(this.codec.encodeClipboardData(clipboardData)); + this.send(this.codec.encodeClipboardData(clipboardData)); } sendWebAuthn(data: WebauthnAssertionResponse) { @@ -210,16 +220,16 @@ export default class Client extends EventEmitterWebAuthnSender { mfaType: 'n', jsonString: JSON.stringify(data), }); - this.socket.send(msg); + this.send(msg); } resize(spec: ClientScreenSpec) { - this.socket?.send(this.codec.encodeClientScreenSpec(spec)); + this.send(this.codec.encodeClientScreenSpec(spec)); } // Emits an TdpClientEvent.ERROR event. Sets this.errored to true to alert the socket.onclose handler that // it needn't emit a generic unknown error event. - handleError(err: Error) { + private handleError(err: Error) { this.logger.error(err); this.emit(TdpClientEvent.TDP_ERROR, err); this.socket?.close(); diff --git a/packages/teleport/src/lib/tdp/playerClient.ts b/packages/teleport/src/lib/tdp/playerClient.ts index 2cd1c344d..5786c9d13 100644 --- a/packages/teleport/src/lib/tdp/playerClient.ts +++ b/packages/teleport/src/lib/tdp/playerClient.ts @@ -36,7 +36,7 @@ export class PlayerClient extends Client { // togglePlayPause toggles the playback system between "playing" and "paused" states. togglePlayPause() { - this.socket?.send(JSON.stringify({ action: Action.TOGGLE_PLAY_PAUSE })); + this.send(JSON.stringify({ action: Action.TOGGLE_PLAY_PAUSE })); this.emit(PlayerClientEvent.TOGGLE_PLAY_PAUSE); } diff --git a/tsconfig.json b/tsconfig.json index 308e46828..648f92e8e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,7 +28,9 @@ // Import non-ES modules as default imports. "esModuleInterop": true, // Skip type checking of libraries' declaration files. - "skipLibCheck": true + "skipLibCheck": true, + // TODO: https://github.com/gravitational/webapps/issues/957 + "strictNullChecks": false, }, "exclude": [ "node_modules", From 1129d77aa18c44808a8c43286126a5c1928f9c63 Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Mon, 18 Jul 2022 13:25:37 -0400 Subject: [PATCH 3/5] `SharedDirectoryAnnounce` (#960) --- packages/teleport/package.json | 1 + .../DesktopSession/DesktopSession.story.tsx | 4 - .../src/DesktopSession/DesktopSession.tsx | 21 +- .../teleport/src/DesktopSession/TopBar.tsx | 23 - .../DesktopSession.story.test.tsx.snap | 406 ++++-------------- .../src/DesktopSession/useClipboard.ts | 2 +- .../src/DesktopSession/useDesktopSession.tsx | 8 +- .../src/DesktopSession/useTdpClientCanvas.tsx | 22 +- packages/teleport/src/lib/tdp/client.ts | 28 ++ packages/teleport/src/lib/tdp/codec.ts | 33 ++ yarn.lock | 34 +- 11 files changed, 210 insertions(+), 372 deletions(-) diff --git a/packages/teleport/package.json b/packages/teleport/package.json index 859ac922b..c1c931f35 100644 --- a/packages/teleport/package.json +++ b/packages/teleport/package.json @@ -24,6 +24,7 @@ }, "devDependencies": { "@gravitational/build": "^1.0.0", + "@types/wicg-native-file-system": "^2020.6.0", "jest-canvas-mock": "^2.3.1" } } diff --git a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx index 779daab61..2dbd461f6 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx @@ -46,7 +46,6 @@ const props: State = { permission: { state: '' }, errorText: '', }, - isRecording: false, tdpClient: fakeClient(), username: 'user', onWsOpen: () => {}, @@ -55,7 +54,6 @@ const props: State = { disconnected: false, setDisconnected: () => {}, setClipboardState: () => {}, - setIsRecording: () => {}, canShareDirectory: true, isSharingDirectory: false, setIsSharingDirectory: () => {}, @@ -113,7 +111,6 @@ export const ConnectedSettingsFalse = () => { permission: { state: '' }, errorText: '', }} - isRecording={false} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); }} @@ -140,7 +137,6 @@ export const ConnectedSettingsTrue = () => { permission: { state: 'granted' }, errorText: '', }} - isRecording={true} isSharingDirectory={true} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); diff --git a/packages/teleport/src/DesktopSession/DesktopSession.tsx b/packages/teleport/src/DesktopSession/DesktopSession.tsx index f759e16c3..14bd4c747 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.tsx @@ -108,8 +108,6 @@ function Session(props: PropsWithChildren) { hostname, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, @@ -144,6 +142,19 @@ function Session(props: PropsWithChildren) { !disconnected && clipboardSuccess; + const onShareDirectory = () => { + window + .showDirectoryPicker() + .then(sharedDirHandle => { + setIsSharingDirectory(true); + tdpClient.sharedDirectory = sharedDirHandle; + tdpClient.sendSharedDirectoryAnnounce(); + }) + .catch(() => { + setIsSharingDirectory(false); + }); + }; + return ( ) { ...prevState, enabled: false, })); - setIsRecording(false); setIsSharingDirectory(false); tdpClient.nuke(); }} userHost={`${username}@${hostname}`} clipboardSharingEnabled={clipboardSharingActive} - isRecording={isRecording} canShareDirectory={canShareDirectory} isSharingDirectory={isSharingDirectory} - onShareDirectory={() => { - setIsSharingDirectory(true); - }} + onShareDirectory={onShareDirectory} /> {props.children} diff --git a/packages/teleport/src/DesktopSession/TopBar.tsx b/packages/teleport/src/DesktopSession/TopBar.tsx index 3d485a1bb..6d5ac2aa7 100644 --- a/packages/teleport/src/DesktopSession/TopBar.tsx +++ b/packages/teleport/src/DesktopSession/TopBar.tsx @@ -24,7 +24,6 @@ export default function TopBar(props: Props) { const { userHost, clipboardSharingEnabled, - isRecording, onDisconnect, canShareDirectory, isSharingDirectory, @@ -70,19 +69,6 @@ export default function TopBar(props: Props) { : 'Clipboard Sharing Disabled' } /> - - - Recording - -
-
-
- Recording -
-
@@ -210,7 +181,7 @@ exports[`clipboard error 1`] = `
clipboard error @@ -230,13 +201,13 @@ exports[`connected settings false 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -258,20 +229,20 @@ exports[`connected settings false 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -283,12 +254,6 @@ exports[`connected settings false 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -330,14 +295,6 @@ exports[`connected settings false 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -419,13 +361,13 @@ exports[`connected settings true 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -447,20 +389,20 @@ exports[`connected settings true 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -472,12 +414,6 @@ exports[`connected settings true 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -519,14 +455,6 @@ exports[`connected settings true 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -608,13 +521,13 @@ exports[`connection error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -636,20 +549,20 @@ exports[`connection error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -661,12 +574,6 @@ exports[`connection error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -708,15 +615,7 @@ exports[`connection error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -739,7 +638,7 @@ exports[`connection error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -776,33 +675,18 @@ exports[`connection error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -810,7 +694,7 @@ exports[`connection error 1`] = `
some connection error @@ -823,7 +707,7 @@ exports[`connection error 1`] = ` `; exports[`disconnected 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -836,13 +720,13 @@ exports[`disconnected 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -864,20 +748,20 @@ exports[`disconnected 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -889,7 +773,7 @@ exports[`disconnected 1`] = ` padding-right: 16px; } -.c10 { +.c12 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -936,14 +820,6 @@ exports[`disconnected 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1011,10 +872,10 @@ exports[`disconnected 1`] = `
Session successfully disconnected
@@ -1034,13 +895,13 @@ exports[`fetch error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1062,20 +923,20 @@ exports[`fetch error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1087,12 +948,6 @@ exports[`fetch error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1134,15 +989,7 @@ exports[`fetch error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1165,7 +1012,7 @@ exports[`fetch error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1202,33 +1049,18 @@ exports[`fetch error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1236,7 +1068,7 @@ exports[`fetch error 1`] = `
some fetch error @@ -1256,13 +1088,13 @@ exports[`unintended disconnect 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1284,20 +1116,20 @@ exports[`unintended disconnect 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1309,12 +1141,6 @@ exports[`unintended disconnect 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1356,15 +1182,7 @@ exports[`unintended disconnect 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1387,7 +1205,7 @@ exports[`unintended disconnect 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1424,33 +1242,18 @@ exports[`unintended disconnect 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1458,7 +1261,7 @@ exports[`unintended disconnect 1`] = `
Session disconnected for an unknown reason @@ -1471,7 +1274,7 @@ exports[`unintended disconnect 1`] = ` `; exports[`webauthn prompt 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -1484,13 +1287,13 @@ exports[`webauthn prompt 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color .3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1512,20 +1315,20 @@ exports[`webauthn prompt 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1537,12 +1340,6 @@ exports[`webauthn prompt 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1584,14 +1381,6 @@ exports[`webauthn prompt 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1659,7 +1433,7 @@ exports[`webauthn prompt 1`] = `
setHostname(desktop.name)), userService.fetchUserContext().then(user => { setHasClipboardSharingEnabled(user.acl.clipboardSharingEnabled); - setIsRecording(user.acl.desktopSessionRecordingEnabled); setCanShareDirectory(user.acl.directorySharingEnabled); }), ]) @@ -140,6 +136,8 @@ export default function useDesktopSession() { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing: clipboardState.enabled && clipboardState.permission.state === 'granted' && @@ -153,8 +151,6 @@ export default function useDesktopSession() { username, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, diff --git a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx index f9b143347..975110a9e 100644 --- a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx +++ b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx @@ -15,12 +15,13 @@ limitations under the License. */ import { useState, useEffect, useRef, Dispatch, SetStateAction } from 'react'; +import { Attempt } from 'shared/hooks/useAttemptNext'; import { TdpClient, ButtonState, ScrollAxis } from 'teleport/lib/tdp'; import { ClipboardData, PngFrame } from 'teleport/lib/tdp/codec'; -import { TopBarHeight } from './TopBar'; -import cfg from 'teleport/config'; import { getAccessToken, getHostName } from 'teleport/services/api'; -import { Attempt } from 'shared/hooks/useAttemptNext'; +import cfg from 'teleport/config'; +import { TopBarHeight } from './TopBar'; +import { ClipboardPermissionStatus } from './useClipboard'; export default function useTdpClientCanvas(props: Props) { const { @@ -29,6 +30,8 @@ export default function useTdpClientCanvas(props: Props) { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing, } = props; const [tdpClient, setTdpClient] = useState(null); @@ -76,6 +79,11 @@ export default function useTdpClientCanvas(props: Props) { // Default TdpClientEvent.TDP_ERROR handler const onTdpError = (err: Error) => { + setIsSharingDirectory(false); + setClipboardState(prevState => ({ + ...prevState, + enabled: false, + })); setTdpConnection({ status: 'failed', statusText: err.message }); }; @@ -200,5 +208,13 @@ type Props = { clusterId: string; setTdpConnection: Dispatch>; setWsConnection: Dispatch>; + setClipboardState: Dispatch< + SetStateAction<{ + enabled: boolean; + permission: ClipboardPermissionStatus; + errorText: string; + }> + >; + setIsSharingDirectory: Dispatch>; enableClipboardSharing: boolean; }; diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index b7596baa6..12deae320 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -42,6 +42,8 @@ export default class Client extends EventEmitterWebAuthnSender { protected codec: Codec; protected socket: WebSocket | undefined; private socketAddr: string; + sharedDirectory: FileSystemDirectoryHandle | undefined; + private logger = Logger.create('TDPClient'); constructor(socketAddr: string) { @@ -223,6 +225,32 @@ export default class Client extends EventEmitterWebAuthnSender { this.send(msg); } + private sharedDirectoryReady() { + if (!this.sharedDirectory) { + this.handleError( + new Error( + 'attempted to use a shared directory before one was initialized' + ) + ); + return false; + } + + return true; + } + + sendSharedDirectoryAnnounce() { + if (!this.sharedDirectoryReady()) return; + this.socket.send( + this.codec.encodeSharedDirectoryAnnounce({ + completionId: 0, // This is always the first request. + // Hardcode directoryId for now since we only support sharing 1 directory. + // We're using 2 because the smartcard device is hardcoded to 1 in the backend. + directoryId: 2, + name: this.sharedDirectory.name, + }) + ); + } + resize(spec: ClientScreenSpec) { this.send(this.codec.encodeClientScreenSpec(spec)); } diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index 42c8bec52..d0df37d51 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -21,6 +21,7 @@ export enum MessageType { MOUSE_WHEEL_SCROLL = 8, ERROR = 9, MFA_JSON = 10, + SHARED_DIRECTORY_ANNOUNCE = 11, } // 0 is left button, 1 is middle button, 2 is right button @@ -68,6 +69,13 @@ export type MfaJson = { jsonString: string; }; +// | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | +export type SharedDirectoryAnnounce = { + completionId: number; + directoryId: number; + name: string; +}; + // TdaCodec provides an api for encoding and decoding teleport desktop access protocol messages [1] // Buffers in TdaCodec are manipulated as DataView's [2] in order to give us low level control // of endianness (defaults to big endian, which is what we want), as opposed to using *Array @@ -373,6 +381,31 @@ export default class Codec { return buffer; } + // | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | + encodeSharedDirectoryAnnounce( + sharedDirAnnounce: SharedDirectoryAnnounce + ): Message { + const dataUtf8array = this.encoder.encode(sharedDirAnnounce.name); + + const bufLen = byteLength + 3 * uint32Length + dataUtf8array.length; + const buffer = new ArrayBuffer(bufLen); + const view = new DataView(buffer); + let offset = 0; + + view.setUint8(offset++, MessageType.SHARED_DIRECTORY_ANNOUNCE); + view.setUint32(offset, sharedDirAnnounce.completionId); + offset += uint32Length; + view.setUint32(offset, sharedDirAnnounce.directoryId); + offset += uint32Length; + view.setUint32(offset, dataUtf8array.length); + offset += uint32Length; + dataUtf8array.forEach(byte => { + view.setUint8(offset++, byte); + }); + + return buffer; + } + // decodeClipboardData decodes clipboard data decodeClipboardData(buffer: ArrayBuffer): ClipboardData { return { diff --git a/yarn.lock b/yarn.lock index a8b9f2607..10e8442cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3029,6 +3029,11 @@ tapable "^2.2.0" webpack "^5" +"@types/wicg-native-file-system@^2020.6.0": + version "2020.6.0" + resolved "https://registry.yarnpkg.com/@types/wicg-native-file-system/-/wicg-native-file-system-2020.6.0.tgz#63cbb7bac47bdb9eae4b0d66e63134b33e47e05d" + integrity sha512-M7n6jvHfUzUXDtf6UGpL6rVIddV7UzEYrvwZPORApeHvDGQnZJ79fXorLlDj8xJKyUemnEBohRd8yx09k9NBUw== + "@types/yargs-parser@*": version "20.2.1" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" @@ -5690,7 +5695,7 @@ delegates@^1.0.0: depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== des.js@^1.0.0: version "1.0.1" @@ -8156,6 +8161,11 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -9980,9 +9990,9 @@ minipass@^3.0.0, minipass@^3.1.1: yallist "^4.0.0" minipass@^3.1.0, minipass@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + version "3.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== dependencies: yallist "^4.0.0" @@ -12091,7 +12101,7 @@ ret@~0.1.10: retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== retry@^0.13.1: version "0.13.1" @@ -12577,20 +12587,20 @@ sockjs@^0.3.21: websocket-driver "^0.7.4" socks-proxy-agent@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz#f6b5229cc0cbd6f2f202d9695f09d871e951c85e" - integrity sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ== + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: agent-base "^6.0.2" debug "^4.3.3" socks "^2.6.2" socks@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + version "2.7.0" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" + integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== dependencies: - ip "^1.1.5" + ip "^2.0.0" smart-buffer "^4.2.0" source-list-map@^2.0.0: From 2aba1313ac652af02ebf64b9f1bc418b3f74fd9e Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Mon, 18 Jul 2022 18:48:04 -0400 Subject: [PATCH 4/5] `SharedDirectoryAcknowledge` (#965) --- packages/teleport/src/lib/tdp/client.ts | 30 ++++++++++-- packages/teleport/src/lib/tdp/codec.test.ts | 8 +++- packages/teleport/src/lib/tdp/codec.ts | 52 +++++++++++++++++++-- 3 files changed, 80 insertions(+), 10 deletions(-) diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 12deae320..55e04b555 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -23,6 +23,7 @@ import Codec, { ClientScreenSpec, PngFrame, ClipboardData, + SharedDirectoryErrCode, } from './codec'; export enum TdpClientEvent { @@ -108,6 +109,9 @@ export default class Client extends EventEmitterWebAuthnSender { case MessageType.MFA_JSON: this.handleMfaChallenge(buffer); break; + case MessageType.SHARED_DIRECTORY_ACKNOWLEDGE: + this.handleSharedDirectoryAcknowledge(buffer); + break; default: this.logger.warn(`received unsupported message type ${messageType}`); } @@ -165,8 +169,7 @@ export default class Client extends EventEmitterWebAuthnSender { this.emit(TermEventEnum.WEBAUTHN_CHALLENGE, mfaJson.jsonString); } else { // mfaJson.mfaType === 'u', or else decodeMfaJson would have thrown an error. - this.emit( - TdpClientEvent.TDP_ERROR, + this.handleError( new Error( 'Multifactor authentication is required for accessing this desktop, \ however the U2F API for hardware keys is not supported for desktop sessions. \ @@ -176,10 +179,31 @@ export default class Client extends EventEmitterWebAuthnSender { ); } } catch (err) { - this.emit(TdpClientEvent.TDP_ERROR, err); + this.handleError(err); } } + private wasSuccessful(errCode: SharedDirectoryErrCode) { + if (errCode === SharedDirectoryErrCode.Nil) { + return true; + } + + this.handleError( + new Error(`Encountered shared directory error: ${errCode}`) + ); + return false; + } + + handleSharedDirectoryAcknowledge(buffer: ArrayBuffer) { + const ack = this.codec.decodeSharedDirectoryAcknowledge(buffer); + + if (!this.wasSuccessful(ack.errCode)) { + return; + } + + this.logger.info('Started sharing directory: ' + this.sharedDirectory.name); + } + protected send( data: string | ArrayBufferLike | Blob | ArrayBufferView ): void { diff --git a/packages/teleport/src/lib/tdp/codec.test.ts b/packages/teleport/src/lib/tdp/codec.test.ts index ae0085464..7b9a53d4f 100644 --- a/packages/teleport/src/lib/tdp/codec.test.ts +++ b/packages/teleport/src/lib/tdp/codec.test.ts @@ -104,7 +104,9 @@ test('decodes message types', () => { const { buffer: pngFrameBuf } = makeBuf(MessageType.PNG_FRAME); const { buffer: clipboardBuf } = makeBuf(MessageType.CLIPBOARD_DATA); const { buffer: errorBuf } = makeBuf(MessageType.ERROR); - const { buffer: invalidBuf } = makeBuf(MessageType.MFA_JSON + 1); + const { buffer: invalidBuf } = makeBuf( + MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1 + ); expect(codec.decodeMessageType(pngFrameBuf)).toEqual(MessageType.PNG_FRAME); expect(codec.decodeMessageType(clipboardBuf)).toEqual( @@ -113,7 +115,9 @@ test('decodes message types', () => { expect(codec.decodeMessageType(errorBuf)).toEqual(MessageType.ERROR); expect(() => { codec.decodeMessageType(invalidBuf); - }).toThrow(`invalid message type: ${MessageType.MFA_JSON + 1}`); + }).toThrow( + `invalid message type: ${MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1}` + ); }); test('decodes errors', () => { diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index d0df37d51..d3b75db67 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -22,6 +22,7 @@ export enum MessageType { ERROR = 9, MFA_JSON = 10, SHARED_DIRECTORY_ANNOUNCE = 11, + SHARED_DIRECTORY_ACKNOWLEDGE = 12, } // 0 is left button, 1 is middle button, 2 is right button @@ -76,6 +77,31 @@ export type SharedDirectoryAnnounce = { name: string; }; +// | message type (12) | errCode error | directory_id uint32 | +export type SharedDirectoryAcknowledge = { + errCode: SharedDirectoryErrCode; + directoryId: number; +}; + +export enum SharedDirectoryErrCode { + // nil (no error, operation succeeded) + Nil = 0, + // operation failed + Failed = 1, + // resource does not exist + DoesNotExist = 2, + // resource already exists + AlreadyExists = 3, +} + +function toSharedDirectoryErrCode(errCode: number): SharedDirectoryErrCode { + if (!(errCode in SharedDirectoryErrCode)) { + throw new Error(`attempted to convert invalid error code ${errCode}`); + } + + return errCode as SharedDirectoryErrCode; +} + // TdaCodec provides an api for encoding and decoding teleport desktop access protocol messages [1] // Buffers in TdaCodec are manipulated as DataView's [2] in order to give us low level control // of endianness (defaults to big endian, which is what we want), as opposed to using *Array @@ -418,8 +444,7 @@ export default class Codec { // Throws an error on an invalid or unexpected MessageType value. decodeMessageType(buffer: ArrayBuffer): MessageType { const messageType = new DataView(buffer).getUint8(0); - // TODO(isaiah): this is fragile, instead switch all possibilities here. - if (messageType > MessageType.MFA_JSON) { + if (!(messageType in MessageType)) { throw new Error(`invalid message type: ${messageType}`); } return messageType; @@ -464,13 +489,30 @@ export default class Codec { data: image, }; pngFrame.data.onload = onload(pngFrame); - pngFrame.data.src = this._asBase64Url(buffer); + pngFrame.data.src = this.asBase64Url(buffer); return pngFrame; } - // _asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. - _asBase64Url(buffer: ArrayBuffer): string { + // | message type (12) | errCode error | directory_id uint32 | + decodeSharedDirectoryAcknowledge( + buffer: ArrayBuffer + ): SharedDirectoryAcknowledge { + const dv = new DataView(buffer); + let offset = 0; + offset += byteLength; // eat message type + const errCode = toSharedDirectoryErrCode(dv.getUint32(offset)); + offset += uint32Length; // eat errCode + const directoryId = dv.getUint32(5); + + return { + errCode, + directoryId, + }; + } + + // asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. + private asBase64Url(buffer: ArrayBuffer): string { return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(17))}`; } } From 783c5abdd56ca9f5339436b105c522a4cdf1f83b Mon Sep 17 00:00:00 2001 From: Isaiah Becker-Mayer Date: Tue, 19 Jul 2022 01:01:07 -0400 Subject: [PATCH 5/5] `SharedDirectoryInfoRequest` (#966) --- packages/shared/libs/logger.js | 4 + packages/teleport/src/lib/tdp/client.ts | 12 +++ packages/teleport/src/lib/tdp/codec.test.ts | 9 +-- packages/teleport/src/lib/tdp/codec.ts | 84 ++++++++++++++++----- 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/packages/shared/libs/logger.js b/packages/shared/libs/logger.js index 972c97d54..8a10659c2 100644 --- a/packages/shared/libs/logger.js +++ b/packages/shared/libs/logger.js @@ -35,6 +35,10 @@ export class Logger { this.log('info', ...args); } + debug(...args) { + this.log('debug', ...args); + } + error(...args) { this.log('error', ...args); } diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index 55e04b555..077ee6234 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -112,6 +112,9 @@ export default class Client extends EventEmitterWebAuthnSender { case MessageType.SHARED_DIRECTORY_ACKNOWLEDGE: this.handleSharedDirectoryAcknowledge(buffer); break; + case MessageType.SHARED_DIRECTORY_INFO_REQUEST: + this.handleSharedDirectoryInfoRequest(buffer); + break; default: this.logger.warn(`received unsupported message type ${messageType}`); } @@ -204,6 +207,15 @@ export default class Client extends EventEmitterWebAuthnSender { this.logger.info('Started sharing directory: ' + this.sharedDirectory.name); } + handleSharedDirectoryInfoRequest(buffer: ArrayBuffer) { + const req = this.codec.decodeSharedDirectoryInfoRequest(buffer); + // TODO(isaiah): remove debug once message is handled. + this.logger.debug( + 'Received SharedDirectoryInfoRequest: ' + JSON.stringify(req) + ); + // TODO(isaiah): here's where we'll respond with SharedDirectoryInfoResponse + } + protected send( data: string | ArrayBufferLike | Blob | ArrayBufferView ): void { diff --git a/packages/teleport/src/lib/tdp/codec.test.ts b/packages/teleport/src/lib/tdp/codec.test.ts index 7b9a53d4f..d0ac2ce56 100644 --- a/packages/teleport/src/lib/tdp/codec.test.ts +++ b/packages/teleport/src/lib/tdp/codec.test.ts @@ -104,9 +104,8 @@ test('decodes message types', () => { const { buffer: pngFrameBuf } = makeBuf(MessageType.PNG_FRAME); const { buffer: clipboardBuf } = makeBuf(MessageType.CLIPBOARD_DATA); const { buffer: errorBuf } = makeBuf(MessageType.ERROR); - const { buffer: invalidBuf } = makeBuf( - MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1 - ); + let invalid = MessageType.__LAST; + const { buffer: invalidBuf } = makeBuf(invalid); expect(codec.decodeMessageType(pngFrameBuf)).toEqual(MessageType.PNG_FRAME); expect(codec.decodeMessageType(clipboardBuf)).toEqual( @@ -115,9 +114,7 @@ test('decodes message types', () => { expect(codec.decodeMessageType(errorBuf)).toEqual(MessageType.ERROR); expect(() => { codec.decodeMessageType(invalidBuf); - }).toThrow( - `invalid message type: ${MessageType.SHARED_DIRECTORY_ACKNOWLEDGE + 1}` - ); + }).toThrow(`invalid message type: ${invalid}`); }); test('decodes errors', () => { diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index d3b75db67..df720f62b 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -23,6 +23,8 @@ export enum MessageType { MFA_JSON = 10, SHARED_DIRECTORY_ANNOUNCE = 11, SHARED_DIRECTORY_ACKNOWLEDGE = 12, + SHARED_DIRECTORY_INFO_REQUEST = 13, + __LAST, // utility value } // 0 is left button, 1 is middle button, 2 is right button @@ -83,6 +85,13 @@ export type SharedDirectoryAcknowledge = { directoryId: number; }; +// | message type (13) | completion_id uint32 | directory_id uint32 | path_length uint32 | path []byte | +export type SharedDirectoryInfoRequest = { + completionId: number; + directoryId: number; + path: string; +}; + export enum SharedDirectoryErrCode { // nil (no error, operation succeeded) Nil = 0, @@ -435,7 +444,7 @@ export default class Codec { // decodeClipboardData decodes clipboard data decodeClipboardData(buffer: ArrayBuffer): ClipboardData { return { - data: this._decodeStringMessage(buffer), + data: this.decodeStringMessage(buffer), }; } @@ -444,7 +453,7 @@ export default class Codec { // Throws an error on an invalid or unexpected MessageType value. decodeMessageType(buffer: ArrayBuffer): MessageType { const messageType = new DataView(buffer).getUint8(0); - if (!(messageType in MessageType)) { + if (!(messageType in MessageType) || messageType === MessageType.__LAST) { throw new Error(`invalid message type: ${messageType}`); } return messageType; @@ -453,43 +462,57 @@ export default class Codec { // decodeError decodes a raw tdp ERROR message and returns it as a string // | message type (9) | message_length uint32 | message []byte decodeErrorMessage(buffer: ArrayBuffer): string { - return this._decodeStringMessage(buffer); + return this.decodeStringMessage(buffer); } // decodeMfaChallenge decodes a raw tdp MFA challenge message and returns it as a string (of a json). // | message type (10) | mfa_type byte | message_length uint32 | json []byte decodeMfaJson(buffer: ArrayBuffer): MfaJson { let dv = new DataView(buffer); - const mfaType = String.fromCharCode(dv.getUint8(1)); + let offset = 0; + offset += byteLength; // eat message type + const mfaType = String.fromCharCode(dv.getUint8(offset)); + offset += byteLength; // eat mfa_type if (mfaType !== 'n' && mfaType !== 'u') { throw new Error(`invalid mfa type ${mfaType}, should be "n" or "u"`); } - const jsonString = this.decoder.decode(new Uint8Array(buffer.slice(6))); + offset += uint32Length; // eat message_length + const jsonString = this.decoder.decode( + new Uint8Array(buffer.slice(offset)) + ); return { mfaType, jsonString }; } - // _decodeStringMessage decodes a tdp message of the form + // decodeStringMessage decodes a tdp message of the form // | message type (N) | message_length uint32 | message []byte - _decodeStringMessage(buffer: ArrayBuffer): string { + private decodeStringMessage(buffer: ArrayBuffer): string { // slice(5) ensures we skip the message type and message_length - return this.decoder.decode(new Uint8Array(buffer.slice(5))); + const offset = 0 + byteLength + uint32Length; // eat message type and message_length + return this.decoder.decode(new Uint8Array(buffer.slice(offset))); } // decodePngFrame decodes a raw tdp PNG frame message and returns it as a PngFrame // | message type (2) | left uint32 | top uint32 | right uint32 | bottom uint32 | data []byte | // https://github.com/gravitational/teleport/blob/master/rfd/0037-desktop-access-protocol.md#2---png-frame - decodePngFrame(buffer: ArrayBuffer, onload: (PngFrame) => any): PngFrame { - let dv = new DataView(buffer); + decodePngFrame( + buffer: ArrayBuffer, + onload: (pngFrame: PngFrame) => any + ): PngFrame { + const dv = new DataView(buffer); const image = new Image(); - const pngFrame = { - left: dv.getUint32(1), - top: dv.getUint32(5), - right: dv.getUint32(9), - bottom: dv.getUint32(13), - data: image, - }; + let offset = 0; + offset += byteLength; // eat message type + const left = dv.getUint32(offset); + offset += uint32Length; // eat left + const top = dv.getUint32(offset); + offset += uint32Length; // eat top + const right = dv.getUint32(offset); + offset += uint32Length; // eat right + const bottom = dv.getUint32(offset); + offset += uint32Length; // eat bottom + const pngFrame = { left, top, right, bottom, data: image }; pngFrame.data.onload = onload(pngFrame); - pngFrame.data.src = this.asBase64Url(buffer); + pngFrame.data.src = this.asBase64Url(buffer, offset); return pngFrame; } @@ -511,9 +534,30 @@ export default class Codec { }; } + // | message type (13) | completion_id uint32 | directory_id uint32 | path_length uint32 | path []byte | + decodeSharedDirectoryInfoRequest( + buffer: ArrayBuffer + ): SharedDirectoryInfoRequest { + const dv = new DataView(buffer); + let offset = 0; + offset += byteLength; // eat message type + const completionId = dv.getUint32(offset); + offset += uint32Length; // eat completion_id + const directoryId = dv.getUint32(offset); + offset += uint32Length; // eat directory_id + offset += uint32Length; // eat path_length + const path = this.decoder.decode(new Uint8Array(buffer.slice(offset))); + + return { + completionId, + directoryId, + path, + }; + } + // asBase64Url creates a data:image uri from the png data part of a PNG_FRAME tdp message. - private asBase64Url(buffer: ArrayBuffer): string { - return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(17))}`; + private asBase64Url(buffer: ArrayBuffer, offset: number): string { + return `data:image/png;base64,${arrayBufferToBase64(buffer.slice(offset))}`; } }