mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-01-22 20:18:30 +03:00
fix double encoding of passwords in camera wizard
This commit is contained in:
parent
4b034644d2
commit
66bbe62ffb
@ -848,9 +848,10 @@ async def onvif_probe(
|
|||||||
try:
|
try:
|
||||||
if isinstance(uri, str) and uri.startswith("rtsp://"):
|
if isinstance(uri, str) and uri.startswith("rtsp://"):
|
||||||
if username and password and "@" not in uri:
|
if username and password and "@" not in uri:
|
||||||
# Inject URL-encoded credentials and add only the
|
# Inject raw credentials and add only the
|
||||||
# authenticated version.
|
# authenticated version. The credentials will be encoded
|
||||||
cred = f"{quote_plus(username)}:{quote_plus(password)}@"
|
# later by ffprobe_stream or the config system.
|
||||||
|
cred = f"{username}:{password}@"
|
||||||
injected = uri.replace(
|
injected = uri.replace(
|
||||||
"rtsp://", f"rtsp://{cred}", 1
|
"rtsp://", f"rtsp://{cred}", 1
|
||||||
)
|
)
|
||||||
@ -903,9 +904,9 @@ async def onvif_probe(
|
|||||||
"/cam/realmonitor?channel=1&subtype=0",
|
"/cam/realmonitor?channel=1&subtype=0",
|
||||||
"/11",
|
"/11",
|
||||||
]
|
]
|
||||||
# Use URL-encoded credentials for pattern fallback URIs when provided
|
# Use raw credentials for pattern fallback URIs when provided
|
||||||
auth_str = (
|
auth_str = (
|
||||||
f"{quote_plus(username)}:{quote_plus(password)}@"
|
f"{username}:{password}@"
|
||||||
if username and password
|
if username and password
|
||||||
else ""
|
else ""
|
||||||
)
|
)
|
||||||
@ -930,7 +931,7 @@ async def onvif_probe(
|
|||||||
and uri.startswith("rtsp://")
|
and uri.startswith("rtsp://")
|
||||||
and "@" not in uri
|
and "@" not in uri
|
||||||
):
|
):
|
||||||
cred = f"{quote_plus(username)}:{quote_plus(password)}@"
|
cred = f"{username}:{password}@"
|
||||||
cred_uri = uri.replace("rtsp://", f"rtsp://{cred}", 1)
|
cred_uri = uri.replace("rtsp://", f"rtsp://{cred}", 1)
|
||||||
if cred_uri not in to_test:
|
if cred_uri not in to_test:
|
||||||
to_test.append(cred_uri)
|
to_test.append(cred_uri)
|
||||||
|
|||||||
@ -81,7 +81,8 @@ export async function detectReolinkCamera(
|
|||||||
export function maskUri(uri: string): string {
|
export function maskUri(uri: string): string {
|
||||||
try {
|
try {
|
||||||
// Handle RTSP URLs with user:pass@host format
|
// Handle RTSP URLs with user:pass@host format
|
||||||
const rtspMatch = uri.match(/rtsp:\/\/([^:]+):([^@]+)@(.+)/);
|
// Use greedy match for password to handle passwords with @
|
||||||
|
const rtspMatch = uri.match(/rtsp:\/\/([^:]+):(.+)@(.+)/);
|
||||||
if (rtspMatch) {
|
if (rtspMatch) {
|
||||||
return `rtsp://${rtspMatch[1]}:${"*".repeat(4)}@${rtspMatch[3]}`;
|
return `rtsp://${rtspMatch[1]}:${"*".repeat(4)}@${rtspMatch[3]}`;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user