|
1 #!/bin/sh |
|
2 ## |
|
3 ## davical-setup |
|
4 ## |
|
5 |
|
6 # command line argument sanity check |
|
7 prg="$0" |
|
8 if [ $# -eq 0 ]; then |
|
9 echo "$prg:ERROR: invalid command line" 1>&2 |
|
10 echo "$prg:USAGE: $prg install [<admin-password>]" 1>&2 |
|
11 echo "$prg:USAGE: $prg uninstall" 1>&2 |
|
12 echo "$prg:USAGE: $prg edit" 1>&2 |
|
13 exit 1 |
|
14 fi |
|
15 |
|
16 # database configuration |
|
17 db_dir="@l_prefix@/var/davical/db" |
|
18 db_name="davical" |
|
19 db_user="davical" |
|
20 db_pass="davical" |
|
21 db_sname=`grep "^superuser_database" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
|
22 sed -e 's;^ *superuser_database="\(.*\)".*;\1;'` |
|
23 db_suser=`grep "^superuser_username" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
|
24 sed -e 's;^ *superuser_username="\(.*\)".*;\1;'` |
|
25 db_spass=`grep "^superuser_password" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
|
26 sed -e 's;^ *superuser_password="\(.*\)".*;\1;'` |
|
27 |
|
28 # dispatch operation |
|
29 cmd="${1:-"install"}" |
|
30 shift |
|
31 case "$cmd" in |
|
32 install ) |
|
33 # determine admin password |
|
34 admin_password="$1" |
|
35 if [ ".$admin_password" = . ]; then |
|
36 admin_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`" |
|
37 echo "ATTENTION: using generated \"admin\" password: \"$admin_password\"" 1>&2 |
|
38 fi |
|
39 |
|
40 # create database |
|
41 ( echo "CREATE ROLE $db_user LOGIN ENCRYPTED PASSWORD '$db_pass' NOCREATEDB NOCREATEUSER;" |
|
42 echo "CREATE TABLESPACE $db_name OWNER $db_user LOCATION '$db_dir';" |
|
43 echo "CREATE DATABASE $db_name OWNER $db_user TABLESPACE $db_name ENCODING 'UTF8';" |
|
44 ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
|
45 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
|
46 -c "CREATE LANGUAGE plpgsql;" |
|
47 |
|
48 # create schema 1/2 (from original "create_database" script) |
|
49 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
50 -f "@l_prefix@/lib/davical/awl/dba/awl-tables.sql" 2>&1 | grep -v NOTICE |
|
51 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
52 -f "@l_prefix@/lib/davical/awl/dba/schema-management.sql" 2>&1 | grep -v NOTICE |
|
53 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
54 -f "@l_prefix@/lib/davical/davical/dba/davical.sql" 2>&1 | grep -v NOTICE |
|
55 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
56 -f "@l_prefix@/lib/davical/davical/dba/base-data.sql" 2>&1 | grep -v NOTICE |
|
57 |
|
58 # create schema 2/2 (from original "update-davical-database" script) |
|
59 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
60 -f "@l_prefix@/lib/davical/davical/dba/supported_locales.sql" 2>&1 | grep -v NOTICE |
|
61 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
62 -f "@l_prefix@/lib/davical/davical/dba/caldav_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
|
63 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
|
64 -f "@l_prefix@/lib/davical/davical/dba/rrule_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
|
65 PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_name" -A -t \ |
|
66 -f "@l_prefix@/lib/davical/davical/dba/appuser_permissions.txt" 2>&1 | grep -v NOTICE |
|
67 |
|
68 # set admin password |
|
69 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
|
70 -c "UPDATE usr SET password = '**$admin_password' WHERE user_no = 1;" |
|
71 ;; |
|
72 |
|
73 uninstall ) |
|
74 PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
|
75 -c "DROP LANGUAGE plpgsql CASCADE;" 2>&1 | grep -v NOTICE |
|
76 ( echo "DROP DATABASE $db_name;" |
|
77 echo "DROP TABLESPACE $db_name;" |
|
78 echo "DROP ROLE $db_user;" |
|
79 ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
|
80 ;; |
|
81 |
|
82 edit ) |
|
83 PGPASSWORD="$db_spass" @l_prefix@/bin/psql -U "$db_suser" -d "$db_name" |
|
84 ;; |
|
85 esac |
|
86 |