Skip to content

Commit 700183f

Browse files
committed
support USB in jails
1 parent 32ea7d2 commit 700183f

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

libioc/Config/Jail/BaseConfig.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,19 @@ def _get_host_domainname(self) -> str:
536536
except KeyError:
537537
return "local"
538538

539+
def _get_usb_device(self) -> typing.List[str]:
540+
devices = self.data["usb_device"].split() # type: typing.List[str]
541+
return devices
542+
543+
def _set_usb_device(
544+
self,
545+
value: typing.Union[typing.List[str], str]
546+
) -> None:
547+
if isinstance(value, list):
548+
self.data["usb_device"] = " ".join(value)
549+
else:
550+
self.data["usb_device"] = value
551+
539552
def get_string(self, key: str) -> str:
540553
"""Get the stringified value of a configuration property."""
541554
return self.stringify(self.__getitem__(key))

libioc/Config/Jail/Globals.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
"allow_mount_fdescfs": 0,
6969
"allow_mount_zfs": 0,
7070
"allow_mount_tmpfs": 0,
71+
"allow_usb": 0,
72+
"usb_device": ["ugen*"],
7173
"allow_quotas": 0,
7274
"allow_socket_af": 0,
7375
"allow_vmm": False,

libioc/Jail.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1616,7 +1616,7 @@ def devfs_ruleset(self) -> libioc.DevfsRules.DevfsRuleset:
16161616
if self._dhcp_enabled is True:
16171617
devfs_ruleset.append("add path 'bpf*' unhide")
16181618

1619-
if self._allow_mount_zfs == "1":
1619+
if self._allow_mount_zfs is True:
16201620
devfs_ruleset.append("add path zfs unhide")
16211621

16221622
if self.config["jail_zfs"] is True:
@@ -1643,6 +1643,12 @@ def devfs_ruleset(self) -> libioc.DevfsRules.DevfsRuleset:
16431643
devfs_ruleset.append("add path vmm/* unhide")
16441644
devfs_ruleset.append("add path nmdm* unhide")
16451645

1646+
if self.config["allow_usb"] is True:
1647+
devfs_ruleset.append("add path 'usb/*' unhide")
1648+
devfs_ruleset.append("add path 'usbctl' unhide")
1649+
for usb_device in self.config["usb_device"]:
1650+
devfs_ruleset.append(f"add path '{usb_device}' unhide")
1651+
16461652
# create if the final rule combination does not exist as ruleset
16471653
if devfs_ruleset not in self.host.devfs:
16481654
self.logger.verbose("New devfs ruleset combination")

0 commit comments

Comments
 (0)