From 4ae15a14ac689f710eb6a4f8d9951356828410a2 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis <george.kiagiadakis@collabora.com> Date: Mon, 15 Feb 2021 19:18:07 +0200 Subject: [PATCH] monitors: sanitize node names to match media-session's behavior --- src/scripts/monitors/monitor-alsa.lua | 7 ++++++- src/scripts/monitors/monitor-bluez5.lua | 4 +++- src/scripts/monitors/monitor-v4l2.lua | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/scripts/monitors/monitor-alsa.lua b/src/scripts/monitors/monitor-alsa.lua index 9153b6f9..4ab7f558 100644 --- a/src/scripts/monitors/monitor-alsa.lua +++ b/src/scripts/monitors/monitor-alsa.lua @@ -114,6 +114,9 @@ function createNode(parent, id, type, factory, properties) .. "." .. profile + -- sanitize name + name = name:gsub("([^%w_%-%.])", "_") + properties["node.name"] = name -- deduplicate nodes with the same name @@ -127,10 +130,12 @@ function createNode(parent, id, type, factory, properties) end -- and a nick - properties["node.nick"] = properties["node.nick"] + local nick = properties["node.nick"] or dev_props["device.nick"] or dev_props["api.alsa.card.name"] or dev_props["alsa.card_name"] + -- also sanitize nick, but allow all characters except : + properties["node.nick"] = nick:gsub("(:)", "_") -- ensure the node has a description if not properties["node.description"] then diff --git a/src/scripts/monitors/monitor-bluez5.lua b/src/scripts/monitors/monitor-bluez5.lua index 2a57899c..0f08ccdd 100644 --- a/src/scripts/monitors/monitor-bluez5.lua +++ b/src/scripts/monitors/monitor-bluez5.lua @@ -56,11 +56,13 @@ function createNode(parent, id, type, factory, properties) or "bluetooth-device" -- set the node name - properties["node.name"] = + local name = ((factory:find("sink") and "bluez_output") or (factory:find("source") and "bluez_input" or factory)) .. "." .. (properties["api.bluez5.address"] or dev_props["device.name"]) .. "." .. (properties["api.bluez5.profile"] or "unknown") + -- sanitize name + properties["node.name"] = name:gsub("([^%w_%-%.])", "_") -- set priority if not properties["priority.driver"] then diff --git a/src/scripts/monitors/monitor-v4l2.lua b/src/scripts/monitors/monitor-v4l2.lua index 85401671..cfc4d230 100644 --- a/src/scripts/monitors/monitor-v4l2.lua +++ b/src/scripts/monitors/monitor-v4l2.lua @@ -68,6 +68,9 @@ function createNode(parent, id, type, factory, properties) dev_props["device.alias"] or "v4l2-device") + -- sanitize name + name = name:gsub("([^%w_%-%.])", "_") + properties["node.name"] = name -- deduplicate nodes with the same name -- GitLab