dgreif / ring

Unofficial packages for Ring Doorbells, Cameras, Alarm System, and Smart Lighting
MIT License
1.23k stars 162 forks source link

Blocked Snapshots showing when camera is disabled #1327

Open a1980h opened 1 year ago

a1980h commented 1 year ago

Is there an existing issue for this?

Describe The Bug

Via my Ring app I have my camera disabled when it is in Home mode, but I can circumvent this by going into the home app on my phone and clicking the camera that says Snapshots Blocked. It will automatically start to show me the camera even though it is supposed to be blocked.

To Reproduce

Set the ring camera to block snapshots when home mode is selected. Then via Apple Homekit on the home app you can activate the camera that is supposed to be blocked.

Expected behavior

Any camera that is disabled should not be visible via the apple homekit app.

Relevant log output

No response

Screenshots

No response

Homebridge Ring Config

"platform": "Ring"

Additional context

No response

OS

Rasbian

Node.js Version

v18.13.0

NPM Version

v8.19.3

Homebridge/HOOBs Version

v1.6.0

Homebridge Ring Plugin Version

v12.0.1

Operating System

Rasbian, iOS

tsightler commented 1 year ago

This is a known issue with the new streaming API that Ring is now using and seems to be by design, basically, when you "disable" a camera it just the Ring app that enforces this, nothing is actually disabled. It's almost a pretend feature at this point while with previous versions it was blocked at the API level.

I'll leave it up to @dgreif to determine if he wants to implement this in homebridge-ring or not. The code would basically have to check if it was "disabled" and block streaming, since it's just an artificial limitation now, but there are multiple ways such devices can be disabled so I'm a little concerned it could get complicated to reproduce the exact behavior of the Ring app.

a1980h commented 1 year ago

Thanks the quick reply. Seems foolish that Ring isn't blocking this at the API level. I personally view this a security flaw.

tsightler commented 1 year ago

Dug into this a little bit more and I see that Ring has made some changes to modes so that you can now disable both motion detection and live view separately for each camera based on the given mode. However, even disabling live view for a camera does not disable it at the API level, only at the app level. I was even able to get a live view to run in the Ring app on a second device that was using cached device state and thus didn't know that the camera live view was disabled.

That being said, the camera does have a settings.live_view_disabled property which is set to true when live view is supposed to be blockec, so probably we should just check that before starting a livestream and log a message or maybe return a dummy stream of a still image saying that live view is disabled. Not sure when I can get to coding that up, but at least it seems possible with not too much difficulty.

AlexDemzz commented 8 months ago

Any updates ?