blob: de751864016db9f4ee98c4ef976f5f9febe8b4c7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/bin/sh
#
# daemon.sh
# Copyright (C) 2011 Hamed Saleh and Mahrud Sayrafi
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
PID=$$
LOCK="/var/run/judge.pid"
echo $PID >$LOCK
echo "Judge daemon started ... pid=$PID" >&2
export CHROOT=`which chroot`
export SU=`which su`
export TIME=`which time`
export TIMEOUT=`which timeout`
export JUDGE='/judge'
export BASE="$JUDGE/base"
export INIT="$BASE/init.sh"
export CORE="$BASE/core.py"
export LOGGER="$BASE/log.sh"
export JAILER="$BASE/jail.sh"
export COMPILER="$BASE/compile.sh"
export LOG_DIR="$JUDGE/log"
export JAIL="$JUDGE/jail"
export SU_SYNTAX="--session-command"
export PROBLEMS_DIR="$JUDGE/problems"
export COMPILER_DIR="/bin/compilers"
export CODE_DIR='/source' # FIXME
export BIN_USER=0
export BIN_GROUP=0
export COMPILE_TIME=10 # FIXME
export RUN_DIR='/home' # FIXME
export RUN_USER='judge' # FIXME
export RUN_GROUP=99
export LOG_DIR="$JUDGE/log"
export LOG_DATE_FORMAT="--rfc-3339=ns"
export TIME_FORMAT='%e %M %x'
export DB_HOST='127.0.0.1'
export DB_USERNAME=''
export DB_PASSWORD=''
export DB_NAME=''
PORT=31415
FIFO="/tmp/fifo$PID"
rm -f /tmp/fifo*
mkfifo $FIFO
trap "{ killall -9 nc init.sh daemon.sh
rm -f $FIFO $LOCK; }" EXIT
while true
do
{
echo .
sh $INIT < $FIFO &
nc -l $PORT > $FIFO
}
done
rm -f $FIFO $LOCK
|