Skip to content

Commit 6c3f3e3

Browse files
committed
support USB in jails
1 parent 078ae42 commit 6c3f3e3

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

iocage/lib/Config/Jail/BaseConfig.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,18 @@ def _set_login_flags(self, value, **kwargs):
380380
logger=self.logger
381381
)
382382

383+
def _get_usb_device(self) -> typing.List[str]:
384+
return self.data["usb_device"].split()
385+
386+
def _set_usb_device(
387+
self,
388+
value: typing.Union[typing.List[str], str]
389+
) -> None:
390+
if isinstance(value, list):
391+
self.data["usb_device"] = " ".join(value)
392+
else:
393+
self.data["usb_device"] = value
394+
383395
def _get_host_hostuuid(self):
384396
try:
385397
return self.data["host_hostuuid"]

iocage/lib/Config/Jail/Defaults.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ class JailConfigDefaults(iocage.lib.Config.Jail.BaseConfig.BaseConfig):
9191
"allow_mount_procfs": 0,
9292
"allow_mount_zfs": 0,
9393
"allow_mount_tmpfs": 0,
94+
"allow_usb": 0,
95+
"usb_device": ["ugen*"],
9496
"allow_quotas": 0,
9597
"allow_socket_af": 0,
9698
"sysvmsg": "new",

iocage/lib/Jail.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,9 +673,15 @@ def devfs_ruleset(self) -> iocage.lib.DevfsRules.DevfsRuleset:
673673
devfs_ruleset = iocage.lib.DevfsRules.DevfsRuleset()
674674
devfs_ruleset.clone(configured_devfs_ruleset)
675675

676-
if self._dhcp_enabled:
676+
if self._dhcp_enabled is True:
677677
devfs_ruleset.append("add path 'bpf*' unhide")
678678

679+
if self.config["allow_usb"] is True:
680+
devfs_ruleset.append("add path 'usb/*' unhide")
681+
devfs_ruleset.append("add path 'usbctl' unhide")
682+
for usb_device in self.config["usb_device"]:
683+
devfs_ruleset.append(f"add path '{usb_device}' unhide")
684+
679685
# create if the final rule combination does not exist as ruleset
680686
if devfs_ruleset not in self.host.devfs:
681687
self.logger.verbose("New devfs ruleset combination")

0 commit comments

Comments
 (0)