Support special characters in passwords, redacted logs & debug config (#4057)

* Consts for regex

* Add regex for camera username and password

* Redact user:pass from ffmpeg logs

* Redact ffmpeg commands

* Move common function to util

* Add tests

* Formatting

* Remove unused imports

* Fix test

* Add port to test

* Support special characters in passwords

* Add tests for special character handling

* Remove docs about not supporting special characters
This commit is contained in:
Nicolas Mowen
2022-11-02 06:00:54 -06:00
committed by GitHub
parent 11624d4759
commit 1bc9efd529
7 changed files with 83 additions and 20 deletions

View File

@@ -0,0 +1,33 @@
"""Test camera user and password cleanup."""
import unittest
from frigate.util import clean_camera_user_pass, escape_special_characters
class TestUserPassCleanup(unittest.TestCase):
def setUp(self) -> None:
self.rtsp_with_pass = "rtsp://user:password@192.168.0.2:554/live"
self.rtsp_with_special_pass = "rtsp://user:password#$@@192.168.0.2:554/live"
self.rtsp_no_pass = "rtsp://192.168.0.3:554/live"
def test_cleanup(self):
"""Test that user / pass are cleaned up."""
clean = clean_camera_user_pass(self.rtsp_with_pass)
assert clean != self.rtsp_with_pass
assert "user:password" not in clean
def test_no_cleanup(self):
"""Test that nothing changes when no user / pass are defined."""
clean = clean_camera_user_pass(self.rtsp_no_pass)
assert clean == self.rtsp_no_pass
def test_special_char_password(self):
"""Test that special characters in pw are escaped, but not others."""
escaped = escape_special_characters(self.rtsp_with_special_pass)
assert escaped == "rtsp://user:password%23%24%40@192.168.0.2:554/live"
def test_no_special_char_password(self):
"""Test that no change is made to path with no special characters."""
escaped = escape_special_characters(self.rtsp_with_pass)
assert escaped == self.rtsp_with_pass