From f381c2e649cdd02eb84f47b7400beb3aaa460e70 Mon Sep 17 00:00:00 2001 From: kshitija08 Date: Thu, 27 Sep 2018 16:17:37 +0530 Subject: [PATCH] spawners/simplespawner.py --- spawners/simplespawner.py | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spawners/simplespawner.py diff --git a/spawners/simplespawner.py b/spawners/simplespawner.py new file mode 100644 index 00000000..8df323c9 --- /dev/null +++ b/spawners/simplespawner.py @@ -0,0 +1,43 @@ +import os +from traitlets import Unicode + +from jupyterhub.spawner import LocalProcessSpawner + + +class SimpleLocalProcessSpawner(LocalProcessSpawner): + """ + A version of LocalProcessSpawner that doesn't require users to exist on + the system beforehand. + + Note: DO NOT USE THIS FOR PRODUCTION USE CASES! It is very insecure, and + provides absolutely no isolation between different users! + """ + + home_path_template = Unicode( + '/tmp/{userid}', + config=True, + help='Template to expand to set the user home. {userid} and {username} are expanded' + ) + + @property + def home_path(self): + return self.home_path_template.format( + userid=self.user.id, + username=self.user.name + ) + + def make_preexec_fn(self, name): + home = self.home_path + def preexec(): + try: + os.makedirs(home, 0o755, exist_ok=True) + os.chdir(home) + except e: + print(e) + return preexec + + def user_env(self, env): + env['USER'] = self.user.name + env['HOME'] = self.home_path + env['SHELL'] = '/bin/bash' + return env \ No newline at end of file