Header file contents can be added to provide dis-
tinctive api to the students, as well as hidden files
needed only for the compiler while building and test-
ing the program from the source code handed in.
When setting the specification of the exercise, the
teacher may add student specific parameters automat-
ically generated by the system at runtime. This can
be done by explicitly the teacher: the body of the pa-
rameter generating script can be entered manually for
each exercise, so as the students receive the exercise
specification, the parameters are generated by the in-
put function body as a static part of the specification,
so the student acquire these parameters transparently.
Any number of test cases can be assigned to the exer-
cise.
At the point when the execution system success-
fully compiles the solution source code, it runs a se-
ries of tests defined by the creator by input and output.
Prescripts and postscript can be also defined to each
test case, enabling the configuration of the execution
system to react and function in a unique way, while
processing the solutions and evaluating each test case
for each exercise. The creator has full access to man-
age and modify the settings of the exercise while it
is not associated and distributed to the student users.
Other teacher users have read privilege to exercises
of other creators, and can easily create new ones with
using similar settings or header files.
When an exercise is successfully entered into the
system, every teacher user may assign it indepen-
dently from the identity of the creator of the exercise
to single student users. Exercises can also be assigned
to groups of students (even if it is already assigned to
individual student users), but with the limitation that
the teacher user may only assign it to groups created
by their own. The procedure of removing associations
is similar.
As a student user authenticates on the student web
interface, the assigned and completed exercises are
prompted. In this page a student may hand in so-
lutions to the associated exercises - the number of
possible tries, the content length and the maximum
number of uploadable file content are all defined by
teacher users -, and is also able to view the results of
each previously handed in solution. When a solution
is submitted, it is passed to the interoperability inter-
face, from where the execution service takes all the
parameters of the actual exercise, and the contents of
the solution. After the evaluation is completed, and
result data is written back into the database, the status
of the solution changes to evaluated, thus enabling the
web page for the student to view the results of the pro-
vided solution and maybe create a newer one based on
the evaluated solution.
3 SECURITY CONSIDERATIONS
During the development of the framework the two
most important principles used were to keep the sys-
tem simple, stupid and use only well proven, out
of the box technologies. Since no system can pro-
vide 100 percent protection against all local exploits,
one of the best choices is to keep the used technolo-
gies as updated as possible and use the strongest en-
forced privilege and service separation and prevent
the spreading of the compromisation.(Bishop, 2003)
In an order to secure the infrastructure we run each
functionality from 1-4 on separate nodes, and deploy
firewalls between them.(Rash, 2007) These firewalls
should allow only the absolutely necessary network
communication between the services. The physically
separated part of the infrastructure are the execution
instances, the most easily breachable part of the sys-
tem. They are only connected to the workload man-
ager, which drops every incoming network packets
and only allows the SSH client of the transportation
service to reach the executor instances. This makes it
impossible for the executor instance to reach the rest
of the infrastructure. Even if the execution system is
compromised, the rest of the system stays protected
from internal attacks.
The workload manager runs the global scheduler
as a non root user, which on one hand writes to the
execution system through SSH and to the interoper-
ability interface through PHP and MySQL. It accepts
incoming connections only from the user interface
while anything else is dropped. It is difficult to by-
pass this node as the rest of the system is connected
only to this and there is no direct transfer of any net-
work traffic.
The hardest part is the protection of the execu-
tor system. This not only includes the privilege pro-
tection, but the ensuring that the running test do not
jeopardize the system, by creating dead locks, starva-
tion or high load, which renders the system unusable.
These problems are further explained in the (Daniel
J. Barrett, 2003) and (Bishop, 2003) books.
The privilege protection is achieved by the tech-
nologies explained in the limitation enumeration, but
the rest has to be achieved by the created architecture.
The too extensive I/O usage limiting is achieved by
using a read only scratch box and a temporary 2 MB
size tmpfs created in the memory acting as the home
of the pool user. This creates a maximal disk quota
and converts disk usage to memory access, which is
indirectly the already limited CPU usage.
The pool user is prevented from network usage by
GRE security. This is required to protect the network
from flooding. (Simson Garfinkel, 2003; Vacca, 2007)
CSEDU 2009 - International Conference on Computer Supported Education
252