mirror of
https://github.com/playit-cloud/playit-agent.git
synced 2026-07-01 20:24:38 +00:00
* Use clap enum & struct parser rather than macro fn * Oneshot doing a service * working :) * bugfixes * Improve log format * fix comp for unix * stage changes * Move stuff around, improve ipc * improvements... * improve commands * Add window service support * Setup macos * UDP improvements * Start on MTU discovery logic * Do not start windows service on install or boot * change start condition for windows to fix service * fix windows service and update service perms * Improve setup logic * Add windows-build.sh * Improve secret setup logic * Add Windows tray companion for playitd (#136) * Add Windows tray companion for playitd - Build and install a new `playitd-tray` binary - Register a startup shortcut and poll the service to show the tray icon - Let the tray app open status or stop the installed service * Improve Windows tray service controls - Add start/stop service actions to the tray menu - Keep tray icon status in sync with service state - Allow removing the tray startup shortcut * Embed tray icon in Windows build - Add a Windows resource build step for the tray binary - Load the embedded icon at startup with a fallback to the default icon * Switch Windows tray to tray-icon - Replace custom Win32 tray/menu code with `tray-icon` - Remove the `winres` build script and embed the tray icon asset - Add Windows tray menu handling for service actions * Wrap tray state access in unsafe block - Keep `refresh_tray_status` safe at the function boundary - Limit `unsafe` to the `get_state(hwnd).as_mut()` call * Simplify tray menu state updates on Windows - Stop treating menu item enable/disable as fallible - Keep tray tooltip and service state in sync * Tighten unsafe boundaries in Windows tray code - Wrap Win32 calls in explicit unsafe blocks - Keep tray event handlers using HWND values that outlive the closures - Make state access helpers safe wrappers around raw window data * Add Windows tray debug console logging - Add an optional `--debug-console` mode for the tray process - Attach or allocate a console and emit tray lifecycle logs * Stabilize Windows tray menu and tooltip updates - Track tray menu visibility to defer tooltip refreshes until the menu closes - Avoid holding mutable app state across `show_menu()` on Windows - Clean up IPC and logging imports plus formatting * Remove macOS release build from workflow - Drop the macOS packaging, signing, and notarization job from the release pipeline - Leave Windows and Linux release jobs unchanged * Launch tray app after MSI install - Add a Wix shell exec custom action for the tray executable - Start the tray app automatically after successful installs * Launch playit.exe with auto mode from tray - Change the Windows tray service to invoke `playit.exe auto` instead of `attach` - Update the launch error message to match the new subcommand * Add tray action to reset agent secret - add a Windows tray menu item for resetting the agent - reset the IPC secret and stop playitd after a successful reset - make the installer launch action wait for completion * do not use auto command * Launch playit setup after starting service - Add a helper to spawn `playit.exe` in a new console - Run the setup executable after successfully starting the Windows service * Wait for playitd startup before auto-attach - Poll lifecycle until playitd leaves Starting - Return a timeout error if startup never completes - Reformat UI imports and widget lines * Disable Reset Agent while playitd is waiting or stopping - Query playitd lifecycle over IPC before enabling the tray action - Block Reset Agent during WaitingForSecret and Stopping states - Keep the menu state in sync on startup and polling * Move tray service actions to background threads - Run refresh, start, stop, and reset actions asynchronously - Disable tray controls while background work is in progress - Refresh tray state after each action completes * Retry daemon setup after invalid agent secret - detect invalid or expired agent secrets during startup - wait for reprovisioning before retrying agent creation - add tests for secret error classification * Ensure daemon shuts down agent task cleanly - keep the agent running flag until shutdown - await the agent task during teardown to avoid leaks * Abort agent tasks on shutdown - add cooperative shutdown for tunnel and UDP tasks - clean up formatting and import ordering across agent core * Swap tray actions between playit launch and status window - Left-click now opens playit directly - Rename helper calls so setup launches the status window with `attach` * Stop playitd via IPC before service shutdown - Add a tray stop path that sends IPC stop first, then falls back to the installed service - After agent secret reset, request the service stop separately before relaunching playit * stop service after secret reset * Split tray app into its own crate (#138) * Split tray app into its own crate - Add `playitd-tray` as a workspace member - Move Windows tray-specific dependencies into the new package - Remove the tray binary and related deps from `playitd` * Allow same-version upgrades in WiX installer - Set `AllowSameVersionUpgrades=yes` for the CLI installer - Keep downgrade protection in place * Refactor Windows tray background work onto a runtime worker - Move tray async actions off ad hoc threads - Add a dedicated runtime worker and async service helpers - Update tray state handling to dispatch background jobs through the runtime * Close tray app before Playit install - Add WiX CloseApplication entry for `playitd-tray.exe` - Prompt the tray process to exit before setup continues * Refactor Windows tray backend and frontend split - Replace the tray runtime with a dedicated backend request loop - Split UI event handling from backend responses and rename modules * Add detailed backend and service lifecycle logging - Log tray backend request flow and wakeup handling - Log service start/stop/reset and lifecycle checks for debugging * Defer tray refresh until after menu closes - Queue a deferred refresh UI event after closing the menu - Add debug logging for busy dispatch coalescing and dropped actions * Refine tray refresh request handling - Track refresh requests independently from other backend work - Allow UI controls to stay enabled while refreshes are in flight - Queue deferred refreshes when the backend is saturated * remove ping_monitor code * Switch Linux packaging to manage playit systemd unit (#140) - Package both `playit` CLI and `playitd` daemon in the .deb - Install and control the `playit` systemd service during postinst - Update Linux service launch target and add unit-target tests * Resolve origin hostnames asynchronously (#142) * Resolve origin hostnames asynchronously - Allow origin local_ip to be a hostname as well as an IP - Resolve origin targets asynchronously in TCP and UDP clients - Add tests for hostname parsing and lookup * change resolve call order to improve perf * Update version * update package versions * fix daemon tunnel print * Update docker build * Include tray package in Windows release build (#145) - Build `playitd-tray` alongside the CLI and daemon in the release workflow - Keep the MSI packaging step unchanged * format action and update windows exe bin * Refactor CLI attach UI and simplify stdout logging (#149) - Split attach handling into interactive TUI and stdout modes - Remove legacy log capture UI plumbing - Route setup and claim flows through the new console UI * Skip restarting active playitd and prompt before start - Detect when the installed service is already running - Prompt before starting systemd on Linux from CLI flows - Thread console access through start and setup commands * Surface clearer Linux IPC socket errors - Wait briefly for the installed service socket before failing - Report precise Linux socket access diagnostics when IPC is unreachable - Preserve the specific socket error in auto-attach handling * Restrict Linux IPC socket to playit group - Create the `playit` system group during Debian packaging - Set root-owned Unix socket permissions to `0660` and `playit` - Improve CLI diagnostics when access is blocked by group membership * Improve Linux socket access errors - Split playit socket diagnostics into structured cases - Add clearer guidance for playit group access and shell refresh - Expand tests for multiline permission messages * Refactor Linux service handling into shared modules - Move Linux CLI socket diagnostics and startup checks into `linux.rs` - Centralize daemon socket permission setup in `playitd::linux` - Preserve clearer IPC errors for installed service startup * fix service command * Handle agent-limit failures in CLI and daemon - Add a DisabledOverLimit lifecycle and service error code - Surface recovery guidance in CLI, TUI, and IPC status handling - Retry daemon startup until the account limit is resolved * Improve over-limit messaging across CLI and daemon - Rewrite agent-limit errors with clearer titles and guidance - Format service phase labels in natural language - Update IPC daemon provisioning error to include setup guidance * Move tray startup shortcut management into tray app - Add CLI modes to create or remove the Windows startup shortcut - Self-heal the tray shortcut on normal startup - Shift installer actions to invoke the tray helper instead of shipping the shortcut * Refine tray close and startup shortcut handling - Split tray menu actions for startup shortcut management and close behavior - Prompt before closing while the service is still running - Track startup shortcut presence to keep menu state in sync * Enable status button only while service is running - Disable the Open Status action unless the Windows service is active - Keep service control button states in sync with runtime state * remove exe name and cleanup dead code * bump readme * remove broken & dead macos build scripts * Add hello handshake to IPC protocol - Rename protocol version fields to IPC version - Send server hello before requests and ignore unknown event types - Decode requests by type and surface invalid request errors * Handle unknown IPC message types without losing typed validation - Parse request and event envelopes into known-or-unknown variants - Preserve errors for malformed payloads on known message types - Return clearer invalid request responses for future IPC types * Simplify TUI to remove panel navigation - Remove focus switching and scrolling state from the CLI TUI - Always render tunnels and logs in fixed follow mode - Update help text and tests for the reduced key handling * Handle stopped installed service in CLI stop flow - Skip fallback service stop when the installed service is already inactive - Reuse a shared Linux service-activity check for start and stop paths * Await UDP client cleanup and add tunnel integration tests - shut down removed UDP clients before dropping them - cover tunnel relay flow recovery after cleanup - verify parallel UDP flows survive client eviction * Add UDP tunnel stress throughput test - add ignored multi-threaded stress coverage for UDP tunnel bitrate - log payload and wire throughput by packet size - factor out helpers for warmup and throughput measurement * incease stress packet count * Support IPv6 UDP origin addresses (#152) - Bind LAN UDP sockets for IPv4 or IPv6 targets - Accept IPv6 origin packets in UDP client matching - Add integration coverage for IPv6 origin tunneling * Harden Windows IPC ACLs and package secret files - Restrict Windows named pipes to admins and the installed user SID - Persist the installed user SID during MSI install - Write Linux config and log directories with tighter permissions * Rewrite playit user messages for clarity (#154) - Replace terse service and setup errors with friendlier guidance - Update tray and daemon text to match the new terminology - Improve setup prompts and status messages across CLI flows * Refactor IPC paths and platform helpers - Switch CLI config parsing to `serde_yml` - Centralize IPC endpoint and default socket path logic - Move Unix account and Windows startup shortcut helpers into shared modules * Switch IdSlab to slotmap-backed storage - Replace custom slot management with `slotmap` - Preserve vacant-entry capacity semantics - Add regression test for dropped vacant entries * Switch IPC transport to framed JSON codecs - Replace manual line buffering with tokio-util framed readers and writers - Reuse shared IPC connect and framing helpers in client and server - Add codec dependencies for IPC message handling * Consolidate tray menu display handling - Route left and right tray clicks through a shared menu helper - Keep post-menu refresh behavior in one place * Hide Windows consoles and remove legacy startup shortcuts - suppress console windows for Windows service and CLI launches - clean up old console startup shortcuts during tray startup * Split Windows setup helper into its own binary - Add playitd-windows-setup for shortcut and SID setup tasks - Update MSI and build pipeline to package the new helper - Simplify playitd-tray to reject helper-only CLI args * Refactor daemon startup and IPC response handling - Centralize IPC response extraction with shared error handling - Split daemon startup into runtime, secret, and agent phases - Preserve shutdown behavior while supporting secret reprovisioning * Propagate cancellation through agent TCP and UDP tasks - Thread a shared cancellation token through PlayitAgent, TcpClients, and TcpPipe - Stop background work promptly on shutdown and avoid hanging channel sends/connects - Increase TCP pipe buffer and keep busy loops cooperative * add public cert and update windows sign script * Handle Windows service start and stop directly - Add Windows-specific start/stop control paths for the installed service - Treat already-running and already-stopped service states as success - Factor shared SCM opening and service-not-found error handling * Log client disconnects as debug in IPC server - Add IPC error classification for closed connections - Downgrade expected client disconnects to debug logs - Cover connection-close detection with unit tests * Disable duplicate service actions in tray - Track pending start/stop requests in tray state - Prevent repeated clicks until backend responds - Open playit directly on left click * Remove legacy startup shortcut cleanup - Stop deleting old console shortcut variants - Drop obsolete tray helper-arg test and dead code - Trim unused agent_core dev-dependency comments * Remove obsolete test modules - Drop stale unit tests across agent, IPC, CLI, and daemon crates - Keep production code unchanged * update cert * update cert chain
74 lines
4.4 KiB
Plaintext
74 lines
4.4 KiB
Plaintext
-----BEGIN CERTIFICATE-----
|
|
MIIGATCCA+mgAwIBAgIQBVZ4s97UM3mXY279ZngKWDANBgkqhkiG9w0BAQsFADBp
|
|
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
|
|
OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMjU2
|
|
IDIwMjEgQ0ExMB4XDTI2MDQyNTAwMDAwMFoXDTI3MDQyMjIzNTk1OVowgdQxEzAR
|
|
BgsrBgEEAYI3PAIBAxMCVVMxFzAVBgsrBgEEAYI3PAIBAhMGTmV2YWRhMR0wGwYD
|
|
VQQPDBRQcml2YXRlIE9yZ2FuaXphdGlvbjEWMBQGA1UEBRMNRTQ5NTI4MzIwMjAt
|
|
NDELMAkGA1UEBhMCVVMxDzANBgNVBAgTBk9yZWdvbjEPMA0GA1UEBxMGRXVnZW5l
|
|
MR4wHAYDVQQKExVEZXZlbG9wZWQgTWV0aG9kcyBMTEMxHjAcBgNVBAMTFURldmVs
|
|
b3BlZCBNZXRob2RzIExMQzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBzaNFYL
|
|
dWfq6vLFd8pSaojbIj1DtD8QY2yTVME6nR8nkdyl2jMcF6LFfCWZyDRMaG6Ky9WX
|
|
rHjH0ExQ+HxpYS6jggICMIIB/jAfBgNVHSMEGDAWgBS8ayJlnYxo5uYeBfHYciXU
|
|
uOBIwDAdBgNVHQ4EFgQUQNizsSS7c3XSX2ZMaUTWEOsbULIwPQYDVR0gBDYwNDAy
|
|
BgVngQwBAzApMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9D
|
|
UFMwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMIG1BgNVHR8E
|
|
ga0wgaowU6BRoE+GTWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRy
|
|
dXN0ZWRHNENvZGVTaWduaW5nUlNBNDA5NlNIQTI1NjIwMjFDQTEuY3JsMFOgUaBP
|
|
hk1odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2Rl
|
|
U2lnbmluZ1JTQTQwOTZTSEEyNTYyMDIxQ0ExLmNybDCBlAYIKwYBBQUHAQEEgYcw
|
|
gYQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBcBggrBgEF
|
|
BQcwAoZQaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3Rl
|
|
ZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hBMjU2MjAyMUNBMS5jcnQwCQYDVR0TBAIw
|
|
ADANBgkqhkiG9w0BAQsFAAOCAgEAgB57e2sUsZnBUjyd3hKajtul699cjpZKnw5S
|
|
DYGjE1rMVGMx7UijcEtp9Y+SGdPqMjP5Kgh5d42o+tNzWhBL1Py+hDlbPuFE7kZT
|
|
JBXZQHX+aAp+1OsYBx6txQ+GPI+rN9HFYbGlk3Tnjn8kdhKsdZiZ3+U/xPksxjTj
|
|
BX0RCCY6Lj34bE86fpz7GCmgkoqhRkHAN9T9wbhbhS9Asfzql/dSS5c0uRH6Z7LO
|
|
JuWiA5BslIfIY6EUoiaPh5sG9UR4go6WvGrL/cPXSZLxGdkVki/EQnevL8Yl9WOn
|
|
vGC3V9aqJxgisRxI8sr9kZAhRE+RC6lF5M39MVAj/xwsbn4sGbKZm2sRHBI6w+hu
|
|
aZaL4hsbqz2rI9oDuDYN7voD2qv8DZ0XP58LsZJL9PcK8imIR0Tz42JVHc+XcLIc
|
|
GryaiUhpQHcMwm4H8vmuEx2zSC655JYU4UQZP8mPx9GWYO3MIRvHaIQa1ThxZ4Jp
|
|
oyfV0lbM9N7yVuZsAcIAzGBXQc74EcWS4b4uC/MQWlHiRjg8KwcaxJajbIwD6UO/
|
|
d3Oq5NHST7D1H1mUMWjdi0mbb9472impwWQjcXcaH2ME9o4csYo5eZjapVJZ06do
|
|
xixsjEUyugCvGkL0mNTXD4NaNMQuPZAbW+BkpQEuxPOSOap2OaEukA84lIpaT6ce
|
|
l2cveg0=
|
|
-----END CERTIFICATE-----
|
|
-----BEGIN CERTIFICATE-----
|
|
MIIGsDCCBJigAwIBAgIQDk1n9kMWySo7ehfMRpdqjzANBgkqhkiG9w0BAQsFADBi
|
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
|
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
|
|
RzQwHhcNMjEwNzI4MDAwMDAwWhcNMzYwNzI3MjM1OTU5WjBpMQswCQYDVQQGEwJV
|
|
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRy
|
|
dXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMjU2IDIwMjEgQ0ExMIIC
|
|
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri4MfdPvaOOECPqbDE3zNg/n
|
|
sfM0MoNGVGJf6ogVscpox00cZPOiAXZwGLyPm/HmSxmNCDxKUqFWE1LIVTzCYcNt
|
|
kqCv+MNCZoHxIY1mERdsU+sYYfADDDHpi10op0br0SrrrEuf6+uuXRxhpZ7xgopt
|
|
T/WhDG3vqXjabJPsKCDcEsnElut6Nm8XHHV+CcnZpbwle4OCcnrgLerBEHu+iIEj
|
|
gCts01n+1b1abmrFXzJ3aC/iXP/6HIqYs7sdAUU8C7WcLflXm3xzec6yltqyKEyx
|
|
cvgdBMTapqmw7pkFrm8l56JYpctFHJtdyFsroL6lojC8yS3j5z05+SgaAjSMI8Qf
|
|
al5WAy2Jii/EvnPZf1azgUvzYkfKgYEy5kA5c+3j9ZuKifb7EPp4pvkXHZJ6KzJh
|
|
abuRgXqjObO9YtRk5LnZgvwHJ74T/vFTYO47h2wOqv/JaZd8K5/IAiSop/JTjlHB
|
|
stkJfnAb6iH1UUKKgMhpNCpSkM9s2xzQQmZ44RGIRDs+AHm5lER4Z2OohQ+nMP/g
|
|
UjvnouZ2XZuI+yn2EBbtRDkBr9YRru28bpsKNCALgFmNzoxR7rs6FaQBzEsgDj80
|
|
u6F04YlFIQwp9U8iWTljWWMX+p8OJ7Q1LXAPQl/aSZmlf+WLXQcr8x0qU+v7Xi1T
|
|
VSBZpvRMa0s941GE0WkCAwEAAaOCAVkwggFVMBIGA1UdEwEB/wQIMAYBAf8CAQAw
|
|
HQYDVR0OBBYEFLxrImWdjGjm5h4F8dhyJdS44EjAMB8GA1UdIwQYMBaAFOzX44LS
|
|
cV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEF
|
|
BQcDAzB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp
|
|
Z2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu
|
|
Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYy
|
|
aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j
|
|
cmwwHAYDVR0gBBUwEzAHBgVngQwBAzAIBgZngQwBBAEwDQYJKoZIhvcNAQELBQAD
|
|
ggIBAEnyvKd58wdZXmcA+X7z6oYDbVHvIUfZ06j7ceH8uVBtYIDZHk5oVHGzVui4
|
|
wx3D97fdWCqsFL+B59Z9jZcTPdrIlmstIiLkystVOrkyDRsOoiI/6O/nuvxOS+iS
|
|
o+9MLMiU/rUB9YrzLL+USwFeIitwL4CRhdf+Zuar/NYsy1qU8cHV04pGIdie2mPK
|
|
fLa5TqRhA1BElbYPcakAoWKx//O1B04BYiVAbU9dEr2n+pItB2/QzjaIm9tNbcry
|
|
eXW8skjjVMp8AP6t/y9x0XchZ5pVbTABf/qVT3ffxsyzgyL7HyWgC/fVR7rbgVoX
|
|
9Bw/GmHw/xidbZdYWBceThHp1mR2MJtbA6wr3l9c+FguOMF51v9QV45/nhGCQJLc
|
|
nOgdM2wbz13Y7udRoF1pbBfDdBqyo1m9Ztl8NDyUnGp8+ujPUu+egIgPy3Z8hSCP
|
|
bLKQNSMsgRSdcrX+Kd+OOzZKpDvH2EJwzNRqizJLL+luO4AKf8NKIlTXHFbGGaXh
|
|
mNXB6PSUL2XobkwHmA9ZLV6AQ5G3S1gBMYnLBbbjEmuMYzWpT/4WWydXvGZGkCgw
|
|
MqHKVHkOp4Rxy31w8JJBVyp2NTvdr5JXNlrb1U0dJU1Ie0bNkXxvw5vVvv0jhgSL
|
|
d2cMpodm6dMlNU5TWt2QtLrUKtfNvcLKeF6wG2ayii6COsXo
|
|
-----END CERTIFICATE-----
|