mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-29 23:29:01 +03:00
Fix build (#19634)
* Don't put special constraints * Undo joserfc install * Fix joserfc * Formatting
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import logging
|
||||
import re
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
from joserfc.jwk import OctKey
|
||||
from playhouse.sqliteq import SqliteQueueDatabase
|
||||
from slowapi import _rate_limit_exceeded_handler
|
||||
from slowapi.errors import RateLimitExceeded
|
||||
@@ -130,6 +132,26 @@ def create_fastapi_app(
|
||||
app.stats_emitter = stats_emitter
|
||||
app.event_metadata_updater = event_metadata_updater
|
||||
app.config_publisher = config_publisher
|
||||
app.jwt_token = get_jwt_secret() if frigate_config.auth.enabled else None
|
||||
|
||||
if frigate_config.auth.enabled:
|
||||
secret = get_jwt_secret()
|
||||
key_bytes = None
|
||||
if isinstance(secret, str):
|
||||
# If the secret looks like hex (e.g., generated by secrets.token_hex), use raw bytes
|
||||
if len(secret) % 2 == 0 and re.fullmatch(r"[0-9a-fA-F]+", secret or ""):
|
||||
try:
|
||||
key_bytes = bytes.fromhex(secret)
|
||||
except ValueError:
|
||||
key_bytes = secret.encode("utf-8")
|
||||
else:
|
||||
key_bytes = secret.encode("utf-8")
|
||||
elif isinstance(secret, (bytes, bytearray)):
|
||||
key_bytes = bytes(secret)
|
||||
else:
|
||||
key_bytes = str(secret).encode("utf-8")
|
||||
|
||||
app.jwt_token = OctKey.import_key(key_bytes)
|
||||
else:
|
||||
app.jwt_token = None
|
||||
|
||||
return app
|
||||
|
||||
Reference in New Issue
Block a user