Skip to content

Releases: Devolutions/devolutions-gateway

v2023.2.2

27 Jun 19:56
Compare
Choose a tag to compare

Features

Improvements

  • dgw: durations in seconds in ngrok config (#485)

    Previously, a Duration was deserialized from a string
    using the humantime_serde crate. With this patch, the duration
    is specified in seconds using an integer.

    In other words, this code:

    #[serde(default, skip_serializing_if = "Option::is_none", with = "humantime_serde")]
    pub heartbeat_interval: Option<Duration>,

    Is changed into this:

    #[serde(skip_serializing_if = "Option::is_none")]
    pub heartbeat_interval: Option<u64>,
  • dgw: make Ngrok listeners appear in configuration diagnostic (#485)

Bug Fixes

  • dgw: truncated payload after PCB reading (#483) (875967f15b) (DGW-97)

    Too many bytes are consumed when PCB string is missing the
    null-terminator.

    Indeed, until now the number of bytes to consume was found by computing
    the size of the previously decoded PCB when re-encoded.
    IronRDP will always encode PCB string with a null-terminator (just like
    mstcs client). This is generally correct, but will cause payload
    truncation when the received PCB string did not originally contain
    the null-terminator.

    This patch is changing this. The "cursor API" is used instead, and
    cursor position after reading the PCB can be used to find the number of
    bytes actually read (even if re-encoding the PDU would give a different
    result).

Continuous Integration

Build

v2023.2.1

12 Jun 15:15
b3bee43
Compare
Choose a tag to compare

Improvements

  • jetsocat: JETSOCAT_LOG instead of RUST_LOG (db06a3d32)

Bug Fixes

  • jetsocat / dgw: ignore case for hosts and schemes (6666623219)

    Case is irrelevant when comparing hostnames and schemes.
    Note: using eq_ignore_ascii_case is okay because we don’t
    really expect unicode in such context.

  • dgw: KDC proxy auth using token in path (2173ecec4d) (DGW-94)

Build

v2023.2.0

01 Jun 21:17
f7ec7fe
Compare
Choose a tag to compare

Features

  • dgw: /jet/jrec endpoint for session recording (#404) (bbc0c41941) (DGW-64) (#408) (51355a1ac4) (#410) (8a28a44d5d) (#417) (56578f8785) (1816b9586f)

    Adds new JREC token type for session recording.
    Adds new jet_rft (recording file type) private claim.
    Handles /jet/jrec route for WSS to file streaming.

  • dgw: /jet/heartbeat endpoint (#406) (605d3871de)

    The /jet/heartbeat endpoint requires a scope token for the
    "gateway.heartbeat.read" scope. It is very similar to /jet/health, but
    returns additional information that should not be publicly available
    such as the current number of running sessions.

  • dgw: /jet/jrec/list endpoint (#412) (332c86fc5e)

  • dgw: /jet/jrec/pull/{id}/{filename} endpoint (#416) (8187f8bb2e) (#431) (66dc4e3009)

    Recording files can be fetched using this new endpoint and a
    JREC token with the jet_rop operation set to pull.

  • dgw: ngrok tunnel support (711164010a) (9e29a1d3ce)

  • dgw: add ldap, ldaps application protocols (#432) (bdb34ef27e)

  • dgw: add known application protocol "tunnel" (c3142870f2) (ARC-142)

    This is known as Devolutions Gateway Tunnel on RDM side.

Improvements

  • dgw: [breaking] move jet/{tcp,tls} endpoints under /jet/fwd (#407)

    That is:

    • /jet/tcp/jet/fwd/tcp
    • /jet/tls/jet/fwd/tls

    This is a breaking change, but these routes were not yet used by any other Devolutions product
    until 2023.2.x releases, so it is safe to change this at this point.

  • jetsocat: default port in WebSocket URLs (#413) (354e097d4e)

    With this change, port may be omitted from the WebSocket URL.
    In such case, the default port will be used (either 80 or 443).

  • dgw: log version on start (#414) (7391114a4d)

    Useful when troubleshooting issues using user’s logs.

  • dgw: improve HTTP error reporting (#415) (ad19a2fa7c)

  • pwsh: use .NET 6 RSA APIs when available (#435) (974d8ee1da)

    Use .NET 6 RSA public/private key APIs when available.

  • dgw: graceful shutdown (ef1d12d468)

  • dgw: do not enforce scheme in /jet/fwd routes (#430) (54e467f803)

    This was inconsistent with other routes such as /jet/jmux where
    dst_hst will have the http or https scheme, but this is
    simply used as a filter policy and Devolutions Gateway will not
    wrap the stream further into an "https protocol layer".

    Instead, we rely on the requested URI to choose between plain TCP
    and TLS wrapping at proxy level (i.e.: /jet/fwd/tcp vs /jet/fwd/tls).

Performance

  • dgw: re-use TLS client config (#433) (b6ebb01aad)

    As of rustls 0.21, it’s possible to disable the TLS resumption that is
    not supported by some services such as CredSSP.

    This allow us to reuse the same TLS client config and connector for
    all proxy-based TLS connections.
    (TlsConnector is just a wrapper around the config providing the
    connect method.)

    Making one of these can be expensive, and should be once per process
    rather than once per connection.

    source

Build

Continuous Integration

v2023.1.3

17 Mar 02:18
aba1c6c
Compare
Choose a tag to compare

Bug Fixes

Features

v2023.1.2

13 Mar 21:16
Compare
Choose a tag to compare

Improvements

  • dgw: size-based log rotation (#393) (e3acafcfcd) (DGW-34)

    Set a maximum size of 3 MB for each file and a maximum of 10 log files.
    With this change, Devolutions Gateway should never consume more than 30 MB for its logs.

  • pwsh: sort certification chain from leaf to root (#394) (f7ff93c6df) (DGW-80)

  • installer: improved error handling in Windows installer (#397) (2766e5fffe) (DGW-78)

    PowerShell configuration commands are now executed as custom actions instead of WixSilentExec.
    Errors are tracked and, if the installer is running with UI, an appropriate error message is shown to the user.

    PowerShell command output is redirected to a temporary file; in the case of an error we provide the user the path to that file.
    A general command execution error will display a string error value.

    Custom actions are refactored slightly for consistency and readability:

    • Internal functions now only return void, BOOL, or HRESULT where possible. Errors are always handled as HRESULT and other results (e.g. Win32 error codes, LSTATUS, null references) are converted to HRESULT and handled with the different WiX macros (e.g. ExitOnWin32Error).
    • Consolidate on WixGetProperty instead of MsiGetProperty and be careful to release the resulting strings (ReleaseStr)
    • Consolidate on nullptr instead of NULL
  • installer: rollback on error in Windows installer (#397) (2766e5fffe) (DGW-76)

    For first time installs, if the installation fails, files that may have been created by the configuration process are cleaned up.

v2023.1.1

23 Feb 01:19
ef374f6
Compare
Choose a tag to compare

Improvements

  • dgw: better TLS leaf certificate public key extracting (#390) (a4dec08e23)

    Use x509-cert crate to extract the public key from the leaf
    TLS certificate. x509-cert supports more certificates.

Build

v2023.1.0

14 Feb 19:31
aa480cc
Compare
Choose a tag to compare

Features

  • dgw: clean path PDU extension for RDP (3bc0643818) (ARC-109)

  • installer: show *.cer when browsing for certificate files (#383) (2de4a3880d)

    .cer is another popular extension for certificate files.

  • jetsocat: file-based pipes (#385) (62394d3b48)

    • write-file://<PATH>: write file at the specified location
    • read-file://<PATH>: read wile at the specified location
  • dgw: add service version to health check JSON response (d9f5472120)

Bug Fixes

  • jetsocat: use rustls-native-certs on macOS and Linux (#382) (7305ce42be)

    Let rustls use the platform’s native certificate store.

Build

Continuous Integration

  • jetsocat: enable hardened runtime on macOS (#378) (84b5c33b47)

  • jetsocat: build the jetsocat nuget in package.yml (#380) (2e0d0eef4d)

    Build the jetsocat nuget package as part of the packaging workflow (instead of the old standalone workflow, which just took the latest release from GitHub).

    If running the package workflow manually, the version number of the package may be specified; else it defaults to the current date.

  • jetsocat: add Linux binary to nuget package (#384) (8a74ff86ca)

v2022.3.4

16 Jan 20:56
Compare
Choose a tag to compare

Bug Fixes

  • pwsh: nil UUID when creating an empty DGatewayConfig (#372) (370ed02947) (DGW-73)

    Without this patch, the nil UUID is used as the "missing" value instead of $null.

  • installer: ensure default config on install, properly set access URI host (a506c871ee) (DGW-72)

    Ensures a default config is created using the Devolutions Gateway binary before applying "Configure now".

  • installer: avoid Unicode char literals (#376) (8d94f94b81) (DGW-74)

    Unicode character literals in source files can be problematic, depending on the editor and encoding.
    Instead, avoid the issue by masking the character with an asterisk instead of a Unicode "bullet".

Build

Documentation

Features

  • dgw: add Telnet protocol variant (b89d553095) (DGW-70)

    This change is making possible to omit the port in the target host
    field. The Telnet default port will be inferred as appropriate.

v2022.3.3

13 Dec 15:14
ea15adb
Compare
Choose a tag to compare

Improvements

  • dgw: set default TCP port to 8181 (#364) (9df3a0e) (DGW-66)

  • Normalize file extensions (#367) (5d26d73) (DGW-67)

    By convention:

    • .pem -> public key
    • .key -> private key
    • .crt -> certificate

    Note that this is merely a convention, not a standard, and file openers
    should be able to select a .key file when choosing a public key (through
    the drop-down menu typically)

  • installer: start the Gateway service at install time (#363) (b07ccd4)

Bug Fixes

v2022.3.2

25 Nov 20:44
3c04388
Compare
Choose a tag to compare

Improvements

  • installer: install service as "Local Service" again (fewer permissions) (#353, #354)
  • jetsocat: automatically clean old log files (#346) (d032530)
  • dgw: IPv6 support (#350) (d591085)
  • dgw: support for full TLS certificate chain (#359) (ee1f560)

Features

  • installer: enable configuration of Devolutions Gateway via installer UI on Windows (#348) (6392ed9)

Build