aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--snekbox/nsjail.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/snekbox/nsjail.py b/snekbox/nsjail.py
index 2e38db1..0b6d1c6 100644
--- a/snekbox/nsjail.py
+++ b/snekbox/nsjail.py
@@ -9,7 +9,10 @@ from subprocess import CompletedProcess
from tempfile import NamedTemporaryFile
from typing import Iterable
+from google.protobuf import text_format
+
from snekbox import DEBUG
+from snekbox.config import NsJailConfig
log = logging.getLogger(__name__)
@@ -42,10 +45,20 @@ class NsJail:
def __init__(self, nsjail_binary: str = NSJAIL_PATH, python_binary: str = sys.executable):
self.nsjail_binary = nsjail_binary
self.python_binary = python_binary
+ self.config = self._read_config()
self._create_parent_cgroups()
@staticmethod
+ def _read_config() -> NsJailConfig:
+ """Read the NsJail config at `NSJAIL_CFG` and return a protobuf Message object."""
+ config = NsJailConfig()
+ with open(NSJAIL_CFG, encoding="utf-8") as f:
+ text_format.Parse(f.read(), config)
+
+ return config
+
+ @staticmethod
def _create_parent_cgroups(
pids: Path = CGROUP_PIDS_PARENT,
mem: Path = CGROUP_MEMORY_PARENT