mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-03-11 17:09:00 +00:00
fix(serve)!: make PlayReady users config consistently a mapping
Ensure playready_config['users'] and API-only config always use a dict, even under --no-key, to avoid type mismatches. Also stop implicitly granting PlayReady access by defaulting per-user 'playready_devices' to all devices; missing 'playready_devices' now defaults to an empty list and logs a warning including the user key. BREAKING CHANGE: users without an explicit 'playready_devices' list no longer get access to all PlayReady devices by default.
This commit is contained in:
@@ -123,7 +123,7 @@ def serve(
|
|||||||
log.info("Starting REST API server (pywidevine/pyplayready CDM disabled)")
|
log.info("Starting REST API server (pywidevine/pyplayready CDM disabled)")
|
||||||
if no_key:
|
if no_key:
|
||||||
app = web.Application(middlewares=[cors_middleware])
|
app = web.Application(middlewares=[cors_middleware])
|
||||||
app["config"] = {"users": []}
|
app["config"] = {"users": {}}
|
||||||
else:
|
else:
|
||||||
app = web.Application(middlewares=[cors_middleware, pywidevine_serve.authentication])
|
app = web.Application(middlewares=[cors_middleware, pywidevine_serve.authentication])
|
||||||
app["config"] = {"users": {api_secret: {"devices": [], "username": "api_user"}}}
|
app["config"] = {"users": {api_secret: {"devices": [], "username": "api_user"}}}
|
||||||
@@ -164,7 +164,12 @@ def serve(
|
|||||||
|
|
||||||
for user_key, user_config in serve_config["users"].items():
|
for user_key, user_config in serve_config["users"].items():
|
||||||
if "playready_devices" not in user_config:
|
if "playready_devices" not in user_config:
|
||||||
user_config["playready_devices"] = prd_device_names
|
# Require explicit PlayReady device access per user (default: no access).
|
||||||
|
user_config["playready_devices"] = []
|
||||||
|
log.warning(
|
||||||
|
f'User "{user_key}" has no "playready_devices" configured; PlayReady access disabled for this user. '
|
||||||
|
f"Available PlayReady devices: {prd_device_names}"
|
||||||
|
)
|
||||||
|
|
||||||
def create_serve_authentication(serve_playready_flag: bool):
|
def create_serve_authentication(serve_playready_flag: bool):
|
||||||
@web.middleware
|
@web.middleware
|
||||||
@@ -212,7 +217,7 @@ def serve(
|
|||||||
for user_key, user_cfg in serve_config["users"].items()
|
for user_key, user_cfg in serve_config["users"].items()
|
||||||
}
|
}
|
||||||
if not no_key
|
if not no_key
|
||||||
else [],
|
else {},
|
||||||
}
|
}
|
||||||
playready_app["config"] = playready_config
|
playready_app["config"] = playready_config
|
||||||
playready_app.on_startup.append(pyplayready_serve._startup)
|
playready_app.on_startup.append(pyplayready_serve._startup)
|
||||||
|
|||||||
Reference in New Issue
Block a user