aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Cesar Ribas <brunoribas@gmail.com>2018-08-23 14:33:16 +0000
committerBruno Cesar Ribas <brunoribas@gmail.com>2018-08-23 14:33:16 +0000
commit59a32fa0c982c04d377be12d358c52bb08f1e421 (patch)
tree3efe6ace34e4e10103c4a7eeae3554a578c7697a
parent70299e4fea03568965e14026e3bf810e9ed2ef08 (diff)
downloadboca-59a32fa0c982c04d377be12d358c52bb08f1e421.tar.gz
boca-59a32fa0c982c04d377be12d358c52bb08f1e421.zip
d/boca-db.{postinst,templates}: New postinst
This postinst will prompt the user for a DB password and will configure postgresql accordingly Signed-off-by: Bruno Cesar Ribas <brunoribas@gmail.com>
-rw-r--r--debian/boca-db.postinst66
-rw-r--r--debian/boca-db.templates11
2 files changed, 77 insertions, 0 deletions
diff --git a/debian/boca-db.postinst b/debian/boca-db.postinst
new file mode 100644
index 0000000..8a36f55
--- /dev/null
+++ b/debian/boca-db.postinst
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+priority=high
+
+case "$1" in
+ configure|reconfigure)
+
+ #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
+ 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