111 Commits

Author SHA1 Message Date
UNITRONIX 01aebf597c Replace CDAP Support Agent generator with BetterDesk Support templates
Install Client generator templates from GitHub, inject custom.txt for incoming-only builds, and remove the Go Support Agent pipeline.
2026-09-07 01:29:41 +02:00
UNITRONIX 3f35dda693 fix(security): patch Dependabot deps and harden scanner noise
Bump echo, qs, and browserslist; redact CDAP command/session logs;
reject restore symlinks; expand CodeQL exclusions for known FPs.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-06 01:19:25 +02:00
UNITRONIX e89a6889eb fix(docker): clarify ADMIN_PASSWORD mapping and ARM AIO :dev (#385)
Map ADMIN_PASSWORD into compose containers, log bootstrap set=yes/no,
and document amd64-only AIO :dev plus split/dev-arm workarounds for arm64.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-05 23:00:49 +02:00
UNITRONIX 04fcf1524a fix(signal): wire MASK into LAN peer subnet detection
MASK/-mask was loaded and documented but never used; LAN checks always compared the first three IPv4 octets. Parse the CIDR once and use it in isSameNetwork and LAN-relay reachability, keeping /24 when MASK is empty or invalid.

Refs #404

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-05 21:01:49 +02:00
UNITRONIX 817189e39e fix(ci): dispatch GHCR :dev publish after version bump
GITHUB_TOKEN bump pushes never start other workflows, so inverting the
docker build trigger alone left :dev unpublished. version-bump-dev now
dispatches docker-publish with tag=dev after a successful bump.

Refs #401

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-03 21:39:01 +02:00
UNITRONIX 28584b47f8 fix(ci): match version-bump by commit subject only
Avoid false docker builds / skipped patch bumps when a feature commit body
mentions the version-bump marker (as happened on the #401 fix commit).

Refs #401

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-03 21:34:05 +02:00
UNITRONIX 792a67d51d fix(ci): publish GHCR :dev on version-bump so image matches tip
Branch pushes skipped [version-bump] builds and labeled images from the
feature commit (VERSION N), so :dev stayed one patch behind git tip (#401).
Build only on version-bump commits; AIO :dev is amd64-only to avoid 6h cancels.

Refs #401

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-03 21:30:35 +02:00
UNITRONIX cef2ab7c8e fix(signal): close shared-NAT RelayResponse gaps and add opt-in initiator
Correlate RelayResponse via pending UUID/initiator store and panel CIDRs;
stop FindByIP ticket misdelivery. Opt-in ALLOW_SHARED_NAT_INITIATOR for
stock multi-device CGNAT without peer identity inheritance.

Refs #399

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-03 21:25:50 +02:00
UNITRONIX 593032feed fix(ci): set OCI image.version from VERSION on GHCR publish
workflow_dispatch with tag=latest was labeling images as version latest; reporters check org.opencontainers.image.version (#387).

Refs #387

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-29 02:24:52 +02:00
UNITRONIX fbdf5ba19e fix(ci): retag GHCR latest on stable release (#387)
Stable Release/tag builds were skipped for [version-bump] commits and never moved latest, so Docker installs on :latest stayed on 3.5.4 without the #382 signal fix. Dispatch now publishes latest + VERSION.

Refs #387

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-29 02:03:25 +02:00
UNITRONIX d7a2fe6562 fix(security): harden update restore and notification CSRF
Protect backup restores and session-authenticated notification writes from unsafe state changes, while clearing CodeQL false positives without weakening intentional TLS pinning.

Refs CodeQL alerts #297-310

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 21:08:05 +02:00
UNITRONIX 2eec0d2ceb feat(update): use commit-bound Go server artifacts
Prefer verified GitHub Actions or exact Release binaries during native updates, with checksum validation and local compilation fallback. Defer Support Agent source synchronization and rebuild queueing until after the console restart.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 20:56:45 +02:00
UNITRONIX 26038176eb feat(desktop): add native BetterDesk Desktop core and release path
Introduce the independent Rust + Flutter desktop client with CDAP/RustDesk
session support, packaging via build.py, and tag-triggered Windows/Linux
release artifacts. Align server CDAP desktop interop (view_only, desktop_end,
capabilities), protocol docs, pre-release checklist, version bump rules, and
WAN allowlist for /api/health and /api/server/pubkey.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-20 11:08:29 +02:00
UNITRONIX 29d03492fb fix(installer): harden cross-platform lifecycle reliability
Harden native, agent and Docker lifecycle paths with tracked update verification, rollback and preflight checks, safe uninstall semantics, and health verification. Add shared protocol tests, installer CI gates, and lifecycle documentation.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-15 21:50:47 +02:00
UNITRONIX ed96e94806 refactor(agent): enhance session management and input handling
- Updated session control mechanisms to ensure proper handling of remote input and clipboard operations.
- Introduced session authorization checks to validate operator permissions before starting desktop sessions.
- Improved input injection logic to prevent unauthorized access during active sessions.
- Added new capabilities for managing session flags and controls, ensuring a more robust and secure desktop experience.
- Enhanced error handling and logging for better traceability of session-related actions.
2026-08-06 00:50:02 +02:00
UNITRONIX 6442b59902 feat(ci): add frontend JavaScript syntax check to CI workflow
- Introduced a new step in the CI workflow to check browser JavaScript syntax using the `npm run check:frontend` command.
- Updated package version to 3.5.14 and bumped dependencies: nodemailer to 9.0.4 and ws to 8.21.2.
- Enhanced logging configuration to use NODE_ENV for determining log level.
- Improved accessibility styles for UX 3.5 and added focus outlines for help panel elements.
2026-08-05 23:12:34 +02:00
UNITRONIX 667664cd47 fix(peer): implement FindAllByIP for outbound initiator authorization
Add FindAllByIP method to retrieve all peers sharing the same public IP, enabling safe fallback for authorization when exact ip:port is unavailable. Update related logic in requireAuthorizedInitiator to handle single live peer scenarios and prevent identity inheritance in ambiguous cases. Adjust tests to cover new functionality and edge cases.
2026-08-05 22:42:22 +02:00
UNITRONIX cace557dfc fix(signal): block same-NAT pending outbound initiator impersonation
Authorize PunchHole/RequestRelay by exact ip:port, TCP session, token, or panel proxy — not bare FindByIP — so unapproved enrollment clients cannot inherit an approved peer identity. Refs #302
2026-08-03 23:15:22 +02:00
UNITRONIX abe0d52fe4 chore: refresh EOL runtimes and patch non-agent dependencies
Move Docker/CI/installers to Node 24 and Go 1.26 images, bump Alpine server runtime, apply safe npm/Go patch updates, migrate SNMP to pysnmp, and document deferred majors.
2026-08-01 09:19:42 +02:00
UNITRONIX a73a3a40b3 fix(betterdesk.sh): start Console after GitHub update (Refs #306)
Prevent set -e abort on sqlite3 API-key sync so betterdesk-console is always started after Online GitHub update; fail the update loudly when Console stays inactive. Hotfix PRs on main use patch bumps (3.4.x).
2026-07-25 08:09:05 +02:00
UNITRONIX fd12dd1d5e fix(ci): bump Go toolchain 1.26.5 and stop CodeQL push conflict 2026-07-21 12:52:12 +02:00
UNITRONIX 9b102c6e58 fix(ci): unblock Go vet, Secret Scan, npm audit, and race flake 2026-07-21 12:08:33 +02:00
UNITRONIX feb3d19987 chore: update .gitignore and Gitleaks configuration, enhance CI workflows
- Updated .gitignore to include new binary paths and retain .gitkeep.
- Modified Gitleaks configuration to ignore additional directories.
- Adjusted CI workflows to prevent execution on version bump pushes and improved version bump handling in scripts.
- Bumped BetterDesk Console Manager version to 3.3.136 in betterdesk.sh and related scripts.
2026-07-13 17:34:41 +02:00
UNITRONIX 655e20f512 chore: update dependencies and enhance security measures
- Bumped `vitest` and `vite` versions in both root and agent-client lockfiles.
- Added `web-nodejs` overrides for `@babel/core` and `js-yaml` to address Dependabot alerts.
- Implemented `NewConnLimiterFromInt` for relay per-IP limits in the Go server, removing the deprecated `deepSet` function from the patch-role-scope-i18n script.
- Extended CodeQL coverage to include new query filters and improved npm audit configurations.
2026-07-12 21:36:53 +02:00
UNITRONIX 648a8d4f8a security(3.4): harden console and Go server for pre-release audit
Commit web-nodejs lockfile with tar override; CI uses npm ci and moderate npm audit.
Add LOG_LEVEL filtering and log redaction in Node console and Go server.
Validate WS tokens on bd-signal; require single-use token for remote-agent relay.
Limit active relay sessions per IP and block open enrollment without TLS.
2026-07-12 20:44:46 +02:00
UNITRONIX c2aedb10fe Enhance security and input validation across CDAP and organization routes
- Implemented input validation for `orgId` and `deviceId` in CDAP and organization detail routes using `assertSafeApiId`, returning a 400 error for invalid inputs.
- Added HTML escaping for `deviceId` and `orgId` in views to prevent XSS vulnerabilities.
- Hardened `patch-role-scope-i18n.js` against prototype pollution with a guard for unsafe nested keys.
- Updated CodeQL configuration to include new exclusions and ensure documented exclusions are applied.
2026-07-09 21:16:55 +02:00
UNITRONIX 3411994d60 feat(docker): introduce official single container layout and update installation scripts
- Added support for an official all-in-one Docker image (`ghcr.io/unitronix/betterdesk`) as the default installation method.
- Updated installation scripts and documentation to reflect the new single container layout.
- Retained legacy two-container layout option for backward compatibility.
- Adjusted API port from `21114` to `21121` for the new layout.
- Enhanced Docker-related scripts and configuration files to support the new structure.
- Updated various language files to ensure consistency in messaging regarding Docker deployment.
2026-07-06 19:31:22 +02:00
UNITRONIX c070054b39 fix(security): close remaining CodeQL alerts with suppressions and paths-ignore.
Add inline CodeQL suppressions for MeshAgent TLS pin and EJS layout body, and exclude those files from analysis so alerts #280 and #281 clear on the next scan.
2026-07-03 22:47:56 +02:00
UNITRONIX 846526a9dd fix(security): resolve Dependabot and CodeQL alerts on dev.
Bump support-agent Go deps, harden relay recording paths and clipboard HTML stripping, update agent-client Rust lockfile, and extend CodeQL/Dependabot config for known upstream limits.
2026-07-03 22:33:18 +02:00
UNITRONIX 1118fc2ba6 Anonymize operator infrastructure fingerprints from public repo.
Remove internal LAN IP, SSH user, and developer paths from docs and examples; move deploy runbook to gitignored docs/private with a public template; drop Cursor debug logging leftovers; add CI checks to prevent regression.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 19:07:42 +02:00
UNITRONIX d6b94f986b chore: update CI workflow to use package.json for caching and switch to npm install 2026-06-27 20:21:48 +02:00
UNITRONIX 611863753f feat(mesh): introduce MeshCentral compatibility layer with REST API and UI enhancements
Added a compatibility layer for MeshCentral, including a native Go implementation of key endpoints and a unified inventory for mesh agents. Enhanced the UI with new actions for mesh agents, such as terminal access and file management. Updated localization for mesh features and introduced new styles for mesh terminal overlays. Integrated interop testing for simulated and live MeshAgent connections.
2026-06-21 22:02:04 +02:00
UNITRONIX b6c5f3e53d chore: bump version to 3.3.45 [version-bump] 2026-06-20 18:49:19 +02:00
UNITRONIX 253a126888 chore: remove outdated build workflow and update CI configurations
Deleted the obsolete build workflow for BetterDesk and made adjustments to the CI configurations across multiple workflows. This includes changing permissions from write to read in the release-client and secret-scan workflows, updating the Node.js setup in the web-nodejs CI, and enhancing the rate limiting for RdClient pages. Additionally, improved the handling of return URLs in the auth middleware and added new utility functions for better security and logging.
2026-06-20 18:08:54 +02:00
UNITRONIX 52248b81bb Improve Go server stability without changing RustDesk wire protocol.
Batch peer status writes, skip heartbeat rate limits for known peers, CDAP session cleanup on disconnect, relay WS conn limits, Postgres query timeouts, org login throttling, and CI with go test -race.
2026-06-14 11:38:36 +02:00
UNITRONIX fe2d970574 chore: release version 3.3.0 [version-bump]
Complete stable release after PR #196 merge. Delete stale release branch
before push in version-bump-main workflow to avoid non-fast-forward failures.
2026-06-12 06:32:55 +02:00
UNITRONIX 6c16454fc7 chore(codeql): broaden query exclusions for confined paths and escaped UI
Document safePath consumers, escaped chat/cdap DOM updates, test harness,
and dev-only i18n audit script in codeql-config.yml for PR gate parity.

Refs #196
2026-06-12 06:22:00 +02:00
UNITRONIX 188a13c2c0 fix(security): resolve CodeQL type-confusion and extend query exclusions
Use plainBodyObject() for device file read API to avoid array .length
tampering; rate-limit ticket DELETE; document intentional sanitizers in
codeql-config.yml for branding, fonts, network monitor, and server paths.

Refs #196
2026-06-12 06:19:04 +02:00
UNITRONIX 5403a04783 chore: update Go server version handling and enhance Docker build process 2026-06-11 20:31:21 +02:00
UNITRONIX 577fc79a97 chore: update Docker Compose image tags to 3.2.12 and enhance documentation for versioning 2026-06-11 18:36:48 +02:00
UNITRONIX aea7b30b29 fix(security): enhance path validation and rate limiting for file access
Updated CodeQL configuration to exclude additional paths for security checks. Introduced a new file access rate limiter to prevent abuse of file download endpoints. Improved path resolution functions to ensure confined access and added validation in body scalar functions to reject non-scalar types. Enhanced error handling in API endpoint validation to prevent invalid inputs.
2026-06-11 18:33:14 +02:00
UNITRONIX c2e0e2e784 fix(security): harden CodeQL findings across console and Go server
Address GitHub code scanning alerts with OIDC SSRF guards, confined path
helpers, safer client routing, branding sanitization, upload rate limits,
and CodeQL config exclusions for dev-only and protocol-intentional hashes.
2026-06-11 06:57:58 +02:00
UNITRONIX 556f0a2a3f fix(ci): grant pull-requests write for stable version bump workflow
Fixes automated release PR creation after merge to main (was failing with
Resource not accessible by integration).
2026-06-10 03:03:22 +02:00
UNITRONIX 6d7692ea6a fix(security): phase-A log redaction, font/transfer paths, CI permissions
Stop logging generated admin passwords, redact API login usernames,
confine font and file-transfer temp paths with safePath, and scope
GitHub Actions permissions in build.yml.
2026-06-09 02:42:56 +02:00
UNITRONIX cf6f70f6cd fix(ci): correct find precedence in server release checksum step
The migrate artifact directory was matched without -type f, causing
sha256sum to fail on tag pushes (e.g. v3.1.3-dev).
2026-06-09 02:08:40 +02:00
UNITRONIX c219f3be68 fix(security): patch CVE-2026-50575 and harden deps, SSRF, shell exec
Complete GHSA-3v82-3gf8-fxx8 WebSocket replay fix for soft-deleted peers,
bump vulnerable Go/Rust dependencies, and apply CodeQL-driven hardening
(OIDC URL validation, path confinement, execFileSync, rate limits).
2026-06-09 02:05:17 +02:00
UNITRONIX 8ae17f38ec fix(ci): restore direct dev version bump after relaxing branch protection
GitHub Actions cannot create PRs in this repo; dev no longer requires
pre-push status checks so the bump bot can push [version-bump] commits.
2026-06-07 17:01:03 +02:00
UNITRONIX ef62317927 fix(ci): dev version bump via PR to satisfy branch protection
Direct pushes to protected dev were rejected (GH006). Create bump/vX.Y.Z
PR and admin-merge; skip re-run on bot merge commits to avoid loops.
2026-06-07 16:59:41 +02:00
UNITRONIX 3076c009c6 fix(ci): release bump via PR to satisfy protected main branch
Direct pushes from version-bump-main were rejected by branch protection;
create release/vX.Y.Z PR and admin-merge instead.
2026-06-07 16:57:30 +02:00
UNITRONIX 317365c766 Add dev/main branching, automated versioning, and update channel switcher.
Introduce bump-version.js with CI workflows for patch bumps on dev and
stable releases on main, plus panel and installer UI to choose stable vs
development GitHub update branches.
2026-06-07 16:48:31 +02:00