mirror of https://github.com/jetkvm/kvm.git
Implements concurrent WebRTC session management with granular permission control, enabling multiple users to connect simultaneously with different access levels. Features: - Session modes: Primary (full control), Observer (view-only), Queued, Pending - Role-based permissions (31 permissions across video, input, settings, system) - Session approval workflow with configurable access control - Primary control transfer, request, and approval mechanisms - Grace period reconnection (prevents interruption on network issues) - Automatic session timeout and cleanup - Nickname system with browser-based auto-generation - Trust-based emergency promotion (deadlock prevention) - Session blacklisting (prevents transfer abuse) Technical Implementation: - Centralized permission system (internal/session package) - Broadcast throttling (100ms global, 50ms per-session) for DoS protection - Defense-in-depth permission validation - Pre-allocated event maps for hot-path performance - Lock-free session iteration with snapshot pattern - Comprehensive session management UI with real-time updates New Files: - session_manager.go (1628 lines) - Core session lifecycle - internal/session/permissions.go (306 lines) - Permission rules - session_permissions.go (77 lines) - Package integration - datachannel_helpers.go (11 lines) - Permission denied handler - errors.go (10 lines) - Error definitions - 14 new UI components (session management, approval dialogs, overlays) 50 files changed, 5836 insertions(+), 442 deletions(-) |
||
|---|---|---|
| .. | ||
| changeset.go | ||
| changeset_arm_test.go | ||
| changeset_resolver.go | ||
| changeset_symlink.go | ||
| config.go | ||
| config_tx.go | ||
| consts.go | ||
| hid.go | ||
| hid_keyboard.go | ||
| hid_mouse_absolute.go | ||
| hid_mouse_relative.go | ||
| log.go | ||
| mass_storage.go | ||
| udc.go | ||
| usbgadget.go | ||
| utils.go | ||