Submit : A Course Project Submission Utility
Version 1.0.1
- Overview
- Copyright
- Submit Client
- Submit Server
- Installation
- Known Bugs
- History
- Missing Features
1. Overview
Submit is course project submission utility. This document covers
version 1.0.1 of the Submit utility. The latest version of this document
may be found at the URL
http://www.cs.columbia.edu/~akonstan/submit
Submit is written as a client/server application. Students execute the
submission client program that archives their submission directory
(recursively) and sends it to the submission server. The submission
server authenticates the student submission and saves the archive.
Submit is written as a Java application and is available on
all platforms supporting Java JDK 1.1.
2. Copyright
Copyright (C) 1998 Alexander V. Konstantinou (akonstan@acm.org)
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 2
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, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
3. Submit Client
The Submit Client expects two parameters, the name of the project submitted
and the name of the directory containing the project submission.
After archiving the directory contents (recursively), the client program
will interact with the user, obtaining a login name and password for
server authentication. The server may refuse the submission if the
login is incorrect, or the project deadline has expired and no late
submissions are accepted. If a previous submission for the same project
has been made, the client will interact with the user and verify that the
previous submission should be overwritten.
The following optional parameters may also be supplied :
- -host hostname : override default server hostname
- -port portnumber : override default server port number
- -version : print version/copyright information and exit
The submission may fail for various reasons :
- Server is not available or unreachable,
- The username is invalid,
- The password is invalid,
- The project name is invalid,
- The project deadline has expired and no late submissions are allowed,
- The size of the archive is too large,
- Transmission timed out,
- Concurrent submission under the same user name,
- Network failure during transmission.
Here is a sample user interaction (bold indicates user entry). The submit
client may be started by executing the supplied shell script (UNIX), or
invoking the java interpreter :
- submit iras test
- java edu.columbia.cs.akonstan.submit.SubmitClient iras test
./submit iras test
*** Archiving target directory contents recursively ...
adding: test/plan
adding: test/subtest
adding: test/subtest/bashrc
adding: test/subtest/subtest2
adding: test/subtest/subtest2/subtest3
adding: test/subtest/subtest2/plan
adding: test/subtest/subtest2/subtest3/plan
Please authenticate using your class login and password
login: user1
password: test
*** Connecting to the submission server ...
Overwrite previous submission (yes/no) ? yes
*** Sending submission archive ...
SUBMISSION ACCEPTED !
You may resubmit at any time prior to the project deadline. New
submissions overwrite previous ones (no backups of previous ones are kept).
4. Submit Server
The Submit Server expects one parameter, the name of the spool directory
where submissions will be stored. Initially, the server will read the
user password file and the project deadlines file
(using the filenames specified in SubmitConfig.java).
The following optional parameters may also be supplied :
- -port portnumber : override default port number the server will bind to
- -password file : override default password filename
- -projects file : override default projects filename
- -version : print version/copyright information and exit
4.1 Server Configuration
The password file (default name passwd) contains lines with
pairs of usernames and passwords (in clear text). For example :
user1 test
user2 debug
user3 hi!@#
The project file contains lines in the format
PROJECT "DATE" DEADLINE_TYPE where :
- PROJECT is the name of the project (single word; may contain numbers)
- DATE is a quoted string containing the date and time of the
project deadline. The date and time should be listed in the local
short format (see java.text.DateFormat).
For example, in the US (M/d/yy) the date string may
look like : 3/9/98 12:59 pm.
- DTYPE is the type of the submission :
- strict : no submission allowed pass the deadline,
- loose : allows late submissions with a warning,
In the future finer granularity may be added, with specific users
being allowed extentions.
A sample projects file (default name projects) may look like :
vtn "3/9/98 11:59 pm" loose
iras "4/6/98 11:59 pm" strict
4.2 Server Operation
After reading the password and project configuration files, the server will
listen for incoming connections, starting a thread for each new one.
Submissions are stored in the spool directory in the form login.project-name.zip (e.g. user1.iras.zip).
Here is a sample server interaction (bold shows a sample submission).
The submit server may be started by executing the supplied shell script (UNIX),
or invoking the java interpreter :
- server spool
- java edu.columbia.cs.akonstan.submit.SubmitServer spool
$ ./server -port 4444 spool
SubmitServer Version 1.0.1 $Revision: 1.6 $ started at Mon Mar 30 22:52:06 EST 1998
Password file contains 3 user(s)
Project file contains 2 project(s)
SubmitServer listening on port 4444
Connect from sutton.cs.columbia.edu/128.59.22.38 to port 4444 on 30-Mar-98 7:52:14 PM
User akonstan (ident 5762) authenticated as user1
Submission completed for project `iras' by UNI=user1 size 4540 bytes on Mon Mar 30 22:52:22 EST 1998
5. Installation
The Submit Server and Client are written in Java and require the use
of a Java Virtual Machine (JVM) supporting JDK 1.1 and above.
5.1 Download
The latest version (source code + Java bytecode) may be obtained at the URL :
5.2 Configuration
5.3 Execution
6. Known Bugs
- The current release has only been tested on :
- Sun's JDK 1.1.5 on Solaris 2.5.1 and Linux 2.0 (ELF)
- Symantec Visual Cafe on Windows NT
- The zip files generated will not unarchive using WinZip 6.2. It is not
clear what is at fault. WinZip shows all the files with their correct
sizes, but creates zero length files when unarchiving.
7. History
- Changes since version 1.0 (March 31st, 1998):
- Optional command line parameters added to both SubmitClient and
SubmitServer. Re-compilation is no longer required for specifying
the server host and port, as well as, the password and projects files.
- SubmitClient : Work-around for JDK bug in the File.getParent() method.
When users included a trailing File.separator (e.g. "~user/submission/")
in their submission directory parameter, the archive would consider
the parent directory to be "~user/submission". This resulted in the
archive being created relative to the root directory !
The work-around strips the trailing File.separator before passing it to
ZipFileUtils.CreateZipFile (JDK bug number 27268)
- Version 1.0 was the first public release (March 23rd, 1998)
7. Missing Features
- Communication encryption (JDK 1.2 SSL),
- Encryption of password file,
- Graphical front end for the client,
- Redundancy through server replication,
Author : Alexander V. Konstantinou (akonstan@acm.org)