From 1502051f4ac6929fb3d85027b368923134c767ff Mon Sep 17 00:00:00 2001 From: root Date: Mon, 18 Jul 2011 01:16:30 +0430 Subject: Initial commit --- base/daemon.sh | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 base/daemon.sh (limited to 'base/daemon.sh') diff --git a/base/daemon.sh b/base/daemon.sh new file mode 100644 index 0000000..de75186 --- /dev/null +++ b/base/daemon.sh @@ -0,0 +1,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 . + +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 -- cgit