Ajout : DAViCal + CalDavZAP + AgenDAV .
[lhc/ateliers.git] / etc / nginx / site.d / davical / local.sh
diff --git a/etc/nginx/site.d/davical/local.sh b/etc/nginx/site.d/davical/local.sh
new file mode 100644 (file)
index 0000000..548c72a
--- /dev/null
@@ -0,0 +1,82 @@
+pool=davical
+sudo adduser php5_"$pool" www-"$site"
+sudo adduser www-"$site"-tls www-"$site"
+sudo adduser php5_"$pool" postgres-data
+
+sudo install -m 640 -o root -g postgres /dev/stdin \
+ /etc/davical/administration.yml <<-EOF
+       admin_db_host: /run/postgresql
+       admin_db_name: davical
+       admin_db_user: davical_dba
+       app_db_user: davical_app
+       EOF
+
+sudo sv start postgres
+while ! sudo -u postgres psql </dev/null
+do sleep 1; done
+
+# FROM: /usr/share/davical/dba/create-database.sh
+IFS= read -r ADMINPW <<-EOF
+       $(sudo cat /root/.davical_pass)
+       EOF
+AWLDIR="/usr/share/awl"
+DBADIR="/usr/share/davical/dba"
+DBNAME="davical"
+
+export AWL_APPUSER=${pool}_app
+export AWL_DBAUSER=${pool}_dba
+export DBA="-U ${AWL_DBAUSER}"
+
+# Get the major version for PostgreSQL
+export DBVERSION="`sudo -u postgres psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
+
+# Hide all the annoying NOTICE... messages
+export PGOPTIONS='--client-min-messages=warning'
+
+"$tool"/local/postgresql-role-create "$pool"
+"$tool"/local/postgresql-user-create "${AWL_APPUSER}"
+"$tool"/local/postgresql-user-create "${AWL_DBAUSER}"
+
+if test ! "$pool" = "$(sudo -u postgres psql -AqtX -c \
+ "SELECT datname
+       FROM pg_catalog.pg_database
+       WHERE datname = '$pool'
+       LIMIT 1;")"
+ then
+       "$tool"/local/postgresql-database-create "$pool" "${AWL_DBAUSER}"
+       # Load the AWL base tables and schema management tables
+       sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
+       sudo -u postgres psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
+       # Load the DAViCal tables
+       sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
+ fi
+
+sudo -u postgres psql -AqtX "$pool" <<-EOF
+       \set ON_ERROR_STOP on
+       GRANT $pool                                     TO $AWL_DBAUSER;
+       GRANT USAGE   ON SCHEMA pg_catalog              TO $AWL_DBAUSER;
+       GRANT $pool                                     TO $AWL_APPUSER;
+       GRANT CONNECT ON DATABASE $pool                 TO $AWL_APPUSER;
+       GRANT USAGE   ON SCHEMA pg_catalog              TO $AWL_APPUSER;
+       GRANT SELECT  ON        pg_catalog.pg_attribute TO $AWL_APPUSER;
+       GRANT SELECT  ON        pg_catalog.pg_class     TO $AWL_APPUSER;
+       GRANT SELECT  ON        pg_catalog.pg_type      TO $AWL_APPUSER;
+       EOF
+
+# Set permissions for the application DB user on the database
+sudo -u postgres ${DBADIR}/update-davical-database \
+ --appuser "${AWL_APPUSER}" \
+ --dbname "${DBNAME}" \
+ --nopatch \
+ --owner "${AWL_DBAUSER}"
+
+# Load the required base data
+test 1 = "$(sudo -u postgres psql -AqtX -U davical_dba davical \
+ -c "SELECT role_no FROM roles WHERE role_no = 1;")" ||
+sudo -u postgres psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}"
+sudo -u postgres psql -qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
+
+eval home="~www-$pool"
+sudo install -m 640 -o root -g php5_"$pool" \
+ "$tool"/etc/davical/davical."$local_domainname"-conf.php \
+        /etc/davical/davical."$local_domainname"-conf.php