Commit Graph
238 Commits
Author SHA1 Message Date
Tiago Silva 067be631a5 Add usage reporting for AI-generated session summaries (#63179)
This change adds tracking for AI-generated session summaries so we can monitor feature usage and token costs.

Two new events are introduced:

- `SessionSummaryAccessEvent` tracks when users view AI summaries and which session types and resources are accessed.
- `SessionSummaryCreateEvent` tracks when summaries are generated, including input and output token counts for cost and capacity planning.

Events are aggregated in 15-minute windows by session type (SSH, Kubernetes, database, desktop) and resource name.

User access data is added to `UserActivityReport` via a new `SessionSummariesAccessedRecord`. AI generation metrics are reported in a new `IdentitySecuritySummariesGeneratedReport`, which tracks token usage per resource.

All resource names are anonymized with HMAC-SHA-256 before submission.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2026-01-28 12:48:57 +00:00
Nick Marais 7b3fe4ce26 feat: GHA + K8s guide improvements (#62778)
* Add IaC info alert to welcome step

* Add conditional info alert to "allow any branch" input

* Rename "done" button (to "finish")

* Add repo restriction help text

* Ensure "refs/heads/" prefix for branch input

* Add code panel to Welcome step

* Add `inProgress` mode to CodePanel

* Shift CodePanel left on finish step

* De-emphasise final button and make prior steps clearer

* Explain how to apply terraform template

* Improve manual label entry

* Update labels field label

* Enforce wildcard label

* Update label values format (OR)

* Explain workflows on "main branch"

* Clarify prerequisites

* Improve groups and users entry

* Copy tweak on Configure Access step

* Add groups and users validation

* Add kubernetes cluster selector

* Fix Terraform template tests

* Move cluster select to Setup Workflow step

* Tweak copy warning wording

* With emphasis not clarity

* Replace "setup" with "set up"

* Make cluster selector async searchable

* Fix lint issue

* Fix lint issue (again)
2026-01-27 13:11:15 +00:00
Grzegorz ZdunekandRafał Cieślak f0714decaf Fix launching AWS IC from Connect (#62796)
* Add `sub_kind` and `permission_sets` to `App` message

* Allow launching AWS IAM IC

* Add AWS domain to allowlist

* Fix makeApp helper

* Add story

* Validate path and host parts, add test

* Support US gov partition addresses

* Update proto message

* Use more realistic publicAddr in test

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2026-01-14 14:57:48 +00:00
Tiago Silva c3c1425908 Add support for multiple Host CAs in AccessGraph registration (#62611)
Updates the RegisterRequest proto to support multiple Host CA certificates
by introducing a new host_ca_pems repeated field while maintaining backwards
compatibility by deprecating the existing host_ca_pem field. This enables
proper authentication during Host CA rotation and HSM scenarios where
multiple certificates may be active simultaneously.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2026-01-06 17:30:05 +00:00
Nick Marais a4ac509bc5 feat: Add user event tracking to GHA+K8s guide (#62192)
* Initial refactor existing guide (ssh)

* Add provider and state reducer

* Welcome step

* Connect GitHub step

* Configure access step

* Finish step

* Add guide to integrations

* Add completion confirmation

* Add .tf file formatting in TextEditor

* Support updating TextEditor content

* Fetch and generate templates

* Add CodePanel component

* Add code panel to GitHub step

* Add code panel to access step

* Add code panel to finish step

* Add Kubernetes labels select component

* Add labels to state

* Add labels selector to access step

* Add welcome step to tracking usage events

* Add `useTracking`

* Track start and stop events

* Track steps events

* Track section events

* Track field events

* Track link events

* Track code copy events

* Extend tests

* Update stories

* Simplify react context usage

* Rename `captureSuccess` to `userEventCaptureSuccess`

* Rename file `tracking-tester.ts` to `trackingTester.ts`

* fix: Allow `:` in label values

* Reference frontend label matching logic in backend

* Allow `:` in label names and values

* Use Set one-liner

* Remove unnecessary else

* Fix test

* Allow spaces in label values
2025-12-16 17:56:53 +00:00
rosstimothy a6a6284c88 Scopes: validate scope when dialing (#61859)
The scope of the certificate presented by agents to the reversetunnel
server is now tracked and stored with the remoteConn. Dial requests,
both local and via peers, are now populated with the scope the user
is logged into which the reversetunnel server uses to enforce that
dials for hosts are only honored if the target scope matches.
2025-12-13 00:12:57 +00:00
Dan Upton 3d54918ea2 Add usage events for the MWI GitHub Actions <> Kubernetes Wizard (#61919)
* Add integration type for GitHub Actions + Kubernetes wizard

* Add step definitions for GitHub Actions + Kubernetes wizard

* Add `tp.ui.integrationEnroll.sectionOpen` event type

* Add `tp.ui.integrationEnroll.fieldComplete` event type

* Add `tp.ui.integrationEnroll.codeCopy` event type

* Add `tp.ui.integrationEnroll.linkClick` event type

* Remove unnecessary GitHub enterprise URL field

* Run prettier
2025-12-08 12:07:25 +00:00
STeve (Xin) Huang 619768968f [mcp] report transport type and egress auth type to prehog (#61397)
* [mcp] report transport type and egress auth type to prehog

* report unknown egress type and add more comments

* make grpc

* fix tests ( ̄▽ ̄;)
2025-11-17 18:54:05 +00:00
Grzegorz Zdunek 6615e42ecc Connect: close cluster clients when profile changes (#61090)
* Include expiration time in `LoggedInUser`

This will allow the profile watcher to detect when the user relogged.

* Display expiration time in UI

* Add `ClearStaleClusterClients` RPC

* Implement `ClearStaleClusterClients`

* Clear stale clients when profile changes

* Improve session expiration component

* Move refresh button back to top

* `ClearCachedStaleClientsForRoot` -> `ClearStaleCachedClientsForRoot`

* `unchanged` -> `stale`

* Make "closing stale clients" a subtest

* Add `clientcache` test

* Remove `getProfile` error wrapping

* Improve comment

* Convert story to controls
2025-11-17 11:02:40 +00:00
Edoardo Spadolini ded7698909 Kubernetes forwarding in the Relay Service (#60974)
* Add signaling for supported tunnel types to relay tunnel

* Enable relay tunnel client for kubernetes_service

* Add kube_server to the relay cache

* Add passive forwarder for kubernetes access through the relay

* Add wildcard SNI suffix to kube service SANs if a relay is configured

* Add SNI-dispatching grpc transport for the relay transport server

* Enable kubernetes forwarding in the relay service

* Advertise support for kube tunnels in the relay

* Add tests
2025-11-14 22:25:00 +00:00
Grzegorz Zdunek 2d1bc7b909 Connect: make logout function idempotent (#60553)
* Remove `ClusterRemove` RPC, make logging out idempotent

* Move calling `removeKubeConfig` and `maybeRemoveAppUpdatesManagingCluster` to main process

The main process should not depend on the renderer to clean up its own resources.

* Remove cleaning up kube dir

* Lint
2025-10-28 13:17:55 +00:00
Grzegorz Zdunek 3ed1816dda Connect: do not use cluster from profile as root cluster name (#60473)
* Do not read root cluster name from profile's `cluster` field

* Update docs for `name` field

* Use profile name in places that refer to workspace

* Improve comments

* `clusterName` -> `profileName`

* Get rid of `nameOrProfile`

* Add JSDoc for `captureUserLogin`

* `cluster` -> `certificate`
2025-10-27 11:59:22 +00:00
Cam Hutchison e06e2e78f7 proto/accessgraph: Add RPC for sending k8s audit logs to Access Graph (#59566)
* proto/accessgraph: Add RPC for sending k8s audit logs to Access Graph

Add a `KubeAuditLogsStream()` rpc to the `AccessGraphService` for
streaming Kubernetes apiserver audit logs from the Teleport discovery
service to access graph. This is intended for EKS audit logs which are
made available via CloudWatch, but can accommodate other k8s services.

The audit log messages are represented as a `google.protobuf.Struct` so
as to not depend on the k8s.io .proto files, but also as k8s typically
uses protos internally only - the expectation is that we'll receive the
apiserver audit logs as json-encoded strings. This encode easily as a
`google.protobuf.Struct`.

* proto: Generate protos for accessgraph

Generate proto and grpc code for changes to accessgraph/v1alpha1:

    make grpc/host

These changes add the `KubeAuditLogsStream()` rpc and associated types.
2025-10-16 00:33:50 +00:00
Rafał Cieślak 51a2d4181a Connect: Close terminal tab if last input was Ctrl+D, even on non-zero exit code (#59836)
* Include the last input in the exit event

* Close terminal tab if last input was Ctrl+D

* Remove use of create functions
2025-10-14 11:00:27 +00:00
Rafał Cieślak 245d22a2be Move PTY host service protos to proto/teleport/web/teleterm (#59832)
* Move PTY host service to proto/teleport/web/teleterm/ptyhost/v1

* Migrate code to use new protos and protobuf-ts client

Previously the grpc-js client was in use.

* Remove PtyEventResize from PtyServerEvent

* Remove lint ignore for pty_host_service.proto

* Add comments

* Rename proto service

* Rename messages and RPCs, ignore lint enforcing unary RPCs

* Rename exchangeEvents in code to managePtyProcess

* Adjust formatting of protos

* Renumber fields and drop reservations

* Add missing awaits, rename _write to send, remove ManagePtyProcessRequest
2025-10-14 10:21:19 +00:00
Rana Ianandrosstimothy dcb8fff026 Add UI for Kubernetes health checks (#59929)
Adds health status indicators for Kubernetes clusters on the Resources
page. Unhealthy clusters are highlighted, and clicking them opens a side
panel displaying server information.

Changes include:
- New `KubeServer` protobuf message and `ListKubernetesServers` RPC
- Web and Connect API endpoints for fetching Kubernetes server data
- Health status filtering in `matchAndFilterKubeClusters`
- `TargetHealth` fields added to frontend/backend types
- Updated `StatusInfo.tsx` to display `kube_cluster` data

Part of #58413

Co-authored-by: rosstimothy <39066650+rosstimothy@users.noreply.github.com>
2025-10-10 23:17:38 +00:00
Dan Upton e3c4a6c44a Add integration tile for Argo CD (#59862) 2025-10-06 11:13:24 +00:00
Tiago Silva 2c9c003399 Remove LastSyncTime from AWS and Azure resource proto definitions and related code (#59818)
Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2025-10-01 14:05:00 +00:00
Krzysztof SkrzętnickiandRafał Cieślak 0c5362c360 Add IAM user domain if missing for GCP Postgres databases (#59431)
* Add IAM user domain if missing for GCP Postgres databases

* adjust username more consistently

* Fix test helper

* Update web/packages/teleterm/src/ui/DocumentGatewayCliClient/DocumentGatewayCliClient.tsx

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>

* prettier

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2025-09-25 15:12:38 +00:00
Edoardo Spadolini e1102466ae Relay peering client and server (#58854)
* proto: relay peering messages

* make grpc

* Relay peering server and client

* fallible client creation, comments

* server comments
2025-09-25 10:19:36 +00:00
Edoardo Spadolini a5c5444894 Relay tunnel client and server (#58755)
* proto: relay tunnel messages

* make grpc

* Relay tunnel server and client

* Explain tls and yamux configs

* clarify logger adapter

* clarify reserved fields

* Clarify serverConn selection logic

* add a todo to handle the control stream messages more efficiently
2025-09-23 21:28:15 +00:00
STeve (Xin) Huang 6786bd00d8 [discover] add unguided enrolment for MCP Servers (#58880)
* [discover] add unguided enrolment for MCP Servers

* remove demo
2025-09-23 19:57:27 +00:00
Grzegorz Zdunek abe0b3c6ca Remove unused resource_ids field (#59065)
* Remove unused `resource_ids` field

* Fix comment for `resource_ids` in `CreateAccessRequestRequest` which should not be removed
2025-09-16 15:17:56 +00:00
Rana IanandEdoardo Spadolini 326f3ed28b Add protobufs for Kubernetes health checks (#58415)
- Add Kubernetes label matchers to `Matcher` for `HealthCheckConfig`
- Add message `KubernetesServerStatusV3`
- Add `status` field to `KubernetesServerV3`
- Add `target_health` field to `Kube` for UI
- Regenerate Terraform schema and docs for `HealthCheckConfig`
- Add Kubernetes label matchers to Terraform test `TestImportHealthCheckConfig`

Relates to #58413

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
2025-09-11 23:06:03 +00:00
Grzegorz Zdunek f743d25c12 Show only allowed logins for SSH servers in Connect (#59026)
* Move `calculateSSHLogins` to `lib/client`

* Calculate allowed logins in tshd

* Take logins from resource, not `loggedInUser`

* Remove `pipe`

* Remove `sshLogins`

* Lint
2025-09-11 14:21:39 +00:00
Edoardo Spadolini 0d6f28d721 Relay tunnel discovery API (#58754)
* proto: relay tunnel grpc discovery service

* make grpc

* Tunnel discover server implementation

* Describe ALPN protocol name constant

* Fix double import

* Avoid false positive in unused linter

* explicit trace.Wrap in discover

* avoid unnecessary pointer conversions

* prioritize tunnel protocol in ALPN

* make the server credentials a separate struct

* avoid false positive in unused linter again
2025-09-09 10:34:23 +00:00
Julia Ogris 565947d136 access-graph: Add AWS KMS key discovery to access graph (#56874)
* access-graph: Add KMS resource protos

Add the `AWSKMSKeyV1` protobuf messages to support importing KMS key
into the access graph.

This new type is added to the `AWSResource` oneof.

The Go bindings were regenerated using `make grpc`.

* access-graph: Add AWS KMS key discovery to access graph

Implement AWS KMS keys discovery and ingest into access graph. The
fetcher discovers keys across all specified regions.

For each KMS key, the fetcher retrieves the following details:

* Key metadata, including ARN, creation date, and HSM cluster ID
* Resource tags
* Key aliases
* The key policy document

Add a mock KMS client  to support comprehensive unit testing of the new
fetcher, covering various key configurations and error cases.

The new KMS key resource is integrated into the existing discovery framework,
including the merge, deduplication, and reconciliation steps.

The required IAM policy for access graph discovery is updated to include the
necessary `kms:` permissions.

Correct typo in the `GlueTableName` field name.

* Address review feedback

* Address second set of review feedback

* Regenerate go-bindings for proto

* Fix golden files with new AWS KMS actions
2025-08-08 00:29:41 +00:00
Grzegorz Zdunek 83a5d08a16 Add logic to resolve auto-update status in Connect (#56806)
* Add utility function to extract major version from semver string

* Implement version resolution algorithm

* Enable reading and storing managing cluster in app state

* Enable fetching `getClusterVersions` and `getDownloadBaseUrl` from tshd

* Use the resolved auto updates status to tell the custom updater function if an update is available; emit the status in updater events

* Do not use `getDownloadBaseUrl` to resolve auto updates status

* Split `resolveAutoUpdatesStatus` into two functions

* Correctly check if fetch response is ok

* Improve comments and names

* Use `semver` package instead of implementing it by hand

* `autoUpdateState.test.ts` -> `autoUpdateStatus.test.ts`

* Add missing proto comments

* Consider all clusters when resolving version

* Add test for pre-releases

* Improve handling clusters managing updates but being unreachable or with disabled updates

* Remove redundant `clustersUri` field

* `get` -> `put`

* Improve comments and test names

* Drop `candidate` from `candidateClusters`

* Switch `shouldAutoDownload` function to switch-case

* Improve log message
2025-07-23 08:30:22 +00:00
Nic Klaassen 0c62706992 [vnet] feat: SSH usage reporting (#56537)
* [vnet] feat: SSH usage reporting

* address review comments

* fix vnet tests and add coverage

* fix spelling

* rename OnNewConnection to OnNewAppConnection
2025-07-18 21:33:12 +00:00
Grzegorz Zdunek 71eb572c43 Add auto-update RPCs to tshd (#56494)
* Centralize generating baseURL

* Add RPCs to get auto-update versions and base URL

* Revert `baseURL` and context

* Add missing mocks

* Lint

* Add autoupdate service, do not ignore errors

* Add "Limitations of the OSS version"

* Revert "Centralize generating baseURL"

This reverts commit a23bb34e

* Move `resolveBaseURL` function to lib/teleterm

* Get rid of `ResolveClusterURI`, add `cluster.WebProxyAddr`, read insecure flag from passed config

* Do not block goroutines with unnecessary lock
2025-07-15 15:25:45 +00:00
Tiago Silva 41d7d4c5d7 auditlog: introduce USER_KIND_SYSTEM for system roles (#56160)
* auditlog: introduce `USER_KIND_SYSTEM` for system roles

Teleport allows that system roles perform certain actions like creating,
updating or deleting users, roles and access lists when performed by the
Okta integration or creating, updating and deleting apps, kube, dbs
when performed by the discovery service.

When https://github.com/gravitational/teleport/pull/35881 was
implemented, it only contemplated two states: bot or human. If the
identity wasn't a bot, it was automatically tagged as a human.

This behavior is fine if we only emited audit logs for actions
performed by bots or users, but that's not the case. We also emit for
certain system actions.

When reading the audit log, one can see that the audit log is marked as
user although the username has the format: `<uuid>.<teleportClusterName>`.

This PR attempts to introduce a third user kind - system - that should
identity when the action was performed by a system component. This is a
requirement so that Identity Security can distinguish user actions and
system actions.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>

* add unit tests

---------

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2025-06-27 14:13:32 +00:00
165424ab42 [vnet] feat: automatic SSH client configuration in Connect (#55924)
* [vnet] feat: automatic SSH client configuration in Connect

* avoid conflicting double-notification

* switch to buttons

* Use neutral intents for Resolve buttons

* Add missing useCallback deps

* Improve spacing between text and commands

* apply grammar suggestions

Co-authored-by: Grzegorz Zdunek <gzdunek@users.noreply.github.com>

* catch error in vnet launcher

* add comment on modal onConfirm

* catch only currentServiceInfo, use error description

* refresh diagnostic attempt, annotate type

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
Co-authored-by: Grzegorz Zdunek <grzegorz.zdunek@goteleport.com>
Co-authored-by: Grzegorz Zdunek <gzdunek@users.noreply.github.com>
2025-06-26 21:50:57 +00:00
Nic KlaassenandRafał Cieślak ff49ab0efd [vnet] feat: show SSH status in VNet slider (#55755)
* [vnet] feat: show SSH status in VNet slider

* rename rpc

* simplify when app and ssh zones match

* Avoid making DNS zones bold

* Fix the check for equal sets

* Add presets to VnetSliderStep story

* Fix case and punctuation

* Fix positioning of inline warning icon

* fix test

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2025-06-19 15:49:11 +00:00
Nic KlaassenandRafał Cieślak a61a4874c7 [vnet] feat: add SSH configuration diagnostic (#55594)
* [vnet] feat: add SSH configuration diagnostic

This commit adds a VNet diagnostic that reports whether the default user
OpenSSH config file (`~/.ssh/config`) includes VNet's generated SSH
config file.

* fix lint

* fix license

* Render paths as code, use TextSelectCopy for snippet

* add code stying for path

* add ssh report to diag story

* handle ~/.ssh/config not existing

* handle unescaped windows path separators and single quotes

* fix typo in comment

* Diag report story: Include error when sshConfigAttempt is set to "error"

* read ~/.ssh/config as part of the diag instead of abusing cat

* fix lint

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2025-06-18 22:20:50 +00:00
Pawel Kopiczko 1e95c7bd71 Teleport Connect: Support requiring reason and custom reason prompts (#55092) 2025-06-07 15:53:25 +00:00
Gavin FrazarandLisa Kim 33f2bbf360 Web/Teleterm: Update UI health warning indicators (#54857)
The UI will now show the warning indicator if the health status is
either "unhealthy" or "mixed".
The status panel will now show the health statuses of all servers for
the resource.

Co-authored-by: Lisa Kim <lisa@goteleport.com>
2025-06-05 04:12:11 +00:00
Nic Klaassen 3a3099e2ec [vnet] feat: write VNet SSH keys to TELEPORT_HOME (#55228) 2025-06-01 05:50:10 +00:00
Nic Klaassen 4fb2fedf04 [vnet] feat: forward SSH connections to target (#55156) 2025-05-31 16:24:04 +00:00
Nic Klaassen b420b4f1cc [vnet] feat: TCP dial to SSH targets (#55087)
* [vnet] feat: TCP dial to SSH targets

* address tim's comments

* fix teleterm UserTLSCert impl

* check that tlsCert.Certificate is not empty
2025-05-31 01:55:19 +00:00
Tiago Silva a86adc3244 feat: add TeleportCluster and Organization fields to AuditLogConfig and OktaConfigV1 respectively (#55276)
This PR adds the Teleport cluster name and okta organuzation name into
respective configs.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2025-05-30 09:37:04 +00:00
Nic Klaassen 9916519c97 [vnet] feat: DNS resolution for VNet SSH (#54856)
* update protos

* [vnet] feat: DNS resolution for VNet SSH

* fix lint

* add comment and fix typo
2025-05-21 16:22:10 +00:00
Rafał Cieślak d5dcae5962 Remove deprecated Connect code for old kube sessions and arbitrary SSH hosts (#55000)
* Remove deprecated doc.terminal_tsh_kube

* Remove deprecated DocumentTshNodeWithLoginHost

* Remove deprecated GetServers RPC
2025-05-21 15:34:11 +00:00
Tiago Silva eb7b2f5a36 [iac] add github organization name to proto (#54951)
* [iac] add github organization name to proto

This PR adds the github organization name to GithubConfigV1 proto
message.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>

* add github plugin type

* add secret plugin

---------

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2025-05-20 12:06:45 +00:00
Grzegorz ZdunekandRafał Cieślak 45428c01e2 Support directory sharing in Connect (#54663)
* Register directory access when starting a desktop session

* Add RPC to attach a directory to desktop session

* Do not allow `attachDirectoryToDesktopSession` to be called from the renderer process

* Open the directory picker and send the selected path to tshd

* Intercept file system events coming from the server and handle them

* Disallow file system messages to be sent from the renderer

* Refactor dir sharing

* `AttachDirectoryToDesktopSession` -> `SetSharedDirectoryForDesktopSession`

* Improve comments

* Small fixes

* Add missing defer for `s.dirAccessMu.RUnlock()`

* `TestOpenSharedDirectory` -> `TestNewDirectoryAccess`

* Add a comment for JS file system handlers

* `make grpc`

---------

Co-authored-by: Rafał Cieślak <rafal.cieslak@goteleport.com>
2025-05-16 11:38:09 +00:00
Lisa Kim eb9999ed06 Teleterm: add support for rendering status panel (#54621)
* Teleterm: define target health fields for db_servers

* Teleterm: add target health field to unified resource db resource

* Add ListDatabaseServers handler

* Enable rendering status panel on click

* Address CRs
2025-05-14 23:18:20 +00:00
Julia Ogris f9e5f7ed50 Add protos for Identity Activity Center (#54653)
* protos: Add protos for Identity Activity Center

Add new and extend protos for the new Identity Activity
Center feature in Access Graph. Identity centers around activities of user,
allows to easily correlate log items by identity target or type and proactively
provides alerts such as impossible travel.

* Fix according to review

Fix according to review comments.
2025-05-12 17:06:10 +00:00
Bartosz Leper 793309934a Add more telemetry to the role editor (#54486)
Whenever the user clicks the save button, report whether the standard
and YAML modes were used and whether there were any YAML fields that
prevented the user from accessing the standard editor.
2025-05-12 09:19:36 +00:00
Grzegorz Zdunek 980ce61efc Support desktop access in Connect (#54373)
* Extract reusable function for establishing connections to Windows Desktop Service

* Add `ProxyWindowsDesktopSession` proto

* Implement `ProxyWindowsDesktopSession`

* Enable fetching desktops and desktop services in remote proxy cache

* Implement dialing windows desktop

* Implement client

* Support Windows desktop certs in tsh

* Fix incorrect `windowsDesktop` URI

* Add proto for `ConnectToDesktop`

* Implement `ConnectToDesktop`

* Do not log requests/responses for `ConnectToDesktop` RPC

* Add boilerplate for `DocumentDesktopSession`

* Open a desktop connection

* Relax ArrayBuffer type passed to encode methods, ignore tshd abort errors

In tshd stream, the buffer is of type `ArrayBufferLike` (which is `ArrayBuffer` & `SharedArrayBuffer`). To allow assigning it to the type in our TDP code, we make it more general.

* Ensure WASM IronRDP code is initialized only once

* Use `utils.ShuffleVisit`

* Improve stream cancellation handling

* Leave a TODO about ListWindowsDesktops

* Do not return empty data slice

* Provide non-nil src and dest addresses to `streamutils.NewConn()`

* Do not emit an empty message to indicate a successful connection

* Fix test

* Simplify code

* Add missing `WindowsDesktopTLSCredentials` initialization

* Require that the first message is only a dial request and the subsequent ones are only data

* Add explicit `stop()` check

* Hold cluster name and desktop name in a struct for the map key

* Do not return early on non-connection problem errors

* Handle io.EOF error specifically in BidiStreamingClient.Send instead of in `tlsConn.HandshakeContext`

* Extract a common function to proxy TDP connections

* Improve proto comments and connection setup

* Add comments and logs

* Lint

* Explain why there's a special handling for abort error

* Bring back the original `proxyWebsocketConn` behavior when it comes to error handling

* Post merge fixes

* Adjust proxying TDP connection to changes from master

* Lint

* Channels improvements

* Post merge fixes
2025-05-09 10:23:56 +00:00
Bernard Kim da3eac4824 Submit access request create/review usage events (#53434)
* Submit access request events

* Use enum for propsed_state
2025-04-25 19:25:54 +00:00
Brian Joerger a2dc8e1da7 feat: Hardware Key Agent - command hint (#54090)
* Supply command for context on hardware key prompt.

* * Include command in Teleport Connect hardware key prompts, excluding tshd commands

* Fix proxy host context passed to Teleport connect hardware key prompts

* Only use direct service for `tsh login` to avoid jumping between clients

* Add new line before command.

* Fix story.

* Address comments.

* Trim forward slash for windows.

* Change proxy_host to proxy_hostname; Update comment.
2025-04-18 22:44:16 +00:00