1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/davical/davical-setup.sh Mon Nov 22 12:39:58 2010 +0100 1.3 @@ -0,0 +1,86 @@ 1.4 +#!/bin/sh 1.5 +## 1.6 +## davical-setup 1.7 +## 1.8 + 1.9 +# command line argument sanity check 1.10 +prg="$0" 1.11 +if [ $# -eq 0 ]; then 1.12 + echo "$prg:ERROR: invalid command line" 1>&2 1.13 + echo "$prg:USAGE: $prg install [<admin-password>]" 1>&2 1.14 + echo "$prg:USAGE: $prg uninstall" 1>&2 1.15 + echo "$prg:USAGE: $prg edit" 1>&2 1.16 + exit 1 1.17 +fi 1.18 + 1.19 +# database configuration 1.20 +db_dir="@l_prefix@/var/davical/db" 1.21 +db_name="davical" 1.22 +db_user="davical" 1.23 +db_pass="davical" 1.24 +db_sname=`grep "^superuser_database" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ 1.25 + sed -e 's;^ *superuser_database="\(.*\)".*;\1;'` 1.26 +db_suser=`grep "^superuser_username" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ 1.27 + sed -e 's;^ *superuser_username="\(.*\)".*;\1;'` 1.28 +db_spass=`grep "^superuser_password" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ 1.29 + sed -e 's;^ *superuser_password="\(.*\)".*;\1;'` 1.30 + 1.31 +# dispatch operation 1.32 +cmd="${1:-"install"}" 1.33 +shift 1.34 +case "$cmd" in 1.35 + install ) 1.36 + # determine admin password 1.37 + admin_password="$1" 1.38 + if [ ".$admin_password" = . ]; then 1.39 + admin_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`" 1.40 + echo "ATTENTION: using generated \"admin\" password: \"$admin_password\"" 1>&2 1.41 + fi 1.42 + 1.43 + # create database 1.44 + ( echo "CREATE ROLE $db_user LOGIN ENCRYPTED PASSWORD '$db_pass' NOCREATEDB NOCREATEUSER;" 1.45 + echo "CREATE TABLESPACE $db_name OWNER $db_user LOCATION '$db_dir';" 1.46 + echo "CREATE DATABASE $db_name OWNER $db_user TABLESPACE $db_name ENCODING 'UTF8';" 1.47 + ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- 1.48 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ 1.49 + -c "CREATE LANGUAGE plpgsql;" 1.50 + 1.51 + # create schema 1/2 (from original "create_database" script) 1.52 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.53 + -f "@l_prefix@/lib/davical/awl/dba/awl-tables.sql" 2>&1 | grep -v NOTICE 1.54 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.55 + -f "@l_prefix@/lib/davical/awl/dba/schema-management.sql" 2>&1 | grep -v NOTICE 1.56 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.57 + -f "@l_prefix@/lib/davical/davical/dba/davical.sql" 2>&1 | grep -v NOTICE 1.58 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.59 + -f "@l_prefix@/lib/davical/davical/dba/base-data.sql" 2>&1 | grep -v NOTICE 1.60 + 1.61 + # create schema 2/2 (from original "update-davical-database" script) 1.62 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.63 + -f "@l_prefix@/lib/davical/davical/dba/supported_locales.sql" 2>&1 | grep -v NOTICE 1.64 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.65 + -f "@l_prefix@/lib/davical/davical/dba/caldav_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' 1.66 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ 1.67 + -f "@l_prefix@/lib/davical/davical/dba/rrule_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' 1.68 + PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_name" -A -t \ 1.69 + -f "@l_prefix@/lib/davical/davical/dba/appuser_permissions.txt" 2>&1 | grep -v NOTICE 1.70 + 1.71 + # set admin password 1.72 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ 1.73 + -c "UPDATE usr SET password = '**$admin_password' WHERE user_no = 1;" 1.74 + ;; 1.75 + 1.76 + uninstall ) 1.77 + PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ 1.78 + -c "DROP LANGUAGE plpgsql CASCADE;" 2>&1 | grep -v NOTICE 1.79 + ( echo "DROP DATABASE $db_name;" 1.80 + echo "DROP TABLESPACE $db_name;" 1.81 + echo "DROP ROLE $db_user;" 1.82 + ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- 1.83 + ;; 1.84 + 1.85 + edit ) 1.86 + PGPASSWORD="$db_spass" @l_prefix@/bin/psql -U "$db_suser" -d "$db_name" 1.87 + ;; 1.88 +esac 1.89 +