.. | ||
nginx | ||
python_app | ||
sshd | ||
docker-compose.yml | ||
Dockerfile | ||
entrypoint.sh | ||
Readme.md | ||
users.txt |
Python, web and SSH sandbox
For educational purpose only! None of this software is industry grade quality.
This repo got several parts :
A python script
It run with uwsgi, see the dockerfile CMD line. You will need to change it to make it listen on a port.
Used to execute any python script in the module
directory given a certain URL :
- /m1/f1 -> execute the f1 function from modules/m1.py
- /path/to/m2/f2 -> execute the f2 function from modules/path/to/m2.py
SSH server
Allow student to connect via SSH or SFTP to add python files.
create a file named users.txt
, then passwords and accounts will be generated by entrypoint.sh
TODO:
- install and configure the server
- configure chroot
- create the homes in modules directory
A docker image
To bundle everything in one place.
This docker image is not a pretty one, we should split those services into several containers.
But that would be harder to run, so forget that.
Also, as this is poorly tested, the docker system make sure the environment is stable.
Instructions
Install docker
CF the interweb TODO
Build the docker image
docker build . -t pythonsandbox
or pull it
TODO: send image to hub
Run the docker image
docker run -it --network host --name pythonsandbox pythonsandbox
Or if you want to save student work outside of the container:
docker run -it --network host --name pythonsandbox -v "$(pwd)"/app/modules:/usr/share/app/modules pythonsandbox
And with user list file
docker run -it --network host --name pythonsandbox -v "$(pwd)"/app/modules:/usr/share/app/modules -v "$(pwd)"/app/users.txt:/usr/share/app/users.txt pythonsandbox
Roadmap
Example
With the files under ./app/modules
you can get the following URLs :