Skip to content

Commit e2c59f9

Browse files
committed
support USB in jails
1 parent f606ab4 commit e2c59f9

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

iocage/lib/Config/Jail/BaseConfig.py

+13
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,19 @@ def _get_host_domainname(self) -> str:
482482
except KeyError:
483483
return "local"
484484

485+
def _get_usb_device(self) -> typing.List[str]:
486+
devices = self.data["usb_device"].split() # type: typing.List[str]
487+
return devices
488+
489+
def _set_usb_device(
490+
self,
491+
value: typing.Union[typing.List[str], str]
492+
) -> None:
493+
if isinstance(value, list):
494+
self.data["usb_device"] = " ".join(value)
495+
else:
496+
self.data["usb_device"] = value
497+
485498
def get_string(self, key: str) -> str:
486499
"""Get the stringified value of a configuration property."""
487500
return self.stringify(self.__getitem__(key))

iocage/lib/Config/Jail/Defaults.py

+2
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ class JailConfigDefaults(iocage.lib.Config.Jail.BaseConfig.BaseConfig):
104104
"allow_mount_fdescfs": 0,
105105
"allow_mount_zfs": 0,
106106
"allow_mount_tmpfs": 0,
107+
"allow_usb": 0,
108+
"usb_device": ["ugen*"],
107109
"allow_quotas": 0,
108110
"allow_socket_af": 0,
109111
"rlimits": None,

iocage/lib/Jail.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1395,9 +1395,15 @@ def devfs_ruleset(self) -> iocage.lib.DevfsRules.DevfsRuleset:
13951395
if self._dhcp_enabled is True:
13961396
devfs_ruleset.append("add path 'bpf*' unhide")
13971397

1398-
if self._allow_mount_zfs == "1":
1398+
if self._allow_mount_zfs is True:
13991399
devfs_ruleset.append("add path zfs unhide")
14001400

1401+
if self.config["allow_usb"] is True:
1402+
devfs_ruleset.append("add path 'usb/*' unhide")
1403+
devfs_ruleset.append("add path 'usbctl' unhide")
1404+
for usb_device in self.config["usb_device"]:
1405+
devfs_ruleset.append(f"add path '{usb_device}' unhide")
1406+
14011407
# create if the final rule combination does not exist as ruleset
14021408
if devfs_ruleset not in self.host.devfs:
14031409
self.logger.verbose("New devfs ruleset combination")

0 commit comments

Comments
 (0)