Skip to content

Releases: scottlamb/moonfire-nvr

v0.7.7

03 Aug 23:16
Compare
Choose a tag to compare
  • fix #289: crash on
    pressing the Add button in the sample file directory dialog
  • log to stderr again, fixing a regression with the tracing change in 0.7.6.

v0.7.6

08 Jul 17:43
Compare
Choose a tag to compare
  • new log formats using tracing. This will allow richer context information.
  • bump minimum Rust version to 1.70.
  • expect camelCase in moonfire-nvr.toml file, for consistency with the JSON
    API. You'll need to adjust your config file when upgrading.
  • use Retina 0.4.5.
    • This version is newly compatible with rtsp-simple-server v0.19.3 and some
      TP-Link cameras. Fixes #238.
    • Fixes problems connecting to cameras that use RTP extensions.
    • Fixes problems with Longse cameras
      scottlamb/retina#77.
  • expanded API interface for examining and updating users:
    • admin_users permission for operating on arbitrary users.
    • GET /users/ endpoint to list users
    • POST /users/ endpoint to add a user
    • GET /users/<id> endpoint to examine a user in detail
    • expanded PATCH /users/<id> endpoint, including password and
      permissions.
    • DELETE /users/<id> endpoint to delete a user
  • improved API documentation in ref/api.md.
  • first draft of a web UI for user administration. Rough edges expected!
  • moonfire-nvr login --permissions now accepts the JSON format documented
    in ref/api.md, not an undocumented plaintext protobuf format.
  • fix #257:
    Live View: select None Not Possible After Selecting a Camera.
  • get rid of live view's dreaded ws close: 1006 error altogether. The live
    view WebSocket protocol now conveys errors in a way that allows the
    Javscript UI to see them.
  • fix #282:
    sessions' last use information wasn't getting persisted.
  • improvements to moonfire-nvr config,
    thanks to @sky1e.

v0.7.5

09 May 20:27
Compare
Choose a tag to compare
  • #219: fix
    live stream failing with ws close: 1006 on URLs with port numbers.
  • build Docker images with link-time optimization.
  • bump minimum Rust version to 1.60.
  • #224: upgrade to
    Retina 0.3.10, improving compatibility with OMNY M5S2A 2812 cameras that
    send invalid rtptime values.

v0.7.4

13 Apr 22:34
Compare
Choose a tag to compare
  • upgrade to Retina 0.3.9, improving camera interop and diagnostics. Fixes #213, #209.
  • #217: no longer drop the connection to the camera when it changes video parameters, instead continuing the run seamlessly.
  • #206: fix teardown Sender shouldn't be dropped: RecvError(()) errors on shutdown.

0.7.3

13 Apr 22:06
Compare
Choose a tag to compare
  • security fix: check the Origin header on live stream WebSocket requests
    to avoid cross-site WebSocket hijacking (CSWSH).
  • RTSP connections always use the Retina library rather than FFmpeg.

0.7.2

13 Apr 22:06
Compare
Choose a tag to compare
  • introduce a configuration file /etc/moonfire-nvr.toml; you will need
    to create one when upgrading.
  • bump minimum Rust version from 1.53 to 1.56.
  • fix #187:
    incompatibility with cameras that (incorrectly) omit the SDP origin line.
  • fix #182: error
    on upgrade from schema 6 to schema 7 when a camera's onvif_host is empty.
  • API bugfix: in the GET /api/ response, include ext streams if
    configured.
  • fix #184:
    Moonfire NVR would stop recording on a camera that hit the live555 stale
    file descriptor bug, rather than waiting for the stale session to expire.
  • progress on #70:
    shrink the binary from 154 MiB to 70 MiB by reducing debugging information.

0.7.1

13 Apr 22:06
Compare
Choose a tag to compare
  • bugfix: editing a camera from nvr config would erroneously clear the
    sample file directory associated with its streams.
  • RTSP transport (TCP or UDP) can be set per-stream from nvr config.

0.7.0

13 Apr 22:06
Compare
Choose a tag to compare
  • schema version 7
  • Changes to the API:
    • Added fields to the GET /api/ response:
      • serverVersion
    • Altered fields in the GET /api/ response:
      • session was moved into a new user object, to support providing
        information about the user when authenticating via Unix uid rather
        than session cookie (a planned feature). session.username is now
        user.name; session.csrf is now user.session.csrf. user.id
        and user.preferences have been added.
      • signals.source is now signals.uuid. The UUID is now expected to
        be unique, where before only (source, type) was guaranteed to be
        unique.
      • camera.config has been altered and extended. onvifHost has
        become onvifBaseUrl to allow selecting between http and https.
      • camera.description was moved to camera.config.description.
        (This might have been an oversight; now it's only possible to see
        the description with the read_camera_configs permission. This
        field can be re-introduced if desired.)
      • stream.config has been altered and extended. rtspUrl has become
        url to (in the future) represent a URL for other streaming
        protocols. The record boolean was replaced with mode, which
        currently may be either absent or the string record.
    • Added POST /api/users/<id> for altering a user's UI preferences.

0.6.7

13 Apr 22:06
Compare
Choose a tag to compare
  • trim whitespace when detecting time zone by reading /etc/timezone.
  • (Retina 0.3.2) better TEARDOWN handling with the default
    --rtsp-library=retina (see
    scottlamb/retina#34).
    This means faster recovery after an error when using UDP or when the
    camera's firmware is based on an old live555 release.
  • (Retina 0.3.3) better authentication support with the default
    --rtsp-library=retina (see
    scottlamb/retina#25).

0.6.6

13 Apr 22:06
Compare
Choose a tag to compare
  • fix #146: "init
    segment fetch error" when browsers have cached data from v0.6.4 and
    before.
  • fix #147: confusing
    nvr init failures when using very old versions of SQLite.
  • fix #157: broken
    live view when using multi-view and selecting the first listed camera
    then selecting another camera for the upper left grid square.
  • support --rtsp-transport=udp, which may work better with cameras that
    use old versions of the live555 library, including many Reolink models.
  • send RTSP TEARDOWN requests on UDP or with old live555 versions; wait out
    stale sessions before reconnecting to the same camera. This may improve
    reliability with old live555 versions when using TCP also.
  • improve compatibility with cameras that send non-compliant SDP, including
    models from Geovision and Anpviz.
  • fix #117: honor
    shutdown requests when out of disk space, instead of retrying forever.
  • shut down immediately on a second SIGINT or SIGTERM. The normal
    "graceful" shutdown will still be slow in some cases, eg when waiting for a
    RTSP UDP session to time out after a TEARDOWN failure. This allows the
    impatient to get fast results with ctrl-C when running interactively, rather
    than having to use SIGKILL from another terminal.