In the default situation, teams can submit their solutions either via browsing to the web interface, or by using the command line submit client, which behind the scenes employs the same web interface to actually make the submission. This setup suffices for many environments.
The Dolstra protocol is different in that it uses a submitdaemon
running on the domserver. One advantage is that submissions can be
made before the IP address of the team is known.
This authentication is fortified by
the following process. When a client connects, it does not send the
submission file, but only a reference to a randomised and not publicly
visible file. This file is then copied from server side with the
submit_copy script. This makes it impossible for teams to spoof a
submission for a different team: the server `calls back' the team the
submitter identified himself as and checks for existence of the
advertised file. Because filenames are randomised and invisible
(within the $HOME/.domjudge
directory by default), it is also
impossible for someone to guess another team's filename and submit it
for them.
The figure below is a graphical representation of the flow of a submission. Arrows with filled lines indicate the flow of the submission file, while dot-dash lines indicate flow of metadata about the submission. Each line where no protocol of data transfer is given, are just file system operations. Squares are programs and rounded squares are storage locations.
To have DOMjudge configure the IP upon first submission in this way,
set option STRICTIPCHECK
to 0. In that case, we start out without
IP's (and the web interface will not be accessible), but as soon as a
team connects with the command line submit client to the
submitdaemon, they are authenticated by correctly submitting a
file and the IP is registered and everything works as normal.
The connect can happen during the test session, so during the real contest everything is fully available. This is a secure way of authenticating teams, which requires no passwords or IP configuration, but teams must submit via the command line submit client to the command line daemon before they can access their teampage.
If you want to use the Dolstra submit method (next to / instead of the HTTP functionality) you need to satisfy the following requirements.
The submitdaemon needs to run at the domserver, and receive connections on a configurable TCP port, default 9147.
Team accounts need to be
accessible via SSH on the jury computers (a SSH public key
of the jury account should be installed on all team accounts to
provide key-based access), and a shared filesystem (e.g. NFS)
is needed between the team computers and the domserver.
Alternatively, another means of
providing access from the server can be configured, see below
the file
submit/submit_copy.sh
for more details.
For the command line client you need to have Windows XP and the cygwin-base
package must be (re-)installed from the mirror
http://cygwin.win6.jp/cygwin-ipv6/ for support of the
complete netdb.h
headers (as this is currently not supported
in the standard Cygwin tree yet; the currently beta version 1.7 should
include this).