progressioooooon
This commit is contained in:
parent
a79f5cf687
commit
d2acd917a8
@ -8,6 +8,7 @@ RUN apt-get update && apt-get install -y \
|
||||
nano \
|
||||
netcat \
|
||||
nginx \
|
||||
pandoc \
|
||||
ssh \
|
||||
vim \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
@ -19,10 +20,13 @@ ENV TZ=Europe/Paris
|
||||
|
||||
# SSH server
|
||||
RUN mkdir /run/sshd
|
||||
CMD ["netcat", "-lp", "5000", "-e", "/root/http/http_bash.sh"]
|
||||
CMD ["sh", "-c", "while true ; do netcat -lp 5000 -e /root/http_bash.sh ; done"]
|
||||
|
||||
# Nginx conf
|
||||
COPY ./default /etc/nginx/sites-enabled/default
|
||||
COPY ./nginx-server.conf /etc/nginx/sites-enabled/default
|
||||
|
||||
# Bash HTTP website
|
||||
COPY ./http_bash.sh ./http_bash.sh
|
||||
|
||||
# Entrypoint
|
||||
COPY ./entrypoint.sh ./entrypoint.sh
|
||||
|
@ -6,6 +6,6 @@ services:
|
||||
- ./config:/root/config
|
||||
- ./home_eleves:/home
|
||||
- ./exercices:/root/exercices
|
||||
- ./http:/root/http
|
||||
- ./exercices/html:/var/www/html
|
||||
network_mode: "host"
|
||||
restart: "unless-stopped"
|
||||
|
@ -209,4 +209,4 @@ for i in {1..8} ; do
|
||||
done
|
||||
|
||||
|
||||
pandoc --from=markdown --to=html --output=$html/$eleve.html --table-of-contents --columns=80 $enonces/ex*.txt
|
||||
pandoc --standalone --from=markdown --to=html --output=$html/$eleve.html --table-of-contents --columns=80 $enonces/ex*.txt
|
||||
|
@ -34,15 +34,25 @@ if echo $DIR | grep -v /$ > /dev/null ; then DIR=$DIR/ ; fi
|
||||
|
||||
mkdir -p $DIR$USER ;
|
||||
|
||||
find $root -type d | shuf | head -n $folders > $DIR$USER/folders.seed
|
||||
if [[ ! -s $DIR$USER/folders.seed ]] ; then
|
||||
find $root -type d | shuf | head -n $folders > $DIR$USER/folders.seed
|
||||
echo folders
|
||||
fi
|
||||
|
||||
find $root -type f | shuf | head -n $files > $DIR$USER/files.seed
|
||||
if [[ ! -s $DIR$USER/files.seed ]] ; then
|
||||
find $root -type f | shuf | head -n $files > $DIR$USER/files.seed
|
||||
echo files
|
||||
fi
|
||||
|
||||
cat haddock.list | shuf | head -n $filenames > $DIR$USER/filenames.seed
|
||||
if [[ ! -s $DIR$USER/filenames.seed ]] ; then
|
||||
cat haddock.list | shuf | head -n $filenames > $DIR$USER/filenames.seed
|
||||
echo names
|
||||
fi
|
||||
|
||||
if [[ -s $DIR$USER/ints.seed ]] ; then rm $DIR$USER/ints.seed ; fi
|
||||
|
||||
for i in $(seq 1 $ints) ; do
|
||||
echo $((3 + $RANDOM % 13)) >> $DIR$USER/ints.seed
|
||||
done
|
||||
if [[ ! -s $DIR$USER/ints.seed ]] ; then
|
||||
for i in $(seq 1 $ints) ; do
|
||||
echo $((3 + $RANDOM % 13)) >> $DIR$USER/ints.seed
|
||||
done
|
||||
echo ints
|
||||
fi
|
||||
|
||||
|
@ -1,14 +1,23 @@
|
||||
#!/bin/bash
|
||||
if [ "$#" -ne 1 ] ; then
|
||||
echo -e "usage : $0 <FILE>\n\tGenerate the exercice for a class.\nFILE must be a list containing identifiers (names) and passwords for each student, separated by a '='.\n\tEx:\n\t\tJean-claude-dus=mot_de_passe\n\t\tJean-dus-claude=passe_de_mot\n\t\tClaude-jean-dus=azerty\n\nThis file must be executed from the same folder as the files gen_arbo.sh, gen_seed.sh and gen_enonces.sh.\nFolders will be created in this directory, containing the exercices, their correction and the grades of the students."
|
||||
if [ "$#" -ne 1 && "$#" -ne 2 ] ; then
|
||||
echo -e "usage : $0 <FILE> [USER]\n Generate the exercice for a class.\nFILE must be a list containing identifiers (names) and passwords for each student, separated by a '='.\n Ex:\n Jean-claude-dus=mot_de_passe\n Jean-dus-claude=passe_de_mot\n Claude-jean-dus=azerty\nIf a USER is provided, init will only be run for that user (useful to add a student mid-class, reset a session when something went horribly wrong, or if a student finished early and wants to start over.\n\nThis file must be executed from the same folder as the files gen_arbo.sh, gen_seed.sh and gen_enonces.sh.\nFolders will be created in this directory, containing the exercices, their correction and the grades of the students."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
cat $1
|
||||
|
||||
home=/home
|
||||
|
||||
#Little debug option for one of the devs. If we forgot to remove it before deployment, feel free to erase this line.
|
||||
if [ $USER = karsaell ] ; then home=root ; fi
|
||||
|
||||
names=$(cut -d '=' -f 1 $1)
|
||||
|
||||
if [ "$#" -eq 2 ] ; then
|
||||
names=$(grep $2 $1 | cut -d '=' -f 1)
|
||||
if [ -z $names ] ; then
|
||||
echo "Error : no user named $2 found in $1"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
for name in $names ; do
|
||||
./gen_arbo.sh $home/$name $name
|
||||
|
@ -58,9 +58,23 @@ serve_static_string() {
|
||||
send_response_ok_exit <<< "$1"
|
||||
}
|
||||
|
||||
where () {
|
||||
h="$(dirname "$0")"
|
||||
# If $h isnt absolute, prepend working dir
|
||||
if [[ ! "${h:0:1}" = "/" ]] ; then
|
||||
h="$(pwd)/$(dirname "$0")"
|
||||
fi
|
||||
h="$(realpath "$h")"
|
||||
echo "$h"
|
||||
}
|
||||
|
||||
main () {
|
||||
# Request uri must be a relative path from the exercices/corriges directory
|
||||
[ -x "$REQUEST_URI" ] || [ ! -d "$REQUEST_URI" ] || fail_with 404
|
||||
serve_static_string "$(basename "$REQUEST_URI" | cut -d '.' -f 1) : $(sh "$REQUEST_URI" 2>&1 && echo Ok || echo 'Non validé')"
|
||||
here="$(where)"
|
||||
path="$(realpath "$here/exercices/corriges/$REQUEST_URI")"
|
||||
[[ "$path" = "$here"* ]] || fail_with 404
|
||||
serve_static_string "$(basename "$path" | cut -d '.' -f 1) : $(bash "$path" 2>&1 && echo Ok || echo 'Non validé')"
|
||||
}
|
||||
|
||||
# Request-Line HTTP RFC 2616 $5.1
|
@ -2,7 +2,7 @@ server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
root /root/exercices/html;
|
||||
root /var/www/html;
|
||||
|
||||
index index.html;
|
||||
|
||||
@ -12,10 +12,11 @@ server {
|
||||
# First attempt to serve request as file, then
|
||||
# as directory, then fall back to displaying a 404.
|
||||
try_files $uri $uri/ =404;
|
||||
add_header Content-Type 'text/html;';
|
||||
autoindex on;
|
||||
}
|
||||
|
||||
location ~ /.sh$ {
|
||||
location ~ \.sh$ {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ Chaque élève a un dossier perso dans `/home` dans lequel il peut se connecter
|
||||
## Génération de l’activité
|
||||
```
|
||||
cd exercices
|
||||
./init.sh
|
||||
./init.sh ../config/passwords.txt
|
||||
```
|
||||
|
||||
## Énoncés des exercices
|
||||
@ -29,7 +29,7 @@ Si un·e élève a saccagé ses fichiers, il est possible de les réparer en lan
|
||||
$username est son nom d’utilisateurice.
|
||||
```
|
||||
cd exercices
|
||||
./init.sh $username
|
||||
./init.sh ../config/passwords.txt $username
|
||||
```
|
||||
|
||||
## Ajouter des élèves en cours de route
|
||||
|
Loading…
Reference in New Issue
Block a user