aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcassiopc <cassiopc@gmail.com>2012-08-24 12:54:16 +0000
committercassiopc <cassiopc@gmail.com>2012-08-24 12:54:16 +0000
commit6298fc2278d482c6ac7606a3e6592dd4c0191982 (patch)
tree34faae5b51f7c858ad30af3295a5fced79c86005
parentfc7990c62d85fdebef4a438a1fbc9d69a3710d55 (diff)
downloadboca-6298fc2278d482c6ac7606a3e6592dd4c0191982.tar.gz
boca-6298fc2278d482c6ac7606a3e6592dd4c0191982.zip
updated documentation for version 1.5.0
-rw-r--r--boca-1.5.0/doc/ADMIN.txt281
-rw-r--r--boca-1.5.0/doc/AUTOJUDGING.txt97
-rw-r--r--boca-1.5.0/doc/INSTALL.txt120
-rwxr-xr-xboca-1.5.0/doc/PC2_Team.tab6
-rw-r--r--boca-1.5.0/doc/READMEubuntu.txt10
-rw-r--r--boca-1.5.0/doc/READMEvm.txt68
-rwxr-xr-xboca-1.5.0/doc/Teams.tsv9
-rw-r--r--boca-1.5.0/doc/changelog.txt31
-rw-r--r--boca-1.5.0/doc/import-user.txt23
-rw-r--r--boca-1.5.0/tools/icpc.etc.tgzbin8648 -> 8648 bytes
10 files changed, 408 insertions, 237 deletions
diff --git a/boca-1.5.0/doc/ADMIN.txt b/boca-1.5.0/doc/ADMIN.txt
index ed76a16..7dc83ad 100644
--- a/boca-1.5.0/doc/ADMIN.txt
+++ b/boca-1.5.0/doc/ADMIN.txt
@@ -1,13 +1,18 @@
How to create a contest
-----------------------
-(Last updated: 10/Oct/2011 by cassio@ime.usp.br)
+(Last updated: 24/aug/2012 by cassio@ime.usp.br)
-1) Log in as "system", empty password.
+(This file also explains details about problem packages, multi-site
+contests, and other relevant topics to run a contest. Please read it
+in full.)
+
+1) Log in as "system", empty password (or the password that is set in
+the file src/private/conf.php under name "basepass").
2) Click on "Options" and change the password of
the user "system" to something secret and safe.
-3a) (Most likely you don't)
+3a) (Most likely you don't want to do this item)
If you have an import file, click on "Import",
choose the file, click to Send it and go to step 4.
Note that many follow steps will be already complete.
@@ -51,12 +56,14 @@ IF RUNNING MULTIPLE SITES, BE SURE TO USE THE CORRECT
NUMBERS HERE ASSIGNED BY WHOEVER IS COORDINATING
THE MULTI-SITE CONTEST!!
-5) Log in as "admin", empty password.
+5) Log in as "admin", empty password (or the password that is set in
+the file src/private/conf.php under name "basepass").
6) Click on "Options" and change the password of
the user "admin" to something secret and SAFE!!
-7) (This can be probably skipped if they are already included)
+7) (This can be probably skipped if they are already included, which
+is the case in the newest BOCA versions)
Include any answers for submissions that you might
like to have in addition to the standard ones.
Click on "Answers" and use the two fields to input
@@ -81,15 +88,19 @@ unless you really know what you are doing. The updates
cascade on the database, removing or updating everywhere
needed.
-8) Include the contest languages. Use the "Languages"
+8) (This can be probably skipped if they are already included, which
+is the case in the newest BOCA versions)
+Include the contest languages. Use the "Languages"
item for it. Each language is defined by a number,
-a name and two scripts: one for compiling and running
-the submitted codes and one for verifying if the
-output generated is equilavent to the judge's output.
+a name and the extension of the source files in such language.
+(*** Note that BOCA versions prior to 1.5 had also the scripts for
+compiling and running the submitted codes, and one for verifying
+if the output generated is equilavent to the judge's output. Ignore
+this comments if you are running BOCA 1.5 or later.
The scripts should be any executable file permitted
in the computer that will run the autojudging
environment (pay attetion on CRs or CRLFs for EOLs.
-This causes problems in some systems).
+This causes problems in some systems).
It's also possible to import the language
information from a file.
The scripts are available together with BOCA in the
@@ -104,8 +115,13 @@ Take some minutes to look into those script files, because
they have path specifications for some executables, such as gcc,
g++, javac, etc. These paths must be fixed (if needed) before
uploading the file to BOCA. Usually the default values work
-just fine. If you find any trouble with the scripts, let me
-know.
+just fine. This ends the part about BOCA prior to 1.5 **)
+
+For BOCA >= 1.5, all scripts to run the submission are inside the
+problem package. Please take a look into the examples in the directory
+doc/problemexamples/ and use them as basis for specifying new
+problems. Later on we discuss further how problems are specified.
+
If you make some mistake, you can re-insert the language
even without deleting it. Just fill up the fields again,
repeating the language number (first field). In this case
@@ -121,34 +137,24 @@ necessary.
use the form available there. The fields are:
* Number: number of the problem. Start with 1.
* Name: nickname of the problem. Good choices are
-problem letters: A, B, C, D, etc.
-Problem fullname: the complete name of the problem.
-Problem basename: the name of the sourcecode file
-expected, without the extension. This is essential
-for Java programmers, who must use this name as the
-main class name.
-* Descfile: a file containing the description of the
-problem. It can be a html file, pdf file, etc. It
-will become available to the teams during the contest.
-You may leave this field empty.
-* Inputfile: file with the input to be used when
-judging the submission of this problem
-(it's possible to have troubles with CRs and CRLFs
-for EOLs when using multiple OSes).
-* Solfile: file with the correct output for this problem
-when executed with the inputfile. This is the file
-that will be compared with the output generated by
-the team's code (again, it's possible to have problems
-with CRs and CRLFs for EOLs when using multiple OSes).
-* Time-limit: maximum number of seconds the code should
-spend trying to solve this problem.
+problem letters: A, B, C, D, etc. A good practice is to
+create the warm-up problems e.g. using letters plus a dot,
+like A., B., and then the contest problem with A, B, C, D...
+Then, to run the warm-up, one might delete all the contest
+problems, which later can be undeleted for the real contest,
+while the warm-up problem deleted.
+
+* Problem package (ZIP): a zip file (encrypted or not) containing
+all information about the problem. See below for a description
+of how this ZIP must be organized.
* Color name: name of the color for this problem. It will
be used if the balloon figure cannot be displayed.
* Color (RGB): enter the rgb value, in the standard HTML
format for colors, for this problem. E.g. 000000 is black,
FFFFFF is white, FF0000 is red, 00FF00 is green and so on.
Colors are interesting because BOCA presents the balloons
-with the problem colors. Nevertheless, they are not essential.
+with the problem colors. Nevertheless, they are not essential
+and can be left empty.
If you make some mistake, you can re-insert the problem
even without deleting it. Just fill up the fields again,
@@ -160,61 +166,174 @@ unless you really know what you are doing. The updates
cascade on the database, removing or updating everywhere
needed.
+===== ATTENTION: READ THIS CAREFULLY IF YOU ARE GOING
+===== TO CREATE YOUR OWN PROBLEM PACKAGE FILES. IF YOU
+===== ARE RUNNING A CONTEST THAT HAS THESE FILES ALREADY
+===== PREPARED FOR YOU, THEN THIS IS NOT SO IMPORTANT...
+PROBLEM PACKAGE: since BOCA 1.5, the problems are
+specified by a ZIP file, which shall have the following folders
+inside it:
+compare/
+compile/
+description/
+input/
+limits/
+output/
+run/
+tests/
+
+Inside compare/, compile/, limits/, runs/, there should be an
+executable (usually a shell script) with the name of each language
+extension that is configured in BOCA (within tab languages). The
+common files are c, cpp and java.
+Inside description/, there must exist a text file named problem.info,
+with the following lines:
+basename=shortfilename
+fullname=This is the problem full name
+descfile=desc.txt
+
+The left-side of this equalities are tags and must not be changed. The
+right-hand side are the values that must be specified.
+shortfilename is the name of the java class that must contain the main()
+function. This is the name that appears in the booklet of problems
+that is distributed to the teams. This is a mandatory field.
+"This is the problem full name" is to be replaced by the full name of
+the problem, as it appears in the booklet of problems. This is also a
+mandatory field. The line of descfile must contain the name of a file
+that will be made available for the teams in the BOCA interface. It is
+the description of the problem, and can have any format. Usual formats
+are .txt and .pdf files. This field is not mandatory, and this line
+can be removed if one does not want to make the problem description
+available inside BOCA.
+
+Inside input/ and output/ there must have files in a one-to-one
+correspondence and with the same filenames. Each file in input will be
+given as standard input to the code that has been submitted, and later
+the generated output will be compared to the file with same name that
+is in the output/ folder.
+
+The folder tests/ may contain any executable files that are meant to
+test the autojudge system in the first time it is run. To clarify all
+the steps, the workflow of the BOCA autojudge system, which dictates how
+the problem must be specified, is as follows:
+
+When a submission arrives for the first time for a given problem, the
+corresponding problem package is downloaded by the autojudge from the
+server. Then the autojudge reads the description/problem.info to
+obtain the basename of the problem, runs the scripts in the directory
+tests/ to check if everything is ok (the person who specified the
+problem package can include any desired code to be tested in such
+directory, and this code will be run and should return zero on success
+and non-zero otherwise), runs the scripts inside limits/ for each language
+to obtain the time-limits of the problem, and then proceeds to run the
+submission itself. If the problem had already been run by the
+autojudge, then these steps are not performed, but are cached and the
+information is reused later.
+
+To test a submission, the autojudge runs the script in the compile/
+folder corresponding to the language of the submission, which obtains
+an executable version of the code. Then the script of run/ for the
+given language is executed for each file in the input/ directory, and
+finally the script in compare/ is performed (again for the given
+language and every file in the output/ directory), checking if the
+results are correct.
+
+Take a look in the doc/problemexamples/.
+There is a script named gen_examples.sh with some command-lines
+to generated encrypted problem zip files. The main code for that is
+the script createproblemzip.php. If it is not to encrypt the problem
+file, then it is enough to zip the directory with the problem data as
+described, e.g. by doing:
+
+# cd doc/problemexamples
+# zip -r bits.zip bits/
+
+and the file bits.zip is to be included in the problem form of BOCA.
+
10) Include the users. There are five types of users
that can be used: admin, team, judge, staff and score.
-admin: manage the contest. He(she) has access to every
+* admin: manage the contest. He(she) has access to every
clarification, run, logs, tasks, etc of the contest.
It is him(her) that starts and ends the competition
(although it can be done automaticly by the system).
-You don't need to have more than one or two admin accounts.
-judge: responsible for judging the submission and
+You don't need to have more than one or two admin accounts. It is
+usually useful to have two admin accounts just in case you have any
+problem with one of them.
+* judge: responsible for judging the submission and
answering the clarification. It's used to have from
three to eight judges. Note that admins, judges and
-staff must have well formed passwords.
-staff: responsible for printing files, delivery
+staff must have well formed complicated passwords.
+There is one judge, which is appointed by the admin using the tab
+"Site", which is designated as chief judge, and has some additional
+tasks such as fixing submission answers that are not in agreement
+among different judges.
+* staff: responsible for printing files, delivery
balloons, helping teams with hardware problems, etc.
Normally one staff account (for the chief staff person)
is enough.
-score: account with the scoreboard. It has no other
+* score: account with the scoreboard. It has no other
privilegies. This account is good for making the coachs
informed about the results and for making the results
-available to remote people. A few score accounts are
+available to remote people. Usually a single score account is
enough.
-team: here is where the contest happens. These accounts
-are for the teams. The passwords are not so important
-if we restrict the access of each team by IP addresses.
-The same thing may be done for the other users too
+* team: here is where the contest happens. These accounts
+are for the teams. It is safest to restrict the access of each team by
+IP addresses. The same thing may be done for the other users too
(and it's a good practice to improve security).
+* site: the user of type site is only used as the means of
+communication between the main server and the local servers in a
+multi-site contest. On local sites, this user can be set up with
+standard data (and strong password). The details on how to step up a
+user of type site are usually given by the admin of the main site. The
+users of type "site" on the main server have an important
+characteristic: they are not allowed to directly log in to the main
+site, but connections are established from the local sites. On the
+main site, the ICPC ID (see below) of the user of type "site" must be
+a number corresponding to the site from which the connection will
+come. THIS IS AN IMPORTANT INFORMATION FOR MULTI-SITE CONTESTS ONLY.
+
The users can be imported by a text file too. See
IMPORT.txt for details.
The fields presented in the "Users" item are:
-* User site number: number of the site of the user. Usually 1.
+* User site number: number of the site of the user. Usually 1 in a
+single site contest. or the corresponding site number in a multi-site
+contest. PAY ATTENTION TO USE THE PROPER SITE NUMBER.
* User number: number of the user (used internally
-by the system). Usually equals the team number.
+by the system). Usually equals the team number, but doesn't have
+to. It only has to be a unique number among users.
* Username: nickname of the user. Used to be
team1, team2, team30, judge1, judge2, admin1, staff1, etc.
It's possible to have the same usernumber and username
in different sites. In a single site contest, all user numbers
and usernames must be distinct.
-* ICPC ID: ID Number of team in the ICPC System.
-* Type: type of the user (team, judge, staff, admin, score)
+* ICPC ID: ID Number of team in the ICPC System. In case of users of
+type "site" for a multi-site contest, this field tells the site number
+of the user when connecting to the main server.
+* Type: type of the user (team, judge, staff, admin, score, site)
* Enabled: is the user enabled?
* Multilogins: can the user make more than one connection
at the same time? It's not a problem to allow that if
the users are restricted by IP numbers.
* User full name: complete name of the user. In case of teams,
-it's convinient to put the institution name plus the team
-nickname here.
-* User description: some detail about the user, like students names.
-This field is optional.
+it's convinient to put a short name for the team between [ ] and then
+the full name of the team. This does not include the institution
+name. E.g.
+"[Best Ever] Best team name ever created in history"
+
+* User description: some detail about the user, like institution name
+and students names. The rule of thumb is to have a short institution
+name between [ ], then the full institution name between another pair [ ],
+then any additional description that you may want to include. E.g.
+"[IME-USP][Institute of Maths and Statistics] Person1, Person2, Person3"
+
* User IP: if set, it restricts from where the user can log in
the system. It is recommended to restrict the logins by IP numbers.
-If using Maratona Linux, the IP number is 10.0.99.X for the
-team numbered X.
-* Password: password of the user. You may leave it blank for the
-team users as each team user is restricted by IP. Choose good
-password for admins, judges and staff.
+Check the IP numbers of the computers where the teams are supposed to
+be. If using ICPC linux, do not check the IP inside the virtual
+machine, but the IP of the actual computer where the virtual machine
+is run.
+* Password: choose strong passwords!
If you make some mistake, you can alter the user fields.
Click on the user number in the table and proceed to its
@@ -232,10 +351,10 @@ THE CONTEST.
11) Configure the site data in the "Site" item. The fields
are:
* Site number: number of the site, with a "new" item to create
-new sites. This is not necessary for single contests.
+new sites. This is not necessary for single-site contests. In
+multi-site contest, be sure to have your site number correctly
+assigned to you by whoever is running the main site.
* Name: name of the site
-* Public IP: internet IP address of this site for communicating
-with the others. Not needed for single contests.
* Start date, End date, stop answering, stop score: equivalent
to admin's contest page. Usually the default values are enough.
* Runs/clars that will be judged here: for multi-site contest,
@@ -245,14 +364,18 @@ site contest, just leave the site number here.
* Tasks that will be treated here: same meaning of the
previous field. For single contests or multi-site contest
it's used to have each site treating its tasks. So leave here
-* the number of the site.
+the number of the local site.
* Active: is the site active? I hope yes.
* Autoend: should the contest ends automaticly at the defined
* time? Usually yes.
-* Globalscore: should the scoreboard be propagated to all sites?
-Not needed for single contests.
-* Autojudge: do not use this option for a contest. It is under
-development/test.
+* Globalscore: site numbers of the teams that should be included in
+the scoreboard. Not needed for single-site contests. For multi-site,
+this defines which information to include in the local scoreboard.
+* Autojudge: do not use this option for a contest unless you tested
+it and are fine with the results. It basically tell the autojudge to
+take final decisions about the submissions. In a real contest, it is
+ideal that a human judge check each of the submissions before sending
+the result to the teams.
* Scorelevel: detail level of information on the scoreboard.
0 means no details while 4 means maximum detail. 2 is a good
choice, although, for single contests, 3 and 4 are also ok and
@@ -279,10 +402,11 @@ The "delete all" fields (delete all clars, delete all runs and
delete all tasks, delete all bkps) are useful (AND IMPORTANT!)
for cleaning everything up just after finished the warmup.
Between the warmup and the real contest, you
-do not need to create another BOCA contest. Just erase all warmup
+do not need to create another BOCA contest. Just delete all warmup
problems, all clars, all tasks and all runs (keeping the languages,
-users and answers). Now, reenter the contest information (start
-date and duration, insert the real contest problems and you are
+users and answers). Then undelete the problems of the real contest (if
+you have already included them), or enter them for the first time,
+reenter the contest information (start date and duration), and you are
ready.
12) It's all done.
@@ -296,6 +420,25 @@ will delete all clarifications and runs related to that
problem. This way, it's not recommended to remove any of these
things during the contest.
+
+===
+=== IMPORTANT INFORMATION FOR MULTI-SITE CONTESTS ===
+===
+If you are participating in a multi-site contest as a local site, you
+may simply wait for the main site to set up languages and problems for
+you. If you connect to the main site (by logging in with the user of
+type site you have created) and the problems are already defined
+there in the main site, then they will be downloaded to your site
+automatically. Other information, such as time of contest, inclusion
+of users, languages, etc, can all be downloaded from the main site if
+this has already been specified there. So the natural procedure is to
+create a user type "site" and log in with it, then enter the
+credentials to the main site (it will be asked after the log in) and
+see what information is already downloaded from the main site, before
+spending time included everything by yourself.
+===
+===
+
Contacts and Copyrights
-----------------------
BOCA Copyright (c) 2003- Cassio Polpo de Campos (cassio@ime.usp.br)
diff --git a/boca-1.5.0/doc/AUTOJUDGING.txt b/boca-1.5.0/doc/AUTOJUDGING.txt
index 5e89cb1..cf81f06 100644
--- a/boca-1.5.0/doc/AUTOJUDGING.txt
+++ b/boca-1.5.0/doc/AUTOJUDGING.txt
@@ -34,69 +34,17 @@ and if the current working directory (ie, ".") is included
in the PATH environment variable.
$ sudo /bin/bash
-# cd /var/www/boca
-# php private/autojudging.php
-
-or alternatively
-$ sudo /var/www/boca/tools/autojudge.sh
+# cd /var/www/boca/src
+# /var/www/boca/tools/autojudge.sh
The autojudging.php will stay running until CRTL+C is
pressed or it's killed by some other way. Autojudging waits
for a new submission, takes it and executes the
-compiling/running script defined in BOCA for the
-corresponding language/problem (this script should be
-defined during language insertions). The following five
-arguments are passed to the compiling/running script:
-
-$1 base_filename
-$2 source_file
-$3 input_file
-$4 languagename
-$5 problemname
-
-Then, this script must perform the desired steps
-(commonly it compiles and runs the source code for
-the given input/language/problem) and:
-
-* the output of the execution should be directed to
- the standard output
-* the standard error may be used to print anything
-* the return code of the script shows what happened
- during the script execution, following the rules:
- FROM SAFEEXEC
-# 0 ok
-# 1 compile error
-# 2 runtime error
-# 3 timelimit exceeded
-# 4 internal error
-# 5 parameter error
-# 6 internal error
-# 7 memory limit exceeded
-# 8 security threat
-# 9 runtime error
- other_codes are unknown to BOCA: in this case BOCA
- will present an unknown error status
-
-After the compiling/running script is executed, the
-autojudging calls the comparing script to verify if
-the output generated is correct. Now the arguments
-passed to comparing script are:
-
-$1 team_output
-$2 sol_output
-$3 languagename
-$4 problemname
-
-Basicly the comparing script compares the team
-output with the solution (correct) output. The last
-line of the standard output of the comparing script
-is read by BOCA which transmits it to judges (in
-fact this information is available when the judge
-takes a submission to evaluate). Moreover, the compare
-script send the following codes to BOCA:
- 4 - YES, files match
- 5 - Presentation error
- 6 - Wrong answer
+compiling/running/comparing scripts defined in BOCA for the
+corresponding language/problem (this information is all included
+in the problem package for each problem). More details about them
+are in the ADMIN.txt file and in the examples of the folder
+doc/problemexamples/
As long as the autojudging php script will execute
code from teams, these codes may contain malicious
@@ -107,15 +55,21 @@ could eventually see important data which they should not
be allowed. This computer must have the same requirements
as the one running the BOCA web interface (but it
does not need postgresql neither a running web server),
-and it need to be configured properly. All the steps
+and it needs to be configured properly. All the steps
described in INSTALL.txt applies to this new computer,
but three important things should be noted:
-1) the computer must have a kind of firewall that
+(ATTENTION: IF YOU ARE USING THE ICPC LINUX VIRTUAL
+MACHINE, THEN ALL THE FOLLOWING SHOULD ALREADY
+BE DONE FOR YOU...)
+
+1) the computer must have a firewall that
only permits connections between it and the main BOCA
-server (this is an important security issue).
+server (this is an important security issue). This is automatically
+done if you are using the ICPC linux virtual machine, which is in fact
+the best way to run the autojudging system.
-2) the private/conf.php file must be configure properly
+2) the src/private/conf.php file must be configure properly
with the correct location of the boca database
(probably it will be needed tcp/ip connection to
the postgresql at the main BOCA server), the
@@ -129,7 +83,12 @@ be achieved inserting the line
host all all IPAUTOJUDGING 255.255.255.255 md5
-in the pg_hba.conf file at the main BOCA server.
+in the pg_hba.conf file at the main BOCA server, where IPAUTOJUDGING
+is to be replaced by the actual IP of the computer running the
+autojudging script. Note that if run within a virtual machine, one
+must take the IP of the host computer, not of the virtual machine for
+this configuration. If the postgresql server is already configured to
+accept incoming connections from all IPs, then this is not necessary.
Talking a little bit more about the compiling/running
script, it will be responsible for running the executable
@@ -139,11 +98,11 @@ control over the time spent by the team's code, the C
source code safeexec.c (tools directory) should be used.
It was designed to execute other programs with lower
privilegies and with a time limit set. It is enough to
-"gcc -o safexec safexec.c" for compiling and it is
-necessary to make a setuid root: "chown root.root safexec"
-and "chmod 4555 safeexec" for running. The files run.sh
-and compare.sh are good examples.
-
+run "gcc -O2 -o safeexec safeexec.c" for compiling and it is
+necessary to make a setuid root: "chown root.root safeexec"
+and "chmod 4555 safeexec" for running. This safeexec must be
+placed in a folder included in the path, usually copying it to
+/usr/bin will suffice: "cp -a safeexec /usr/bin" (note the -a)
Contacts and Copyrights
diff --git a/boca-1.5.0/doc/INSTALL.txt b/boca-1.5.0/doc/INSTALL.txt
index 6319c82..a107e23 100644
--- a/boca-1.5.0/doc/INSTALL.txt
+++ b/boca-1.5.0/doc/INSTALL.txt
@@ -1,32 +1,35 @@
-(Last modified 13/oct/2011 by cassio@ime.usp.br. See Copyright note below.)
+(Last modified 24/aug/2012 by cassio@ime.usp.br. See Copyright note below.)
Requirements
------------
The system was tested with:
-* postgresql 7.4+ / 8.2+
+* postgresql 8.2+ / 9.1+
* apache 2.2+
-* php 5.3+ (and some extensions)
+* php 5.3+
+(Please see the specific needs below.)
Installation
------------
Before following the steps, you must be sure of:
-* your php are integrated with your web server,
-* the php extension module for the postgresql (php_pgsql.so or
-php_pgsql.dll) is installed and configured,
+* your php system is integrated with your web server,
+* the php extension module for the postgresql (e.g. php_pgsql.so)
+ is installed and configured,
* the postgresql database management system is running.
-Usually that is true if you have installed the following
-ubuntu/debian packages:
-postgresql, postgresql-contrib, postgresql-client, apache2,
-libapache2-mod-php5, php5, php5-cli, php5-cgi, php5-gd,
-php5-mcrypt, php5-pgsql
+Usually that is true if you have installed the following ubuntu/debian
+packages, as given by an apt-get example line:
+
+apt-get install \
+postgresql postgresql-contrib postgresql-client apache2 \
+libapache2-mod-php5 php5 php5-cli php5-cgi php5-gd \
+php5-mcrypt php5-pgsql
It may be needed to configure some parameters in php.ini,
postgresql.conf and pg_hba.conf files. The following lines
show some important attributes for BOCA:
-********* apache boca config file (to be included in /etc/apache2/conf.d/): **********
+********* apache boca config file (to be created as /etc/apache2/conf.d/boca): **********
<Directory /var/www/boca>
AllowOverride Options AuthConfig Limit
Order Allow,Deny
@@ -34,31 +37,30 @@ show some important attributes for BOCA:
AddDefaultCharset utf-8
</Directory>
<Directory /var/www/boca/private>
- AllowOverride Options AuthConfig Limit
+ AllowOverride None
Deny from all
</Directory>
<Directory /var/www/boca/doc>
- AllowOverride Options AuthConfig Limit
+ AllowOverride None
Deny from all
</Directory>
<Directory /var/www/boca/tools>
- AllowOverride Options AuthConfig Limit
+ AllowOverride None
Deny from all
</Directory>
-
-********* postgresql.conf: *********
-tcpip_socket = true #if using tcp to connect to database (older postgresql's)
-listen_addresses = '*' #newer postgresql's
+********* /etc/postgresql/*/main/postgresql.conf: *********
+tcpip_socket = true #if using tcp to connect to database (older postgresqls)
+listen_addresses = '*' #newer postgresqls
# THE FOLLOWING MAY BE GOOD FOR PERFORMANCE
max_connections = 100
-maintenance_work_mem = 64MB
-shared_buffers = 32MB
-work_mem = 3MB
-
+maintenance_work_mem = 32MB
+shared_buffers = 512MB ## USE AROUND 1/3 OF YOUR RAM
+work_mem = 10MB
+effective_cache_size = 512MB ## USE AROUND 1/3 OF YOUR RAM
-********* pg_hba.conf: *********
+********* /etc/postgresql/*/main/pg_hba.conf: *********
#this is the access control file
#restricting connections from unixsocket or localhost is
#the best choice, but it could not enough if the
@@ -67,40 +69,39 @@ host all all 127.0.0.1 255.255.255.255 md5
host all all 0.0.0.0 0.0.0.0 md5
# this last line will allow connection from everywhere. If you
# know the IP address of the machines that will serve as autojudging,
-# then you may restrict the access to only such machine. Anyway,
-# if you have a good password, that should not be a problem.
+# then you may restrict the access to only such machines. Anyway,
+# if you have a good password, that should not be a problem, as we
+# are not expecting this to be available on the internet but only on
+# the local net.
-
-
-Steps for installing boca:
+***********
+*********** Steps for installing boca:
1) Unpack the boca file into a internet world readable directory,
+according to the setting you chose in /etc/apache2/conf.d/boca,
e.g.:
-> mkdir -p /var/www/boca
-> cd /var/www/boca
-> tar xvzf boca-x.y.z.tar.gz
+# cd /var/www
+# tar xvzf boca-x.y.z.tar.gz
+# ln -s boca-x.y.z boca
2) create a postgresql account with permission to create new
databases (you need database admin privilegies to do that),
e.g.:
-> psql -h 127.0.0.1 -U postgres -d template1
+# psql -h 127.0.0.1 -U postgres -d template1
template1=# create user bocauser with password 'boca' createdb;
template1=# \q
3) edit the file private/conf.php (placed where you unpacked boca),
-setting up the correct values. Ex:
- $conf["dblocal"]="true"; // use unix socket to connect?
+in order to set up the correct values for your system. E.g.:
+ $conf["dblocal"]="false"; // use unix socket to connect?
$conf["dbhost"]="localhost"; // ip address of the db
$conf["dbname"]="bocadb"; // name of the boca database
- // it should be any name
-
$conf["dbuser"]="bocauser"; // unpriviligied boca user
$conf["dbpass"]="boca"; // unpriviligied boca password
$conf["dbsuperuser"]="bocauser"; // priviligied boca user
$conf["dbsuperpass"]="boca"; // priviligied boca password
// note that it is just fine to use the same user for
- // unpriv and priv access, but you can separate them
- // for increasing local security
+ // unpriv and priv access
// secret key to be used in HTTP headers
// you MUST set it with any random large enough sequence
@@ -108,22 +109,32 @@ setting up the correct values. Ex:
// CHOOSE ANOTHER NUMBER/STRING AND REPLACE BELOW
$conf["key"]="secretKey:23894091237589234759234723489";
+ // initial password that is used for the user admin -- set it
+ // to something hard to guess if the server is available
+ // online even in the moment you are creating the contest
+ // In this way, the new accounts for system and admin that are
+ // eventually created come already with the password set to this
+ // value. It is your task later to update these passwords to
+ // some other values within the BOCA web interface.
+ $conf["basepass"]="boca";
+
// the following field is used by the autojudging script
// set it with IP address (or other short description)
// of the computer allocated for
// autojudging during the competition
+ // this is only useful for debug purposes when multiple
+ // autojudges are being used
$conf["ip"]='10.10.10.10';
-4) run the php script to initialize the boca database
-> cd /var/www/boca/
-> php private/createdb.php
+4) run the php script to initialize the boca database. E.g.
+# cd /var/www/boca/src
+# php private/createdb.php
5) It's all done. Now you have to manage the contest with a
browser and boca. Proceed to the ADMIN.TXT file.
-
-----------
-==> DETAIL ABOUT MOVING FROM POSTGRES 8.x TO 9.1
+========
+==> DETAIL ABOUT MIGRATING FROM POSTGRES 8.x TO 9.1
LARGE OBJECTS GET WRONG OWNERSHIP. TO FIX, RUN WITHIN psql:
# su - postgres
# psql -d bocadb
@@ -136,23 +147,26 @@ execute 'ALTER LARGE OBJECT ' || r.loid || ' OWNER TO bocauser';
end loop;
end$$;
\q
+========
-
-Security Issues
----------------
+========
+Security Issue when BOCA server is not exclusively dedicated to BOCA
+--------------------------
It is strongly recommended that BOCA be installed on a computer
with no other users. If the computer where you are installing BOCA
is used by others (with command line shells), it is essential
-that you change the permission of the file private/conf.php to be
+that you change the permission of the file src/private/conf.php to be
readable just by the user which the apache server runs and set
safe_mode=On in the php.ini file (furthermore, the database access
must be strictly restricted by passwords). Do it before configuring the
-private/conf.php file, so no one will be able to see your passwords.
-Moreover, the private/conf.php file must be in a directory owned by the
+src/private/conf.php file, so no one will be able to see your passwords.
+Moreover, the src/private/conf.php file must be in a directory owned by the
bocauser or www-data or apache (all this combination implies that the only
-way to read the private/conf.php is from a php script owned by bocauser in
-the same directory).
+way to read the src/private/conf.php is from a php script owned by
+bocauser in the same directory).
+========
+========
Contacts and Copyrights
-----------------------
BOCA Copyright (c) 2003- Cassio Polpo de Campos (cassio@ime.usp.br)
diff --git a/boca-1.5.0/doc/PC2_Team.tab b/boca-1.5.0/doc/PC2_Team.tab
new file mode 100755
index 0000000..ad6a1d7
--- /dev/null
+++ b/boca-1.5.0/doc/PC2_Team.tab
@@ -0,0 +1,6 @@
+1783 1301 A Garotos de Programa Universidade Estadual do Norte do Paraná UENP http://www.uenp.edu.br/ Brazil Y
+1533 1301 A Calouro Verde Universidade Estadual do Norte do Paraná UENP http://www.uenp.edu.br/ Brazil Y
+1065 1289 P UGF-Coders Universidade Gama Filho UGF www.ugf.br Brazil Y
+1892 1203 P IFSC2012 IFSC - Instituto de Física de São Carlos - USP IFSC-USP http://www.ifsc.usp.br Brazil Y
+1844 1286 A Team not Found Universidade Regional Integrada - Campus de Erechim URI - Erechim www.uricer.edu.br Brazil Y
+1843 1286 A Jokers Universidade Regional Integrada - Campus de Erechim URI - Erechim www.uricer.edu.br Brazil Y
diff --git a/boca-1.5.0/doc/READMEubuntu.txt b/boca-1.5.0/doc/READMEubuntu.txt
index 09994a8..b3b1baa 100644
--- a/boca-1.5.0/doc/READMEubuntu.txt
+++ b/boca-1.5.0/doc/READMEubuntu.txt
@@ -1,6 +1,6 @@
ICPC Linux installation script
----------------------------------
-Copyright (c) 2009 C. P. de Campos.
+Copyright (c) 2009-2012 BOCA System (bocasystem@gmail.com) and C. P. de Campos.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
@@ -8,7 +8,7 @@ Permission is granted to copy, distribute and/or modify this document
A copy of the license is included in the section entitled "GNU
Free Documentation License".
---------------------------------
-File last modified: 11/oct/2011
+File last modified: 24/aug/2012
==> The installv2.sh script is not necessary if you are using the virtual machine version. This is intended to those that
want to install the system as the host of a computer, or desire to create again the virtual machine version from the beginning.
@@ -23,7 +23,11 @@ Take care with the following points during the installation of the ubuntu:
3) Use the simplest partitioning option (that is, everything in a single partition) and choose at least 10GB for it.
After installing ubuntu, the system reboots. Download the script installv2.sh to the home directory of icpcadmin,
-make it executable by chmod 755 installv2.sh, and run it as root: sudo ./installv2.sh
+make it executable by chmod 755 installv2.sh, and run it as root:
+$ sudo /bin/bash
+# ./installv2.sh
+(if you already updated packages, then run ./installv2.sh alreadydone)
+
and reboot the system to finish the configuration (such as setting passwords, IPs, etc).
Note this is going to give you a system just like you would get from the box (the virtual machine version). If you
want it to become a server, you must follow the same procedure that is indicated in the READMEvm.txt. This
diff --git a/boca-1.5.0/doc/READMEvm.txt b/boca-1.5.0/doc/READMEvm.txt
index e78fca8..7755c2d 100644
--- a/boca-1.5.0/doc/READMEvm.txt
+++ b/boca-1.5.0/doc/READMEvm.txt
@@ -1,6 +1,6 @@
-READMEvm.txt file of the ICPC Linux VM (release 2011)
+READMEvm.txt file of the ICPC Linux VM (release 2012)
=================================
-Copyright (c) 2009-2011 C. P. de Campos.
+Copyright (c) 2009-2012 BOCA System (bocasystem@gmail.com) and C. P. de Campos.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
@@ -8,21 +8,21 @@ Permission is granted to copy, distribute and/or modify this document
A copy of the license is included in the section entitled "GNU
Free Documentation License".
=================================
-Last modified: 10/Oct/2011
+Last modified: 24/aug/2012
-This file concerns the ICPC Linux image available in this directory. It is a vmware-type
-hard-disk image with a system built up over a ubuntu (or xubuntu) distribution. This is
-also relevant if you have used the installv2.sh script to build the server natively, as the
+This file concerns the ICPC Linux image available for virtualbox or vmware. It was created as a
+vmware-type hard-disk image with a system built up over a ubuntu (or xubuntu) distribution. This
+README is also relevant if you have used the installv2.sh script to build the server natively, as the
system will have the exactly same characteristics of the VM version mentioned here.
- You need the vmplayer from www.vmware.com to use this image. As far as I know, vmplayer is
-free-of-charge for linux and windows hosts. Check it. There is another version based on virtualbox,
-which is just a translation from the image here. virtualbox is free and works pretty well too.
+free-of-charge for linux and windows hosts. Check it. You can also use virtualbox, which
+is free and works pretty well too.
- Internet access is restricted inside the box. By default, users can only access
-bombonera.ime.usp.br, the home of BOCA. During the first boot time, you are able to choose a
-different IP address of your server instead of bombonera. If you are going to run a contest,
-you must do that! The system inside the virtual machine (or just VM) will
+bombonera.ime.usp.br and bombonera.org, servers where BOCA is hosted. During the first boot time,
+you are able to choose a different IP address of your server instead of bombonera. If you are going to
+run a contest, you must do that! The system inside the virtual machine (or just VM) will
only be able to access such server and nothing else. An alias with the name boca is created
for such IP, so it is possible to connect to it using the name boca instead of typing the
IP address. So, during the first initialization of each VM you should configure the IP address
@@ -51,12 +51,12 @@ system. Using more memory inside the vm is better for the teams, so they can run
- Unzipped, the image takes around 12 GB of your hard disk. You need this space in the hard
disk of each computer. If this is a problem for you, it is possible to rebuild the vm system
-with less space (8GB for clients is enough, the server has to have more).
+with less space (8GB for clients is enough, the server has to have more though).
- It is possible to maximize the VM window so as it uses the whole screen area. The current
image is set to 800x600 or 1024x768 pixels, but that can probably be increased depending on your
video card and monitor settings. The keyboard config can also be changed
-inside the x-window system configurations.
+inside the system configurations of ubuntu.
- During the first startup, an script will ask you for the BOCA database password (after
asking the BOCA server IP address and password of the icpcadmin). YOU MUST ONLY FILL
@@ -66,10 +66,11 @@ shall access the system only by using the web interface. This password is intend
in the machine that will have the autojudging system, as the autojudging script needs to
connect to the database directly (see next item about the autojudge). In fact only the
autojudging machine (or machines, if you have more than one) need this password to be set.
+SO PAY ATTENTION TO ONLY SET THIS PASSWORD IN THE AUTOJUDGING MACHINES.
- An autojugding machine is used to automatically compile and execute the codes submitted
by the teams. DO NOT run it on the same computer as the BOCA server (the web server and the database
-server). Because teams may submit malicious code, it is safe to run it on a separate computer.
+server). Because teams may submit malicious code, it is only safe to run it on a separate computer.
The worst scenario (in case a team's code hangs the computer) will require to reboot such
computer. About the configuration, the only difference between the autojudge computer and
team's computers is the setup of the database password, as mentioned before. You must set up
@@ -79,7 +80,8 @@ terminal (it is inside accessories), and run "sudo /var/www/boca/tools/autojudge
If everything is fine, some dots will appear on the screen while the script runs an infinite
loop waiting for submissions. Ctrl-C stops the autojudge. The autojudging shall be started
after configuring the server to run the contest, otherwise it will eventually output an error or
-freeze. If you see the dots happening every few seconds, you are in the correct track.
+freeze. If you see the dots happening every few seconds, you are in the correct track. The dots mean
+the autojudging is running, but there are no submissions to process.
- With old versions of ICPC Linux, all the team files were kept in the server. Now this is
NOT true anymore. Everything is stored locally. So, after a warmup and before the real
@@ -87,8 +89,8 @@ contest, it is necessary to go to each team computer, open a command-line shell
need to change to the privileged user, the unprivilegied icpc user is enough) and run
the command
/etc/icpc/cleandisk.sh
-After that, reboot the system inside the virtual machine (not the host computer itself!) and you
-are done. All files belonging to the icpc user have been erased.
+After that, reboot the system inside the virtual machine (not the host computer itself, only the VM!)
+and you are done. All files belonging to the icpc user have been erased.
- Because the files are stored in the local team computers, now BOCA (by web) has an option
to make file backups, where teams can save their files on the server. Currently this must be done
@@ -98,9 +100,9 @@ do that, they can just run "makebkp.sh". If they want to save other files, it is
the web interface of the teams. Note that teams should submit backup files with small size only, but
that is not a problem because source codes are really small. The script makebkp.sh is available
(but not very tested) which sends files .c, .cpp, .java and .in (it looks for these files in the
-current directory) to the server. IT IS IMPORTANT TO LET THE TEAMS KNOW ABOUT THIS SITUATION AND
-THE POSSIBILITY OF SAVING FILES TO THE SERVER, EITHER BY USING THE makebkp.sh IN THE COMMAND-LINE,
-OR BY DIRECTLY UPLOADING THE FILES IN THE WEB INTERFACE.
+current directory) and send them to the server. IT IS IMPORTANT TO LET THE TEAMS KNOW ABOUT THIS
+SITUATION AND THE POSSIBILITY OF SAVING FILES TO THE SERVER, EITHER BY USING THE makebkp.sh IN
+THE COMMAND-LINE, OR BY DIRECTLY UPLOADING THE FILES IN THE WEB INTERFACE.
- The most complicated thing to run the contest using a VM is that you need to restrict the
use of the host operating system. For example, it would be possible for a team to switch
@@ -121,36 +123,37 @@ looking the teams work on the computers during the whole contest. No one is allo
VM and use the underlying system. If they do that, then simply expel them from the contest!
Give a warn of the possible penalty to everyone before starting and that is it. Quick and clean :D
-- Any vm can become a server for the contest, which in this case will be a BOCA server running
+- Any ICPC Linux VM can become a server for the contest, which in this case will be a BOCA server running
inside a virtual machine system. To do that, you just need to login as user
icpcadmin, become root using the command "sudo /bin/bash"
and execute the script /etc/icpc/becomeserver.sh
-READ THE FULL TEXT BEFORE RUNNING THIS SCRIPT. THE VM MUST BE IN BRIDGE MODE (see explanation
-below). At this moment, you will be prompted to define the DB password or use a random one. After
-that, the IP address of this computer must be used to configure all other VMs (during those
+READ THE FULL TEXT BEFORE RUNNING THIS SCRIPT. THE VM, TO BECOME A SERVER, MUST BE SET TO BRIDGE
+MODE (see explanation below). At this moment, you will be prompted to define the DB password or use a
+random one. After that, the IP address of this computer must be used to configure all other VMs (during those
startup questions).
Some considerations about a server: more memory must be used for the server. Have a computer
with enough memory and increase the memory of the VM. Also take care with the
-disk space. The current image has only around 1.6GB free (still, that must be more than enough).
+disk space. The current image has only a few gigabytes free (still, that must be more than enough).
Finally, note that to run the VM as the server, it must be configured to run in BRIDGE mode
with respect to the network interface, otherwise it will not be possible for other computers
to reach it. BRIDGE mode means that you must look in your vmplayer (whatever player you are using)
-to configure the network as in BRIDGE mode). You may need to reboot the VM. If after rebooting it
+to configure the network as in BRIDGE mode. You may need to reboot the VM. If after rebooting it
and running the command-line program "ifconfig" you can see that the IP address of your computer
-is the same inside the VM and outside, you are done. Besides that, the underlying operating
+is the same inside the VM and outside, you are done. Besides that, the underlying (host) operating
system must have NO apache or postgresql running, nor
-any other TCP server in the ports 80 (http), 443 (https) and 5432 (postgres).
+any other TCP server in the ports 80 (http), 443 (https) and 5432 (postgres). Otherwise this will create a
+conflict when running the BOCA server in the VM with BRIDGE mode.
Yet I point out that running the BOCA system in a server computer (without the VM)
is the mostly tested solution, but the VM version was used in many sites already. If you want to
-run it natively, stop here and go to the xubuntu directory of bombonera.ime.usp.br to see the
-instructions. You will need a computer that you can format and reinstall.
+run it natively, stop here, get a ubuntu 12.04, install it, and run the installv2.sh script over it. See the
+file READMEubuntu.txt for more details. You will need a computer that you can format and reinstall.
That is the simplest way of having a full ICPC linux server
running apart from using the VM version itself, as explained here.
- After having the server and clients running up, it is necessary to configure the BOCA
web system. For that purpose, please follow the steps of the ADMIN.txt file in the doc/
folder of the boca system. It is available in the BOCA package or inside the ICPC
-linux at /var/www/boca/doc/. There are some examples inside the bits/ subfolder.
+linux at /var/www/boca/doc/. There are some examples inside the subfolders there.
- Try to use the vm without fear. In the worst case, download it again and start again
(or even better, keep a copy of the image without changes). Any questions, please
@@ -160,4 +163,5 @@ do not hesitate to contact me: bocasystem@gmail.com.
data in the database of BOCA!), then you may run the script /etc/icpc/installboca.sh
If you need to update general scripts that are used in the system and were installed by the
installv2.sh procedure, you may run the script /etc/icpc/installscripts.sh
-These are easy ways to update the system in case bugs are found and fixed.
+These are easy ways to update the system in case bugs are found and fixed, without having to download
+again the whole VM image. Good luck and have fun!
diff --git a/boca-1.5.0/doc/Teams.tsv b/boca-1.5.0/doc/Teams.tsv
new file mode 100755
index 0000000..c7b73e1
--- /dev/null
+++ b/boca-1.5.0/doc/Teams.tsv
@@ -0,0 +1,9 @@
+File_Version 1
+null 1488 2115 The Goodfellas Universidade de São Paulo - Escola de Artes, Ciências e Humanidades EACH-USP BRA
+null 1487 2115 FODUVA Universidade de São Paulo - Escola de Artes, Ciências e Humanidades EACH-USP BRA
+null 1486 2115 Multi-thread Simultâneo (MTS) Universidade de São Paulo - Escola de Artes, Ciências e Humanidades EACH-USP BRA
+null 1485 2115 SWR Universidade de São Paulo - Escola de Artes, Ciências e Humanidades EACH-USP BRA
+null 1484 2115 USP Lost Universidade de São Paulo - Escola de Artes, Ciências e Humanidades EACH-USP BRA
+null 1483 2501 UFRN-1 Universidade Federal do Rio Grande do Norte UFRN BRA
+null 1482 2504 ineficiente Universidade Federal de Santa Catarina UF Santa Catarina BRA
+null 1481 2115 Gargamel's team Universidade Federal de Santa Catarina UF Santa Catarina BRA
diff --git a/boca-1.5.0/doc/changelog.txt b/boca-1.5.0/doc/changelog.txt
index 65e63b3..c5f863b 100644
--- a/boca-1.5.0/doc/changelog.txt
+++ b/boca-1.5.0/doc/changelog.txt
@@ -1,8 +1,31 @@
version 1.5.0:
-2012/07/10
-- (ICPC Linux) updated scripts to create ICPC linux under ubuntu 12.04. Hopefully it will still work with
- older versions of ubuntu.
-- (ICPC Linux) java version now is openjdk6 (it is getting harder to keep using sun java on new linux distributions)
+2012/08/24
+- (ICPC Linux) updated scripts to create ICPC linux under ubuntu
+ 12.04. Hopefully it will still work with older versions of ubuntu.
+- (ICPC Linux) java version now is openjdk6 (it is getting harder to
+ keep using sun java on new linux distributions)
+- Problems in BOCA are now defined by a problem package in ZIP format,
+ which can be encrypted.
+- private/score.sep file now allows also the specification of by-user
+ and by-site scoretables.
+- admin password need to change other users' passwords.
+- option to import users using the ICPC webpage formats (.tab and .tsv).
+- multi-site re-included in the system, with a centralized idea (one
+ main server and many local servers that connect to it). The
+ connection is done (encryptedly) via http and is handled by a new type of
+ user named type "site".
+- main site can provide redundancy in case of failure, as it has a
+ copy of everything.
+- autojudging scheme has been improved, specially in terms of
+ safety. Scripts to judge are now inside the problem package.
+- examples of problem packages are included in doc/problemexamples/
+- option to delete and undelete problems included, so one can setup
+ the warmup and contest with all problems, delete some, undelete later.
+- bug fix in updating time of contest and sites (updating contest
+ didn't update sites).
+- options to insert keys and password in the tab contest in order to
+ unlock problems in case they are encrypted.
+- documentation files updated.
version 1.4.2:
2011/11/04
diff --git a/boca-1.5.0/doc/import-user.txt b/boca-1.5.0/doc/import-user.txt
index 9656235..ea16d82 100644
--- a/boca-1.5.0/doc/import-user.txt
+++ b/boca-1.5.0/doc/import-user.txt
@@ -1,13 +1,14 @@
import-user.txt
---------------
-Last modified 05/aug/2012 by cassio@ime.usp.br
+Last modified 24/aug/2012 by cassio@ime.usp.br
See Copyright below.
To simplify the input of user's data, it is
possible to put all information in a text
file, according to three different formats. Two
of them are based on the files generated from the
-ICPC website system, usually in TAB separated format.
+ICPC website system, usually in TAB separated format. Examples of such
+files are in this folder, named PC2_Team.tab and Teams.tsv
The third possible format follows the example below:
************ users.txt: *************
@@ -15,8 +16,9 @@ The third possible format follows the example below:
usernumber=2000
usersitenumber=1
username=cassio
-userfullname=Cassio Polpo de Campos
+userfullname=Cassio P. de Campos
usertype=admin
+userpassword=secret
usernumber=2001
usersitenumber=1
@@ -36,24 +38,31 @@ userpassword=aBcDe
usernumber=1
usersitenumber=1
-userfullname=PUC-SP A
+userfullname=[PUC-SP A] Team A
+userdesc=[PUC-SP][Pontificial Universidade Catolica de SP] Nome1, Nome2, Nome3
userip=192.168.0.1
usericpcid=1234
usernumber=2
usersitenumber=1
-userfullname=PUC-SP B
+userfullname=[Team B] Full team B name
+userdesc=[InstitutionShortName] Long institution name
userip=192.168.0.2
usericpcid=1111
usernumber=3
usersitenumber=1
-userfullname=IME-USP C
+userfullname=[Shortname] Long team name
userip=192.168.0.3
**************************************
Note that the "****" lines should not
-be included in the text file.
+be included in the text file, only what is between them. Consider
+using the ICPC data format, downloaded from the ICPC site, to input
+the information about the teams. Note that passwords will be
+automatically generated for the teams in such case, and you have to
+take note of those passwords. If you re-include the teams using those
+file formats, new passwords will be generated, and you must take note again.
The users are defined per block of lines.
Blank lines separate the definitions of the
diff --git a/boca-1.5.0/tools/icpc.etc.tgz b/boca-1.5.0/tools/icpc.etc.tgz
index 39a0ab9..0351efc 100644
--- a/boca-1.5.0/tools/icpc.etc.tgz
+++ b/boca-1.5.0/tools/icpc.etc.tgz
Binary files differ