mirror of
https://github.com/gravitational/teleport.git
synced 2026-10-12 02:15:01 +00:00
* Add LinuxDesktop protos and generated code (#62971) * Add LinuxDesktop gRPC and backend (#62974) * Add LinuxDesktop gRPC and backend * Remove CloneResource * Review comments * Fix logins * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Fix role --------- Co-authored-by: Zac Bergquist <[email protected]> * Add LinuxDesktop resource to unified resources (#63101) * Add LinuxDesktop gRPC and backend * Add LinuxDesktop resource to unified resources * Remove CloneResource * Review comments * Fix logins * Review comment * Add ClonableResourceWithLabels * Fix missing CloneResource * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Fix role * Update lib/auth/auth_with_roles.go Co-authored-by: Zac Bergquist <[email protected]> * Update lib/web/ui/server.go Co-authored-by: Zac Bergquist <[email protected]> * Fix compilation * e * skip gogoproto * e * fix test * Update api/client/proto/linuxdesktop.go Co-authored-by: Zac Bergquist <[email protected]> --------- Co-authored-by: Zac Bergquist <[email protected]> * Add tctl support for Linux desktop (#63273) * Add LinuxDesktop gRPC and backend * Add tctl support for Linux desktop * Add LinuxDesktop gRPC and backend * Remove CloneResource * Review comments * Fix logins * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Fix role * Remove duplicate code * Cleanup * Fix test --------- Co-authored-by: Zac Bergquist <[email protected]> * Proto changes for Linux Desktop (#65692) * Add LinuxDesktop gRPC and backend * Add LinuxDesktop resource to unified resources * Remove CloneResource * Review comments * Fix logins * Review comment * Add ClonableResourceWithLabels * Fix missing CloneResource * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Proto changes for Linux Desktop * Fix role * Update lib/auth/auth_with_roles.go Co-authored-by: Zac Bergquist <[email protected]> * Update lib/web/ui/server.go Co-authored-by: Zac Bergquist <[email protected]> * Fix compilation * Review comments * Review comments * e * skip gogoproto * e * fix test --------- Co-authored-by: Zac Bergquist <[email protected]> * Add locks support for Linux desktop (#65761) * Add LinuxDesktop gRPC and backend * Add LinuxDesktop resource to unified resources * Remove CloneResource * Review comments * Fix logins * Review comment * Add ClonableResourceWithLabels * Fix missing CloneResource * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Proto changes for Linux Desktop * Add locks support for Linux desktop * Fix role * Update lib/auth/auth_with_roles.go Co-authored-by: Zac Bergquist <[email protected]> * Update lib/web/ui/server.go Co-authored-by: Zac Bergquist <[email protected]> * Fix compilation * Review comments * Review comments * fix e --------- Co-authored-by: Zac Bergquist <[email protected]> * Fix compilation * Operator CRD * Fix test * Add Linux desktop support (#65841) * Implement support for TDPB in Desktop Agent. * Add LinuxDesktop gRPC and backend * Add LinuxDesktop resource to unified resources * Add Linux desktop service * Remove CloneResource * Review comments * Unifide fix * routing * Fix logins * Fix logins * Fix CA cache and write basic loop * Review comment * Fix components and handleConnection * Review comment * Add ClonableResourceWithLabels * Fix missing CloneResource * Add Xvfb handlers * Add Xephyr * Add Xvfb controller * Add QOI encoder * encoder + xsession * reexec * ChildLogConfig * session * add forceloginshell * update frontend + fix session * Review comments * Fix code, update docs * Fix TARGETS format, reuse waiting * Remove direct mode * Update lib/auth/linuxdesktop/linuxdesktopv1/service.go Co-authored-by: Zac Bergquist <[email protected]> * Add MFA and cert usage support * Add RemoteAddr * Revert Uacc setup * Add session selector * Refactor code * Add session recording, tracking and events * Add session recording, tracking and events * Refactor command reexecution * Review comments * Use reexec.ConfigureCommand * Proto changes for Linux Desktop * Proto changes for Linux Desktop * Add locks support for Linux desktop * Add guard around m.ScreenSpec * Cleanup * Add activity monitor * Cleanup * Fix compilation * Cleanup unified view * Refactor linux session * Add logging * Add logging * go mod tidy * Adjust logging * go mod tidy * Grab stderr from reexec * Fix UACC * pass remote addr to uacc * TMP: debug images * Fix panic * TMP: debug images * limit change size * Monitor resolution and restore it * TMP: debug images * TMP: debug images * TMP: debug images * Modify screen resize * TMP: debug images * TMP: debug images * Add XDG env variable * Use dbus-run-session * pam * variables fix * variables fix * revert uacc * cleanup * EncodeQOIZ noop * EncodeQOIZ noop * Fix auditing * Cleanup * Fix type check * Fix formatting * Fix licenses * Fix lint * go mod tidy * Fix audit reference * Fix log * Fix tests * Fix tests * Remove testing from xgb * go mod tidy * Fix tests * xgb 1.3.1 * Handle multiple SessionSelection messages * Add filters for sessions * fix events * Fix compilation + events * Fix test * Fix test * Fix UI * cleanup * review comments * Rework poll eq * Fix bounds clipping * fix imports * lint * lint * err * Fix locking in resize * Fix ReadChildError * remove dependabot exclusion * Fix session end * Cleanup metedata * Fix session events * Ignore multiple ClientHello * Use slices.IndexFunc in setScreenSize * Cleanup unused code * Update lib/service/linux_desktop.go Co-authored-by: Zac Bergquist <[email protected]> * Use slices.Clone * Update lib/srv/desktop/x11/xsession.go Co-authored-by: Zac Bergquist <[email protected]> * Fix import * Use filepath.Glob * Simplify testdata path calculation * Cleanup comment * Cleanup endpoints * Update lib/web/apiserver.go Co-authored-by: Zac Bergquist <[email protected]> * Update lib/web/desktop.go Co-authored-by: Zac Bergquist <[email protected]> * Cleanup createDesktopConnection signature * Cleanup createDesktopConnection signature * Use server capabilities * Remove dep override * Add bounds check * Cleanup * Add EndTime to reconstructed event * use cleanupCtx * cleanup * Add configuration test * Add horizontal scroll * Review comments * Fix scrolling * Fix scrolling * Sort available sessions * Fix build * Add bounds check * Fix tests * Move expiry * lint * Add back metadata nil check * lint * Add usage reporting * Fix error handling * Fix resizing, add lock prevention * Move backend creation after authorization * Fix possible panic in handleSessionSelection * Check if clipboard is allowed * Cleanup errors during normal session ending * use errgroup for all backround tasks * Review comments * fix heartbeat * add guard for root * fix tests * add negative check in changes * cleanup * cleanup * add guard * Review comments * Review comments * Review comments * Review comments * Review comments * Read only access for RoleLinuxDesktop * use dbus-launch * Add Linux Desktops to inventory UI * Use X11 launcher script to start sessions Use a launch script instead of executing the Exec= line from the Xsession file directly. This handles the "default" case on Debian systems where the Xsession file reads `Exec=default`. The launcher can be explicitly configured at the agent level or left blank, in which case we probe a set of well-known launchers. * Compositing support * Fix dbus launcher Support both `dbus-run-session` and the older `dbus-launch`. * Fix error messages when Xvfb is not installed * Add non-root warning * Use forceFullDamage for resize * Fix Open API usage * invalid user test fix * remove commented code * Complete TLS handshake * Improve error message * Logged wrapped command * Add dbus-daemon as dependency for dbus-launch * Update dbus warning and add llvm check to macos build * Add LinuxDesktop to role list in new token dialog * Fix teleport start role validation * Run messageLoop in separate goroutine * Add LinuxDesktop labels to Admin role * Add handling for extended keys and ID reuse * Cleanup shut down logs * Xsession cleanup * Rework llvm requirement in Makefile --------- Co-authored-by: Ryan Hammonds <[email protected]> Co-authored-by: Zac Bergquist <[email protected]> * Add support for `internal.linux_desktop_logins` trait (#67777) * Add support for internal.linux_desktop_logins trait * Fix xsession test * Check Linux Desktop Kind is valid (#68675) * Fix compilation * Validate Kind at service level (#68710) * tctl fix * Fix reexecution * Fix UI and service * Fix Windows webassets build * Add desktop name to active session * Fix tctl get/edit linux_desktop * imports * fix logging * fix logging * License * lint * Clean logs * Add xauth entry before starting Xvfb * Fix release build * Fix release build * Fix labels handling * lint * tsh recordings export: support Linux desktop recordings * Fix ListLinuxDesktops --------- Co-authored-by: Zac Bergquist <[email protected]> Co-authored-by: Ryan Hammonds <[email protected]> Co-authored-by: Dan Share <[email protected]>
58 lines
2.1 KiB
Go
58 lines
2.1 KiB
Go
// Teleport
|
|
// Copyright (C) 2026 Gravitational, Inc.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package linuxdesktopv1
|
|
|
|
import (
|
|
"github.com/gravitational/trace"
|
|
|
|
headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
|
|
linuxdesktopv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/linuxdesktop/v1"
|
|
"github.com/gravitational/teleport/api/types"
|
|
)
|
|
|
|
func NewLinuxDesktop(name string, spec *linuxdesktopv1pb.LinuxDesktopSpec) (*linuxdesktopv1pb.LinuxDesktop, error) {
|
|
d := &linuxdesktopv1pb.LinuxDesktop{}
|
|
d.SetKind(types.KindLinuxDesktop)
|
|
d.SetSubKind("")
|
|
d.SetVersion(types.V1)
|
|
d.SetMetadata(&headerv1.Metadata{
|
|
Name: name,
|
|
})
|
|
d.SetSpec(spec)
|
|
return d, nil
|
|
}
|
|
|
|
func ValidateLinuxDesktop(desktop *linuxdesktopv1pb.LinuxDesktop) error {
|
|
switch {
|
|
case desktop == nil:
|
|
return trace.BadParameter("linux desktop is required")
|
|
case desktop.GetMetadata() == nil:
|
|
return trace.BadParameter("metadata is required")
|
|
case desktop.GetMetadata().GetName() == "":
|
|
return trace.BadParameter("name is required")
|
|
case desktop.GetSpec() == nil:
|
|
return trace.BadParameter("spec is required")
|
|
case desktop.GetSpec().GetAddr() == "":
|
|
return trace.BadParameter("spec.addr is required")
|
|
case desktop.GetSpec().GetHostname() == "":
|
|
return trace.BadParameter("spec.hostname is required")
|
|
case desktop.GetKind() != types.KindLinuxDesktop:
|
|
return trace.BadParameter("kind must be %q", types.KindLinuxDesktop)
|
|
}
|
|
return nil
|
|
}
|