Skip to content

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Nov 11:31
· 20 commits to main since this release
Immutable release. Only release title and notes can be modified.
f2a7520

Device-server features from classic ser2net, MQTT 5 with Modbus pulses and safe values, trace
files and TLS files handled from the browser and the REST API, xterm.js 6 in the web console,
and signed RPM packages.

Upgrading from 3.0.x: nothing has to change; every new feature is off until it is turned on.
dnf / zypper users of the package repository: with this release every .rpm there is
signed, which changes each file once. If dnf or zypper says a package doesn't match what it
downloaded, run sudo dnf clean metadata (or add --refresh) or sudo zypper refresh. To have
each package's signature checked too, fetch ser2netweb.repo again (zypper: remove the
repository and add it again); the old file keeps working with the signed metadata checked.
Going back to 3.0.x: delete cert-notices.json from the data folder first; 3.0.x drops the
new settings on its next save (backups/ keeps the file).

Device server (#120)

  • Packing for raw TCP and UDP mappings: the device's output goes out as frames (a gap, a
    delimiter or a size), one datagram per frame over UDP.
  • One writer, read-only listeners (network.writer_client_ips): only those clients send to
    the device; the others only listen, and a listener can never push a writer out.
  • Open the serial port only while a client is connected (network.open_on_connect), so
    another program can use it in between.
  • Port pools (classic ser2net's rotators): one TCP port hands each client to the first free
    mapping of a pool.
  • Connect-out failover over network.remote_targets, with an optional return to the first.
  • The classic ser2net import carries UDP remote addresses, chardelay and rotators over.

MQTT and Modbus (#118)

  • MQTT 5 per mapping (3.1.1 stays the default): clean start, session and message expiry,
    the broker's reason codes in the log and the status.
  • Modbus pulses: a coil with pulse_ms switches itself off again.
  • Modbus safe values: a point with safe_value / safe_after_s is written to that value
    once the broker (or the Sparkplug primary host) has been away that long, once per outage.

Operations (#119)

  • Trace files in the REST API (list, download, delete; operator tokens) and timed
    recordings
    of 15 min, 1 h or 24 h that end by themselves.
  • TLS certificate about to expire notification and metric.
  • Upload TLS files in the browser (admins), checked before they are kept.
  • Clock-step watch: a clock set while ser2netweb runs is logged, audited, marked in traces
    and counted.

Web console (#102)

  • xterm.js 6.0.0 with @xterm/addon-fit 0.11.0; the console's scrollbar now fades when not
    in use.

Packaging (#117)

  • Signed RPM packages in the package repository, checked by dnf and zypper.
  • Packages built from the recipes in packaging/ know they are distribution packages
    (--about, data directory, install hints).
  • EPEL 10 builds, a conda-forge recipe, and the reverse-proxy examples of
    docs/REVERSE-PROXY.md run behind real nginx in CI.

Fixed

  • Windows: a save no longer fails with "Could not save config.json" (a 400 in the web UI)
    while config.json is open for a moment, e.g. during an antivirus scan.
  • A serial port at a baud rate without a termios constant (250000, 74880, …) got the input
    speed 38400 on musl systems (Alpine) (#117).
  • A mapping's TLS key that is a copy of the admin UI's is refused too; a !! note is written
    as text in a hex trace.

REST API 1.2.0; the snap is now released to every channel. Everything, with the upgrade notes
in full: CHANGELOG.md.

Assets

File
ser2netweb-linux-x64 Linux x86_64 executable (glibc ≥ 2.28)
ser2netweb-linux-arm64 Linux arm64 executable (glibc ≥ 2.28; Raspberry Pi 3/4/5 with a 64-bit OS)
ser2netweb-windows-x64.exe Windows x64 executable; --install-service runs it as a service
ser2netweb_3.1.0_amd64.deb package for Debian, Ubuntu and other .deb systems, x86_64
ser2netweb_3.1.0_arm64.deb package for Debian, Ubuntu and other .deb systems, arm64
ser2netweb-3.1.0-1.x86_64.rpm package for Fedora, RHEL, AlmaLinux and other .rpm systems, x86_64
ser2netweb-3.1.0-1.aarch64.rpm package for Fedora, RHEL, AlmaLinux and other .rpm systems, arm64
ser2netweb-install.sh installs a Linux executable as a systemd service, checked against SHA256SUMS
ser2netweb-standalone.service systemd unit for the Linux executables (data in /var/lib/ser2netweb)
ser2netweb-*.cdx.json CycloneDX SBOM of each executable (3 files)
ser2netweb-*.THIRD-PARTY-LICENSES.txt licence texts of the components inside each executable (3 files)
SHA256SUMS SHA-256 checksums of all of the above

The .rpm files attached here are not signed themselves; the copies in the package repository
are. SHA256SUMS and the build provenance cover both.

PyPI: pipx install ser2netweb, or pipx install "ser2netweb[all]" for MQTT, LDAP, OIDC and in-process certificates (pypi.org/project/ser2netweb, uploaded by trusted publishing with PyPI's attestations).

Docker image: ghcr.io/haliskilic/ser2netweb:3.1.0 (also 3.1 and latest), and its copy docker.io/haliskilic/ser2netweb, for linux/amd64, linux/arm64 and linux/arm/v7.

Also through: the signed APT/DNF/zypper repositories at https://haliskilic.github.io/ser2netweb/, Homebrew (brew install haliskilic/tap/ser2netweb), Scoop (scoop bucket add haliskilic https://github.com/haliskilic/scoop-bucket), winget, Chocolatey and the snap (sudo snap install ser2netweb).

Verify a download: sha256sum -c SHA256SUMS --ignore-missing, and the build provenance with gh attestation verify ser2netweb-linux-x64 -R haliskilic/ser2netweb (the image: gh attestation verify oci://ghcr.io/haliskilic/ser2netweb:3.1.0 -R haliskilic/ser2netweb). The Windows executable is not code-signed.