Sun, 02 Sep 2012 18:18:43 +0200
Introduce new version of tcpdump, reorder taglib and cryptbreaker to
the end because they fail to build on Linux, and correct flawed URLs
probably copied from the doxygen build entry.
michael@290 | 1 | #!/bin/sh |
michael@290 | 2 | ## |
michael@290 | 3 | ## davical-setup |
michael@290 | 4 | ## |
michael@290 | 5 | |
michael@290 | 6 | # command line argument sanity check |
michael@290 | 7 | prg="$0" |
michael@290 | 8 | if [ $# -eq 0 ]; then |
michael@290 | 9 | echo "$prg:ERROR: invalid command line" 1>&2 |
michael@290 | 10 | echo "$prg:USAGE: $prg install [<admin-password>]" 1>&2 |
michael@290 | 11 | echo "$prg:USAGE: $prg uninstall" 1>&2 |
michael@290 | 12 | echo "$prg:USAGE: $prg edit" 1>&2 |
michael@290 | 13 | exit 1 |
michael@290 | 14 | fi |
michael@290 | 15 | |
michael@290 | 16 | # database configuration |
michael@290 | 17 | db_dir="@l_prefix@/var/davical/db" |
michael@290 | 18 | db_name="davical" |
michael@290 | 19 | db_user="davical" |
michael@290 | 20 | db_pass="davical" |
michael@290 | 21 | db_sname=`grep "^superuser_database" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 22 | sed -e 's;^ *superuser_database="\(.*\)".*;\1;'` |
michael@290 | 23 | db_suser=`grep "^superuser_username" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 24 | sed -e 's;^ *superuser_username="\(.*\)".*;\1;'` |
michael@290 | 25 | db_spass=`grep "^superuser_password" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 26 | sed -e 's;^ *superuser_password="\(.*\)".*;\1;'` |
michael@290 | 27 | |
michael@290 | 28 | # dispatch operation |
michael@290 | 29 | cmd="${1:-"install"}" |
michael@290 | 30 | shift |
michael@290 | 31 | case "$cmd" in |
michael@290 | 32 | install ) |
michael@290 | 33 | # determine admin password |
michael@290 | 34 | admin_password="$1" |
michael@290 | 35 | if [ ".$admin_password" = . ]; then |
michael@290 | 36 | admin_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`" |
michael@290 | 37 | echo "ATTENTION: using generated \"admin\" password: \"$admin_password\"" 1>&2 |
michael@290 | 38 | fi |
michael@290 | 39 | |
michael@290 | 40 | # create database |
michael@290 | 41 | ( echo "CREATE ROLE $db_user LOGIN ENCRYPTED PASSWORD '$db_pass' NOCREATEDB NOCREATEUSER;" |
michael@290 | 42 | echo "CREATE TABLESPACE $db_name OWNER $db_user LOCATION '$db_dir';" |
michael@396 | 43 | echo "CREATE DATABASE $db_name OWNER $db_user TABLESPACE $db_name TEMPLATE template0 ENCODING 'UTF8';" |
michael@290 | 44 | ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
michael@396 | 45 | |
michael@396 | 46 | # ensure PL/PgSQL language is available |
michael@290 | 47 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 48 | -c "CREATE LANGUAGE plpgsql;" |
michael@290 | 49 | |
michael@290 | 50 | # create schema 1/2 (from original "create_database" script) |
michael@290 | 51 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 52 | -f "@l_prefix@/lib/davical/awl/dba/awl-tables.sql" 2>&1 | grep -v NOTICE |
michael@290 | 53 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 54 | -f "@l_prefix@/lib/davical/awl/dba/schema-management.sql" 2>&1 | grep -v NOTICE |
michael@290 | 55 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 56 | -f "@l_prefix@/lib/davical/davical/dba/davical.sql" 2>&1 | grep -v NOTICE |
michael@290 | 57 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 58 | -f "@l_prefix@/lib/davical/davical/dba/base-data.sql" 2>&1 | grep -v NOTICE |
michael@290 | 59 | |
michael@396 | 60 | # create schema 2/3 (from nowhere, but required by appuser_permissions.txt below) |
michael@396 | 61 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@396 | 62 | -f "@l_prefix@/lib/davical/davical/dba/views/dav_principal.sql" 2>&1 | grep -v NOTICE |
michael@396 | 63 | |
michael@396 | 64 | # create schema 3/3 (from original "update-davical-database" script) |
michael@290 | 65 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 66 | -f "@l_prefix@/lib/davical/davical/dba/supported_locales.sql" 2>&1 | grep -v NOTICE |
michael@290 | 67 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 68 | -f "@l_prefix@/lib/davical/davical/dba/caldav_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
michael@290 | 69 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 70 | -f "@l_prefix@/lib/davical/davical/dba/rrule_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
michael@290 | 71 | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_name" -A -t \ |
michael@290 | 72 | -f "@l_prefix@/lib/davical/davical/dba/appuser_permissions.txt" 2>&1 | grep -v NOTICE |
michael@290 | 73 | |
michael@290 | 74 | # set admin password |
michael@290 | 75 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 76 | -c "UPDATE usr SET password = '**$admin_password' WHERE user_no = 1;" |
michael@290 | 77 | ;; |
michael@290 | 78 | |
michael@290 | 79 | uninstall ) |
michael@396 | 80 | # destroy PL/PgSQL language |
michael@290 | 81 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 82 | -c "DROP LANGUAGE plpgsql CASCADE;" 2>&1 | grep -v NOTICE |
michael@396 | 83 | |
michael@396 | 84 | # destroy database |
michael@290 | 85 | ( echo "DROP DATABASE $db_name;" |
michael@290 | 86 | echo "DROP TABLESPACE $db_name;" |
michael@290 | 87 | echo "DROP ROLE $db_user;" |
michael@290 | 88 | ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
michael@290 | 89 | ;; |
michael@290 | 90 | |
michael@290 | 91 | edit ) |
michael@396 | 92 | # edit database |
michael@290 | 93 | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -U "$db_suser" -d "$db_name" |
michael@290 | 94 | ;; |
michael@290 | 95 | esac |
michael@290 | 96 |