# NetExperts Support — Source Release 1.3.1

NetExperts Support is the remote-support tool NetExperts ships to its
customers. It is a fork of [RustDesk](https://github.com/rustdesk/rustdesk)
1.4.6 (client) and [rustdesk-server](https://github.com/rustdesk/rustdesk-server),
rebranded and modified for our deployment. Both upstream projects are
licensed under the GNU Affero General Public License, version 3, and so is
this fork. The full licence text is in `LICENSE`.

We publish this archive to satisfy our obligations under section 13 of the
AGPL: when we distribute the binary, we make the corresponding source
available. If you received a copy of NetExperts Support and want the source
that produced it, this is it.

## Layout

    client/   Rebranded RustDesk 1.4.6 client (Rust + Flutter)
    server/   Rebranded rustdesk-server (Rust) plus our staff-auth API
    docs/     Build, install and rebrand notes
    LICENSE   GNU AGPL v3
    README.md This file

## What we changed

The fork is annotated. Search the client tree for `NetExpertsChange:` to
find every line we touched relative to upstream RustDesk. The high-level
list lives in `docs/changes/` (eleven numbered change documents covering
branding, settings, the staff login flow, the installer, and the auto-update
behaviour). `docs/new-features-1.2.0.md` is the changelog for the rebrand.

Notable functional differences from upstream:

- The client points at `support.nxx.au` as its rendezvous server, with our
  public key compiled in (`client/libs/hbb_common/src/config.rs`).
- The "allow NetExperts staff login" toggle, when on, validates a master
  password against `https://staff.support.nxx.au/api/auth/master-password/validate`.
  The response is signed and the client verifies the signature against the
  rendezvous public key before accepting it. No staff password is embedded
  in the binary.
- A second build profile (`windows_inbound_client`) produces an
  inbound-only Windows client suitable for end-user machines.
- A small Python service in `server/installers/nxsupportAPI/` is the
  reference implementation of the master-password endpoint.

## Building

The client build is involved. Start with `client/README.md` and
`client/build.py`. You will need a C++ toolchain, vcpkg, Rust and Flutter;
the upstream RustDesk build documentation in `client/docs/` covers most of
it. The vcpkg cache itself is not in this archive because it is large
(~750 MB) and reproducible from upstream; vcpkg will fetch and build it for
you on first run.

The server build is straightforward: `cd server && cargo build --release`.

## Upstream

- RustDesk client: https://github.com/rustdesk/rustdesk (we forked from 1.4.6)
- rustdesk-server: https://github.com/rustdesk/rustdesk-server

Both projects are © Purslane Ltd. and other contributors, used here under
the AGPL.

## Contact

Source-related questions: opensource@netexperts.com.au
