Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 12:21
· 24 commits to main since this release
2fe078e

Cynitor 1.4.0

Upgrade from 1.3.0:

  • Bound to the network without a token, the server no longer starts. With --bind 0.0.0.0 (or any address that is not loopback), set CYNITOR_AUTH_TOKEN. To run open on purpose, add --insecure-no-auth. The packaged default binds to 127.0.0.1 and is not affected.
  • The API opens only the CAN adapters Cynitor knows, and slcan only on a serial port. To open any other python-can interface by name, start the server with --allow-any-interface.
  • Pages from other sites can no longer use the API. Of this machine's own pages, only the development server on port 5500 can; add others with CYNITOR_DEV_ORIGINS.
  • HTTP requests are no longer logged. Add --access-log to log them.
  • The .deb service runs as its own unprivileged user in a sandbox, not as root. Its data stays in /var/lib/cynitor. slcan adapters need no change: the service is in the dialout group.

New

  • Listen only (in the connect form, or --listen-only). Cynitor sends nothing on the bus: no node-ID, no heartbeat, no requests. You see the traffic, but no node names or registers.
  • --reconnect: a server started with --can reattaches its bus by itself after the bus goes away. Without it, /api/health now answers 503 while that bus is down.
  • Update check. The version under the sidebar links to a newer release when there is one. --no-update-check turns it off.
  • On the bus Cynitor is org.opencyphal.cynitor, with its own version. Before, it was named after pycyphal's example app.
  • Each release file is signed as built by this repository's release workflow. Check a download with gh attestation verify <file> --repo OpenCyphal-Garage/cynitor. Each file also has a .sha256, the third-party licences it bundles, and the list of package versions inside.

Fixed

  • Frames lost on a busy bus are counted. Past what Cynitor can decode, frames the kernel drops are counted as dropped and warned of. Before, the dashboard said none were lost. A node flooding the bus is also no longer reported offline because its heartbeats were among the drops.
  • Register writes:
    • A number is sent in the register's own type, and a value the node does not take answers 409, saying what the register holds. Before, a number of another type went out unconverted and the API said ok.
    • Writing a register the node does not have says so. Before, it called it a type mismatch.
    • Register writes and firmware updates now appear in the node's History.
    • A node that answers the register list only partly fails in seconds, with the reason.
  • Service calls wait the full 5 s. A node that does not answer gives 504, and one that went offline 409.
  • The live view follows a reconnect. A dashboard left open across a disconnect and connect kept showing nothing.
  • Times are shown in your own timezone. Before, a browser in another timezone than the server read "last seen" hours o
  • A node's card shows its own messages only. On a subject several nodes publish, it showed another node's until its ow
  • A full disk:
    • A database that cannot be written is shown in the dashboard and its losses counted. Before, it logged 55 tracebacks a
    • A raw log stops alone, without ending the session.
    • A raw log now stops at 4 GiB, or with 512 MiB left on the disk.
  • Bus load on CAN FD reads "unknown" where it cannot be measured. Before, a busy CAN FD bus read 0 %.
  • Port lists and registers: service masks show the IDs they set, bit registers read true and false, diagnostics show their severity name, and confirmations name the device.
  • Demo devices and test nodes no longer leave an offline device behind after each connect or deletion.
  • Anonymous heartbeats are ignored. Before, each one logged an error with a traceback.
  • Security:
    • The auth token is masked in the log and compared in constant time.
    • The dashboard cannot be framed by another site.
    • Responses no longer name the server's versions or file paths.
    • Streams, texts and uploads are capped.
  • Running it: a server that cannot start exits with status 1. One started from a shell outlives that shell. The .deb tce and stops it on removal.

Download

  • Debian, Ubuntu: cynitor-server_1.4.0_amd64.deb (sudo dpkg -i it, then run cynitor-server)
  • Other Linux: cynitor-server-1.4.0-x86_64.AppImage, or the bare binary cynitor-server-1.4.0-linux-x86_64
  • Windows: cynitor-server-1.4.0-windows-x86_64.exe