aboutsummaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorCassio de Campos <cassiopc@gmail.com>2018-08-24 19:23:11 +0000
committerCassio de Campos <cassiopc@gmail.com>2018-08-24 19:23:11 +0000
commit27256ca804e34366f2413222be4e675fe63a4af9 (patch)
treeab6adbbd100e3d58c6af646fea0d026129ebfb04 /debian
parentc8994053b1ff9ccf47b532be6567c0f7f33f5f3c (diff)
parent9f05ae47d104864162f264fe6415d73797e039bd (diff)
downloadboca-27256ca804e34366f2413222be4e675fe63a4af9.tar.gz
boca-27256ca804e34366f2413222be4e675fe63a4af9.zip
Merge branch 'devel' into develc
Diffstat (limited to 'debian')
-rw-r--r--debian/boca-autojudge.postinst5
-rw-r--r--debian/boca-common.conffiles (renamed from debian/boca.conffiles)0
-rw-r--r--debian/boca-common.postinst50
-rw-r--r--debian/boca-common.templates10
-rw-r--r--debian/boca-db.postinst75
-rw-r--r--debian/boca-db.templates11
-rw-r--r--debian/boca-web.postinst24
-rw-r--r--debian/boca.postinst11
-rw-r--r--debian/compat2
-rw-r--r--debian/control56
-rw-r--r--debian/postinst6
-rwxr-xr-xdebian/rules10
12 files changed, 234 insertions, 26 deletions
diff --git a/debian/boca-autojudge.postinst b/debian/boca-autojudge.postinst
new file mode 100644
index 0000000..37b144c
--- /dev/null
+++ b/debian/boca-autojudge.postinst
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+chmod 4555 /usr/bin/safeexec
+
+exit 0
diff --git a/debian/boca.conffiles b/debian/boca-common.conffiles
index b004c7a..b004c7a 100644
--- a/debian/boca.conffiles
+++ b/debian/boca-common.conffiles
diff --git a/debian/boca-common.postinst b/debian/boca-common.postinst
new file mode 100644
index 0000000..d28de8a
--- /dev/null
+++ b/debian/boca-common.postinst
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+priority=high
+
+case "$1" in
+ configure|reconfigure)
+ if [[ -e "/etc/boca.conf" ]]; then
+ . /etc/boca.conf
+ if [[ "$bdserver" != "" ]]; then
+ echo "If you want to reset DB configuration, please unset \"bdserver\" in /etc/boca.conf"
+ exit 0
+ fi
+ fi
+ db_input high boca-common/dbhost || true
+ db_go || true
+
+ db_get boca-common/dbhost || true
+ DBHOST="$RET"
+
+ if [[ "x$DBHOST" == "x" ]]; then
+ DBHOST=localhost
+ fi
+
+ db_input high boca-common/dbpassword || true
+ db_go || true
+
+ db_get boca-common/dbpassword || true
+ PASSWORD="$RET"
+
+ if [[ "x$PASSWORD" == "x" ]]; then
+ printf "Generating password with makepasswd"
+ PASSWORD="$(makepasswd --chars 20)"
+ echo .
+ fi
+ export PASSWD="$PASSWORD"
+ boca-config-dbhost $DBHOST
+ unset PASSWD
+ ;;
+ *)
+ ;;
+esac
+
+chmod 600 /var/www/boca/src/private/conf.php
+chown www-data.www-data /var/www/boca/src/private/conf.php
+
+exit 0
diff --git a/debian/boca-common.templates b/debian/boca-common.templates
new file mode 100644
index 0000000..e993675
--- /dev/null
+++ b/debian/boca-common.templates
@@ -0,0 +1,10 @@
+Template: boca-common/dbhost
+Type: string
+Default: localhost
+Description: Please provide a host within BOCA database:
+
+Template: boca-common/dbpassword
+Type: password
+Description: Please provide a password for BOCA database:
+ Please, do not forget this password. You will need it to provide it while
+ configuring boca-web and boca-autojudge.
diff --git a/debian/boca-db.postinst b/debian/boca-db.postinst
new file mode 100644
index 0000000..c4215df
--- /dev/null
+++ b/debian/boca-db.postinst
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+priority=high
+
+case "$1" in
+ configure|reconfigure)
+
+ if [[ -e "/etc/boca.conf" ]]; then
+ . /etc/boca.conf
+ if [[ "$bdcreated" != "" ]]; then
+ echo "If you want to reset DB configuration, please unset \"bdcreated\" in /etc/boca.conf"
+ exit 0
+ fi
+ fi
+
+ #Assume DBHOST will be localhost, since this is the package that
+ #provides postgresql
+ #XXX future work make it work as a backup DB server
+ DBHOST=localhost
+
+ db_get boca-common/dbpassword || true
+ PASSWORD="$RET"
+
+ #If we don't have a password from boca-common 2 things could be
+ #happened
+ #1) dpkg cleaned the password already
+ #2) The user did not provide a password
+ #So we will ask for a password
+ if [[ "x$PASSWORD" == "x" ]]; then
+ db_input critical boca-db/dbpassword || true
+ db_go || true
+ db_get boca-db/dbpassword || true
+ PASSWORD="$RET"
+ db_reset boca-db/dbpassword
+ else
+ db_reset boca-common/dbpassword
+ fi
+
+ if [[ "x$PASSWORD" == "x" ]]; then
+ printf "Generating password with makepasswd"
+ PASSWORD="$(makepasswd --chars 20)"
+ echo .
+ echo "Your DB password is '$PASSWORD' take care of it."
+ fi
+ export PASSWD="$PASSWORD"
+ boca-config-dbhost $DBHOST
+ unset PASSWD
+ postgresuser=postgres
+ su - $postgresuser -c "echo drop user bocauser | psql -d template1 >/dev/null 2>/dev/null"
+ su - $postgresuser -c "echo create user bocauser createdb password \'$PASSWORD\'| psql -d template1"
+ su - $postgresuser -c "echo alter user bocauser createdb password \'$PASSWORD\'| psql -d template1"
+
+ db_input critical boca-db/createdb || true
+ db_go || true
+
+ db_get boca-db/createdb || true
+
+ if [[ "$RET" == "Yes" ]]; then
+ echo YES |php /var/www/boca/src/private/createdb.php
+ echo "bdcreated=y" >> /etc/boca.conf
+ fi
+ db_reset boca-db/createdb
+
+ ;;
+ *)
+ ;;
+esac
+
+service postgresql restart || true
+
+exit 0
diff --git a/debian/boca-db.templates b/debian/boca-db.templates
new file mode 100644
index 0000000..895098d
--- /dev/null
+++ b/debian/boca-db.templates
@@ -0,0 +1,11 @@
+Template: boca-db/dbpassword
+Type: password
+Description: Please provide a password for BOCA database:
+ Please, do not forget this password. You will need it to provide it while
+ configuring boca-web and boca-autojudge.
+
+Template: boca-db/createdb
+Type: select
+Choices: Yes, No
+Description: Should a new DB be created for BOCA?
+ Warning: This operation will erase any existing previously created BOCA DB
diff --git a/debian/boca-web.postinst b/debian/boca-web.postinst
new file mode 100644
index 0000000..52071f4
--- /dev/null
+++ b/debian/boca-web.postinst
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+. /usr/share/debconf/confmodule
+
+chown -R www-data.www-data /var/www/boca
+chmod -R go-rwx /var/www/boca/src/private
+
+a2ensite default-ssl
+a2enmod ssl
+a2enmod socache_shmcb
+a2enmod proxy_fcgi
+
+# Make sure embedded apache php module is not loaded
+a2dismod php7.2 || true
+
+#enable php fpm instead
+a2enconf php7.2-fpm
+
+service apache2 restart || true
+
+#remember to reset possible stored password from debconf
+db_reset boca-common/dbpassword || true
+
+exit 0
diff --git a/debian/boca.postinst b/debian/boca.postinst
deleted file mode 100644
index 18ce749..0000000
--- a/debian/boca.postinst
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-chown -R www-data.www-data /var/www/boca
-chmod -R go-rwx /var/www/boca/src/private
-chmod 4555 /usr/bin/safeexec
-
-a2ensite default-ssl
-a2enmod ssl
-a2enmod socache_shmcb
-
-service apache2 restart || true
diff --git a/debian/compat b/debian/compat
index 7f8f011..f599e28 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-7
+10
diff --git a/debian/control b/debian/control
index 2095b2e..2b45da3 100644
--- a/debian/control
+++ b/debian/control
@@ -2,20 +2,63 @@ Source: boca
Section: misc
Priority: optional
Maintainer: BOCA Development Team <bocasystem@gmail.com>
+Uploaders: Cassio Polpo de Campos <cassiopc@gmail.com>, Bruno Cesar Ribas <brunoribas@gmail.com>
Build-Depends: debhelper, build-essential
-Package: maratona-boca
+Package: boca
Architecture: all
-Depends: boca
-Description: Virtual package that depends on BOCA
+Depends: boca-common, boca-web, boca-db, boca-autojudge
+Provides: maratona-boca
+Description: BOCA is a software created to control a contest with the ACM ICPC rules.
+ BOCA is a software created to control a contest with the ACM International
+ Collegiate Programming Contest rules. It has been developed in PHP and the
+ interaction between judges and the system is done through a web browser.
+ .
+ This package install all boca related packages to run everything in one
+ single machine.
-Package: boca
+Package: boca-db
+Architecture: all
+Pre-depends: postgresql
+Depends: boca-common
+Description: BOCA - database
+ BOCA is a software created to control a contest with the ACM International
+ Collegiate Programming Contest rules. It has been developed in PHP and the
+ interaction between judges and the system is done through a web browser.
+ .
+ This package provides a full database to run a contest on.
+
+Package: boca-web
+Architecture: all
+Depends: boca-common, apache2, php-fpm, php
+Description: BOCA - WEB files
+ BOCA is a software created to control a contest with the ACM International
+ Collegiate Programming Contest rules. It has been developed in PHP and the
+ interaction between judges and the system is done through a web browser.
+ .
+ This package provides only web contents.
+
+Package: boca-common
+Architecture: all
+Pre-Depends: debconf, makepasswd, coreutils, sharutils
+Depends: php-zip, wget, php-cli, php-pgsql, php-gd, postgresql-client, php-xml, openssl, libany-uri-escape-perl
+Description: BOCA - Common files
+ BOCA is a software created to control a contest with the ACM International
+ Collegiate Programming Contest rules. It has been developed in PHP and the
+ interaction between judges and the system is done through a web browser.
+ .
+ This package contains shared files with all BOCA packages.
+
+Package: boca-autojudge
Architecture: amd64
-Depends: php-zip, debootstrap, schroot, quotatool, makepasswd, apache2, libapache2-mod-php, sharutils, wget, coreutils, php, php-cli, php-pgsql, php-gd, postgresql, postgresql-client, libany-uri-escape-perl, php-xml, openssl
-Description: BOCA is a software created to control a contest with the ACM ICPC rules.
+Depends: boca-common, debootstrap, schroot, quotatool, makepasswd
+Description: BOCA - AutoJudge
BOCA is a software created to control a contest with the ACM International
Collegiate Programming Contest rules. It has been developed in PHP and the
interaction between judges and the system is done through a web browser.
+ .
+ This package contains files to generate and run the autojudge system for
+ BOCA.
Package: boca-submission-tools
Architecture: amd64
@@ -23,3 +66,4 @@ Depends: sharutils, wget, coreutils, libany-uri-escape-perl, openssl, openssh-se
Description: BOCA submission tools.
This package provides tools to submit codes to a running boca server
without using the web interface.
+
diff --git a/debian/postinst b/debian/postinst
deleted file mode 100644
index 65e238f..0000000
--- a/debian/postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-chown -R www-data.www-data /var/www/boca
-chmod 4555 /usr/bin/safeexec
-
-service apache2 restart || true
diff --git a/debian/rules b/debian/rules
index 6c52a63..3453dd0 100755
--- a/debian/rules
+++ b/debian/rules
@@ -3,8 +3,14 @@
override_dh_auto_install:
mkdir -p debian/boca-submission-tools
make -j1 install-submission-tools DESTDIR=debian/boca-submission-tools
- mkdir -p debian/boca
- make -j1 install DESTDIR=debian/boca
+ mkdir -p debian/boca-web
+ make -j1 install-bocaapache DESTDIR=debian/boca-web
+ mkdir -p debian/boca-autojudge
+ make -j1 install-bocaautojudge DESTDIR=debian/boca-autojudge
+ mkdir -p debian/boca-db
+ make -j1 install-bocadb DESTDIR=debian/boca-db
+ mkdir -p debian/boca-common
+ make -j1 install-bocacommon DESTDIR=debian/boca-common
%:
dh $@