davical/davical-setup.sh

changeset 290
731574048d85
child 295
adc4bc1f8985
     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 +

mercurial