Redact secret zwave values in diagnostics (#90389)
* redact secret zwave values from diagnostics * shhrink * rename
This commit is contained in:
parent
14ffda9758
commit
c51ed4b328
2 changed files with 56 additions and 6 deletions
|
@ -34,16 +34,23 @@ VALUES_TO_REDACT = (
|
|||
)
|
||||
|
||||
|
||||
def redact_value_of_zwave_value(zwave_value: ValueDataType) -> ValueDataType:
|
||||
"""Redact value of a Z-Wave value."""
|
||||
def _redacted_value(zwave_value: ValueDataType) -> ValueDataType:
|
||||
"""Return redacted value of a Z-Wave value."""
|
||||
redacted_value: ValueDataType = deepcopy(zwave_value)
|
||||
redacted_value["value"] = REDACTED
|
||||
return redacted_value
|
||||
|
||||
|
||||
def optionally_redact_value_of_zwave_value(zwave_value: ValueDataType) -> ValueDataType:
|
||||
"""Redact value of a Z-Wave value if it matches criteria to redact."""
|
||||
# If the value has no value, there is nothing to redact
|
||||
if zwave_value.get("value") in (None, ""):
|
||||
return zwave_value
|
||||
if zwave_value.get("metadata", {}).get("secret"):
|
||||
return _redacted_value(zwave_value)
|
||||
for value_to_redact in VALUES_TO_REDACT:
|
||||
if value_matches_matcher(value_to_redact, zwave_value):
|
||||
redacted_value: ValueDataType = deepcopy(zwave_value)
|
||||
redacted_value["value"] = REDACTED
|
||||
return redacted_value
|
||||
return _redacted_value(zwave_value)
|
||||
return zwave_value
|
||||
|
||||
|
||||
|
@ -51,7 +58,8 @@ def redact_node_state(node_state: NodeDataType) -> NodeDataType:
|
|||
"""Redact node state."""
|
||||
redacted_state: NodeDataType = deepcopy(node_state)
|
||||
redacted_state["values"] = [
|
||||
redact_value_of_zwave_value(zwave_value) for zwave_value in node_state["values"]
|
||||
optionally_redact_value_of_zwave_value(zwave_value)
|
||||
for zwave_value in node_state["values"]
|
||||
]
|
||||
return redacted_state
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue