Skip to content

Releases: Devolutions/devolutions-gateway

v2024.1.4

22 Mar 03:49
cd97552
Compare
Choose a tag to compare

Bug Fixes

Build

  • jetsocat-nuget: add IsPowerShell to jetsocat nuget package (#760) (d8062396ab)

  • jetsocat-nuget: fix executable file permissions in nuget package (#764) (e807e0abef)

  • jetsocat: build jetsocat for linux-arm64 target (#765) (1ccfd690e0)

Continuous Integration

v2024.1.3

10 Mar 06:21
b904986
Compare
Choose a tag to compare

Features

  • webapp: version number at the bottom of the app menu (#752) (e46b4fc5a9)

  • webapp: check if a new version is available (#757) (d2d8811c36)

  • webapp: bump iron-remote-gui-vnc to 0.2.1 (#754) (6c3df0c18e)

    • Support for client-side rendered hardware-accelerated cursors

Improvements

Bug Fixes

  • webapp: update IronVNC to 0.1.6 (#749) (ffc4427dca)

    • fix connection not shut down properly
  • webapp: shutdown not called when closing from left menu (#750) (ace64d3eb6) (DGW-167)

  • installer: properly write ARP InstallLocation on fresh installs (270c4e981d)

  • webapp: show error backtrace for VNC, ARD and RDP clients (#751) (c5caf5ab25) (DGW-162)

v2024.1.2

05 Mar 07:20
d028e58
Compare
Choose a tag to compare

Bug Fixes

Documentation

v2024.1.1

29 Feb 04:55
c3b6894
Compare
Choose a tag to compare

Features

  • webapp: bump IronVNC and IronRDP packages (#730) (dd46b48559)

    • RDP: enable performance flags
    • VNC: disable MVS codec for ARD
    • VNC: clipboard support

Bug Fixes

  • installer: layout tweaks for better HiDPI support (#724) (dd864ba80e)

  • webapp: disable debug logging by default (#726) (27d70c9af4)

    Remove console.logs and turn off debugwasm for IronRDP and IronVNC.

  • dgw: UI issues in sidebar menu and web form (#727) (6b605780c3)

  • dgw: fix Linux issues with network scanner (#715) (0c6f644724)

  • webapp: update SSH and Telnet packages (#728) (5bc14ec9c7)

    Fixes a bug when the hostname is incorrect where the connection to the Gateway was being lost, and close session elegantly.

Documentation

This build also includes the changes from 2024.1.0 (2024-02-26)

Features

  • dgw: standalone web application V1 🎉

  • installer: new Windows installer built using WixSharp

  • pwsh: add powershell user management with argon2 password hashing (#658) (7157ad6082)

  • installer: add ngrok configuration support (#669) (2caeabab2e)

  • dgw: debug option to set the webapp path (#663) (7da20760f1)

    The DGATEWAY_WEBAPP_PATH env variable is conserved.
    A new stable and documented configuration key is added: WebApp.StaticRootPath.
    The environment variable will be checked first, then the key in the config file,
    and if nothing is specified, we fall back to a webapp folder along the executable.

  • dgw: network scan HTTP API (#689) (846f21d660)

Improvements

  • dgw: use all resolved addresses when connecting (#601) (fe4dc63e40) (DGW-125)

    This patch ensures Devolutions Gateway does not immediately discard
    resolved addresses which are not emitted first by Tokio’s lookup_host.

    Typically, the first address is enough and there is no need to try
    subsequent ones. Therefore, it is not expected for this change to
    cause any additional latence in the the vast majority of the cases.
    However, just to be on the safe side and enable easier troubleshooting,
    a WARN-level log is emitted when failing at connecting to a resolved
    address. If latence were to be introduced by this patch, we can
    easily be made aware of the problem and investigate further (network
    configuration, etc).

    If this proves to be a problem in the future, we can add filtering
    options. For instance, on a network where IPv4 is not supported or
    disabled, we may want to filter out all the IPv4 addresses which may
    be resolved by the Devolutions Gateway.

  • dgw: improve logs quality for JMUX proxy (abaa7b23bb)

    Notably, status codes like ECONNRESET or ECONNABORTED are not
    considered anymore as actual errors, and will be logged accordingly.

  • dgw: improve JMUX proxy error display in logs (#666) (a42b9d6395)

Bug Fixes

  • dgw: upgrade Windows store resolve error log (#617) (4c4df605d0)

    This can help with troubleshooting configuration problems with
    Windows system certificate store.

  • dgw: better status code for unreachable KDC server (#618) (d0cbd7f6db)

  • dgw: spurious warning when using a wildcard certificate (#647) (b2244a9ab4)

  • dgw: ensure the hostname matches TLS certificate (#648) (6ebee46634)

    Warning logs are ignored at this point (logger not yet initialized),
    so it doesn’t really help. Since specifying a hostname not matching the
    TLS subject name is a configuration error, we now return an error upon
    loading the configuration.Log warnings are ignored at this point, so it
    doesn’t really help.

  • dgw: better support for ngrok free plan (#718) (dc58835e20) (DGW-134)

    Our installer is allowing the 0.0.0.0/0 CIDR by default because
    premium plans need the IP restrictions to be configured or just
    all external traffic. However this doesn’t play well with the free
    plan. This patch is using a dirty trick to detect the free plan
    and ignores the IP restriction configuration when it is detected.

Build

  • Include debug symbols for NuGet packages (.snupkg) (186a319b71)

  • dgw: eliminate openssl link dependency on Linux (#707) (8ffb181995)

v2023.3.0

30 Oct 21:18
bfefcec
Compare
Choose a tag to compare

Features

  • pwsh: add (Get|Set|Reset)-DGatewayConfigPath cmdlets (#572) (d162015843) (DGW-113)

  • pwsh: verbosity profile, ngrok tunnel configuration (#577) (51c4d9cee3) (DGW-112)

  • dgw: support for Windows Certificate Store (#576) (913f9fad03) (DGW-105)

    New configuration keys:

    • TlsCertificateSource: Source for the TLS certificate (External or System).
    • TlsCertificateSubjectName: Subject name of the certificate.
    • TlsCertificateStoreName: Name of the System Certificate Store.
    • TlsCertificateStoreLocation: Location of the System Certificate Store.
  • pwsh: add new TLS configuration options (#581) (3c12469989) (DGW-120)

  • dgw: support for PFX files (#583) (9ab145d7ea) (DGW-121)

    PFX files may now be specified in the TlsCertificateFile option.
    Furthermore, a new optional option is added: TlsPrivateKeyPassword.
    This option may be used when the PFX file is encrypted using a passkey.

Improvements

  • dgw: [breaking] adjust ngrok options (#575) (c30de99d5b)

    Some ngrok options are not making much sense for Devolutions Gateway
    and were removed:

    • PROXY protocol: we do not handle PROXY protocol in Devolutions Gateway
      and instead make use of Conn::peer_addr to find the original client IP.
    • Basic Authentication: we have our own way to handle the authentication
      using Json Web Tokens.
    • Schemes: only HTTPS should be used when exposing a Devolutions Gateway
      on internet.

    The Authtoken key was also renamed to AuthToken for readability.

Documentation

Continuous Integration

  • Ensure upload to OneDrive works when dispatched with workflow_call (#571) (efe8019faa)

v2023.2.4

18 Oct 21:16
Compare
Choose a tag to compare

Features

  • dgw: new VerbosityProfile option (#570) (969c42f7a7)

    This adds a stable option to configure log verbosity.

Improvements

  • dgw: add support for more X.509 cert PEM labels (#519) (67e9a483a2)

    Devolutions Gateway will now recognize X509 CERTIFICATE and
    TRUSTED CERTIFICATE as valid PEM labels for X.509 certificates.

  • dgw: more trace records for RDP extension (#518) (84134481f2)

    This will help when troubleshooting web client issues.

  • dgw: improve logs quality (#557) (fb1ffd07f7) (#528) (433e25382e)

    • Records additional info on running sessions
    • Improves file rotation

Bug Fixes

Build

Continuous Integration

v2023.2.3

15 Aug 19:19
d3cc07b
Compare
Choose a tag to compare

Bug Fixes

  • dgw: error 500 when recording folder is missing (#502) (3b1992e647) (DGW-99)

    When listing the recordings, if the recording directory does not exist,
    it means that there is no recording yet (and the folder will be created
    later). However, Devolutions Gateway is attempting to read this folder
    anyway and the HTTP error 500 (Internal Server Error) is returned. This
    patch fixes this by returning an empty list as appropriate.

  • dgw: typo in TLS forward route (#510) (7cea3c055a) (DGW-102)

    The name of the endpoint was wrong, and thus /jet/fwd/tls was
    returning the 404 Not Found status.
    Furthermore, the with_tls option was not properly set.

Build

  • deps: update dependencies

Documentation

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