548c72a31a59d30bb199fdc357077e8769330e5c
[lhc/ateliers.git] / etc / nginx / site.d / davical / local.sh
1 pool=davical
2 sudo adduser php5_"$pool" www-"$site"
3 sudo adduser www-"$site"-tls www-"$site"
4 sudo adduser php5_"$pool" postgres-data
5
6 sudo install -m 640 -o root -g postgres /dev/stdin \
7 /etc/davical/administration.yml <<-EOF
8 admin_db_host: /run/postgresql
9 admin_db_name: davical
10 admin_db_user: davical_dba
11 app_db_user: davical_app
12 EOF
13
14 sudo sv start postgres
15 while ! sudo -u postgres psql </dev/null
16 do sleep 1; done
17
18 # FROM: /usr/share/davical/dba/create-database.sh
19 IFS= read -r ADMINPW <<-EOF
20 $(sudo cat /root/.davical_pass)
21 EOF
22 AWLDIR="/usr/share/awl"
23 DBADIR="/usr/share/davical/dba"
24 DBNAME="davical"
25
26 export AWL_APPUSER=${pool}_app
27 export AWL_DBAUSER=${pool}_dba
28 export DBA="-U ${AWL_DBAUSER}"
29
30 # Get the major version for PostgreSQL
31 export DBVERSION="`sudo -u postgres psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
32
33 # Hide all the annoying NOTICE... messages
34 export PGOPTIONS='--client-min-messages=warning'
35
36 "$tool"/local/postgresql-role-create "$pool"
37 "$tool"/local/postgresql-user-create "${AWL_APPUSER}"
38 "$tool"/local/postgresql-user-create "${AWL_DBAUSER}"
39
40 if test ! "$pool" = "$(sudo -u postgres psql -AqtX -c \
41 "SELECT datname
42 FROM pg_catalog.pg_database
43 WHERE datname = '$pool'
44 LIMIT 1;")"
45 then
46 "$tool"/local/postgresql-database-create "$pool" "${AWL_DBAUSER}"
47 # Load the AWL base tables and schema management tables
48 sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
49 sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
50 # Load the DAViCal tables
51 sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
52 fi
53
54 sudo -u postgres psql -AqtX "$pool" <<-EOF
55 \set ON_ERROR_STOP on
56 GRANT $pool TO $AWL_DBAUSER;
57 GRANT USAGE ON SCHEMA pg_catalog TO $AWL_DBAUSER;
58 GRANT $pool TO $AWL_APPUSER;
59 GRANT CONNECT ON DATABASE $pool TO $AWL_APPUSER;
60 GRANT USAGE ON SCHEMA pg_catalog TO $AWL_APPUSER;
61 GRANT SELECT ON pg_catalog.pg_attribute TO $AWL_APPUSER;
62 GRANT SELECT ON pg_catalog.pg_class TO $AWL_APPUSER;
63 GRANT SELECT ON pg_catalog.pg_type TO $AWL_APPUSER;
64 EOF
65
66 # Set permissions for the application DB user on the database
67 sudo -u postgres ${DBADIR}/update-davical-database \
68 --appuser "${AWL_APPUSER}" \
69 --dbname "${DBNAME}" \
70 --nopatch \
71 --owner "${AWL_DBAUSER}"
72
73 # Load the required base data
74 test 1 = "$(sudo -u postgres psql -AqtX -U davical_dba davical \
75 -c "SELECT role_no FROM roles WHERE role_no = 1;")" ||
76 sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}"
77 sudo -u postgres psql -qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
78
79 eval home="~www-$pool"
80 sudo install -m 640 -o root -g php5_"$pool" \
81 "$tool"/etc/davical/davical."$local_domainname"-conf.php \
82 /etc/davical/davical."$local_domainname"-conf.php