Merge branch 'master' into master

This commit is contained in:
Ethan Edwards 2020-12-02 18:37:31 -05:00 committed by GitHub
commit 99038d3e6d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 61 additions and 4 deletions

View file

@ -84,11 +84,13 @@ func Execute(res http.ResponseWriter, req *http.Request) {
"lua",
"nasm", "asm",
"nasm64", "asm64",
"nim",
"node", "javascript", "js",
"perl", "pl",
"php",
"python2",
"python3", "python",
"paradoc",
"ruby",
"rust",
"swift",

View file

@ -90,12 +90,18 @@ case "$lang" in
"nasm64" | "asm64")
bin=nasm64
;;
"nim")
bin=nim
;;
"node" | "js" | "javascript")
bin=node
;;
"deno" | "denojs" | "denots")
bin=deno
;;
"paradoc")
bin=paradoc
;;
"perl")
bin=perl
;;

View file

@ -1,6 +1,6 @@
cd /tmp/$2
cp code.code interim.java
name=$(cat interim.java | grep -Eo 'public\s+class\s+([A-Za-z0-9]+)' | sed -n 's/ */ /gp' | cut -d' ' -f3)
name=$(grep -Po "(?<=\n|\A)\s*(public\s+)?(class|interface)\s+\K([^\n\s{]+)" interim.java)
mv interim.java $name.java
timeout -s KILL 10 javac $name.java
runuser runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 java $name"

4
lxc/executors/nim Executable file
View file

@ -0,0 +1,4 @@
cd /tmp/$2
timeout -s KILL 10 nim --hints:off c code.code
runuser runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./code"

2
lxc/executors/paradoc Executable file
View file

@ -0,0 +1,2 @@
cd /tmp/$2
runuser runner$1 -c "cd /tmp/$2 ; timeout -s KILL 3 python3 -m paradoc code.code <<< args.args"

View file

@ -31,6 +31,8 @@ echo 'testing asm 32 bit'
../execute asm test.nasm
echo 'testing asm 64 bit'
../execute asm64 test64.nasm
echo 'testing nim'
../execute nim test.nim
echo 'testing php'
../execute php test.php
echo 'testing perl'
@ -51,3 +53,5 @@ echo 'testing python3'
../execute python3 test3.py
echo 'testing common lisp'
../execute sbcl --script test.cl
echo 'testing paradoc'
../execute python3 test_paradoc.py

1
lxc/tests/test.nim Normal file
View file

@ -0,0 +1 @@
echo("good")

View file

@ -0,0 +1,5 @@
try:
import paradoc
print('good')
except:
pass

View file

@ -9,6 +9,10 @@ echo 'bash'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "bash --version"
echo '---'
echo 'brainfuck'
echo '1.0.0'
echo '---'
echo 'c'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "gcc -v"
echo '---'
@ -65,6 +69,10 @@ echo 'nasm'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "nasm -version"
echo '---'
echo 'nim'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "nim -v | head -n1"
echo '---'
echo 'node'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "node --version"
echo '---'
@ -85,6 +93,10 @@ echo 'python3'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "python3 -V"
echo '---'
echo 'paradoc'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "python3 -m paradoc --version"
echo '---'
echo 'ruby'
lxc-attach --clear-env -n piston -- /bin/bash -l -c "ruby --version"
echo '---'

View file

@ -85,6 +85,14 @@ ln -s python python3.8
echo 'export PATH=$PATH:/opt/python3/Python-3.8.2' >> /opt/.profile
source /opt/.profile
# install paradoc
# this is not a binary, it is a python module
# therefore it cannot be run directly as it requires python3 to be installed
cd /opt && mkdir paradoc && cd paradoc
git clone https://github.com/betaveros/paradoc.git
echo 'export PYTHONPATH=$PYTHONPATH:/opt/paradoc/paradoc' >> /opt/.profile
source /opt/.profile
# install node.js
# final binary: /opt/nodejs/node-v12.16.1-linux-x64/bin/node
# get version: /opt/nodejs/node-v12.16.1-linux-x64/bin/node -v
@ -179,9 +187,9 @@ source /opt/.profile
# final binary: /opt/kotlinc/bin/kotlinc
# get version: /opt/kotlinc/bin/kotlinc -version
cd /opt
wget https://github.com/JetBrains/kotlin/releases/download/v1.3.72/kotlin-compiler-1.3.72.zip
unzip kotlin-compiler-1.3.72.zip
rm kotlin-compiler-1.3.72.zip
wget https://github.com/JetBrains/kotlin/releases/download/v1.4.10/kotlin-compiler-1.4.10.zip
unzip kotlin-compiler-1.4.10.zip
rm kotlin-compiler-1.4.10.zip
echo 'export PATH=$PATH:/opt/kotlinc/bin' >> /opt/.profile
source /opt/.profile
@ -246,6 +254,18 @@ source /opt/.profile
# important notice: use sbcl --script to run a clisp file, sbcl enters the REPL
apt install -y sbcl
# install nim
# final binary: /opt/nim/bin/nim
# get version: /opt/nim/bin/nim -v
cd /opt && mkdir nim && cd nim
wget https://nim-lang.org/download/nim-1.4.0-linux_x64.tar.xz
unxz nim-1.4.0-linux_x64.tar.xz
tar -xf nim-1.4.0-linux_x64.tar
cd nim-1.4.0
./install.sh /opt
echo 'export PATH=$PATH:/opt/nim/bin' >> /opt/.profile
source /opt/.profile
# create runnable users and apply limits
for i in {1..150}; do
useradd -M runner$i
@ -363,6 +383,7 @@ If an invalid language is supplied, a typical response will look like the follow
- php
- python2
- python3
- paradoc
- ruby
- rust
- swift