9 source /usr/share/debconf/confmodule
14 tput cup $1 $2 # Cursor positionieren
15 tput el # Rest der Zeile löschen
16 shift 2 # Parameter für die Koordinaten entfernen
17 echo -n $*" " # Rest der Parameterliste ausgeben
23 if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
25 #writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
26 #writeln 2 1 1. plpgsql.so suchen
28 #Datei plpgsql.so suchen
30 #Mit Paketmanager (RPM oder APT) suchen
31 #PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
32 #PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
34 if [ "$PLPGSQL#" == "#" ]; then
35 #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
36 # writeln 3 3 --locate
37 tmp=`locate plpgsql.so 2>/dev/null`
38 PLPGSQL=`echo $tmp | cut -d " " -f 1`
40 if [ "$PLPGSQL#" == "#" ]; then
41 #noch nicht gefunden, also mit find suchen
42 # writeln 3 15 --find /usr/lib
43 tmp=`find /usr/lib -name plpgsql.so -type f`
44 PLPGSQL=`echo $tmp | cut -d " " -f 1`
46 if [ "$PLPGSQL#" == "#" ]; then
48 # writeln 4 1 'plpgsql.so' nicht gefunden.
50 # writeln 5 1 "Bitte den Pfad eingeben: "
53 [ "$PLPGSQL#" != "#" ] && [ -f $PLPGSQL ] && break
57 #writeln 6 1 ok. 'plpgsql.so' gefunden
59 #Kann der User postgres die db erreichen
60 cnt=`ps aux | grep postgres | wc -l`
61 if [ $cnt -eq 0 ]; then
64 echo Die postgreSQL-Datebbank ist nicht gestartet!
68 v7=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+7\.[0-9]\.[0-9]" | wc -l"`
69 v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[0-9]\.[0-9]" | wc -l"`
70 #cnt=`echo $v7 + $v8 | bc -l`
71 if [ $v8 -eq 0 ]; then
72 if [ $v7 -eq 0 ]; then
75 echo User postgres konnte die Datenbank nicht ansprechen
83 # writeln 1 1 Datenbank Version 7x konnte erreicht werden.
89 # writeln 1 1 Datenbank Version 8x konnte erreicht werden.
92 echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
93 echo "AS '$PLPGSQL', 'plpgsql_call_handler'" >> lxdbinst.sql
94 echo "LANGUAGE c;" >> lxdbinst.sql
95 echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
97 #writeln 2 1 Datenbankbenutzer einrichten
99 #writeln 3 1 "Bitte den Datenbank-Benutzernamen (Kleinbuchstaben) eingeben [lxoffice]: "
102 #if [ "$LXOUSER#" == "#" ]; then LXOUSER="lxoffice"; fi
105 # writeln 4 1 "Bitte ein Kennwort eingeben : "
108 if ! [ "$USRPWD#" == "#" ]; then break; fi
114 db_get lx-office-erp/lx-office-erp-user-postgresql-password
118 echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
119 echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
120 echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
122 su postgres -c "psql template1 < lxdbinst.sql"
124 echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
126 #writeln 11 1 Datenbank fuer Lx-Office vorbereitet
128 #writeln 12 1 Datenbankberechtigung einrichten
129 #wo ist die pg_hba.conf
130 #writeln 13 3 --find erst /etc dann /var/lib
131 tmp=`find /etc -name pg_hba.conf -type f`
132 [ "$tmp#" == "#" ] && tmp=`find /var/lib -name pg_hba.conf -type f`
133 PGHBA=`echo $tmp | cut -d " " -f 1`
135 if [ "$PGHBA#" == "#" ]; then
137 # writeln 14 1 'pg_hba.conf' nicht gefunden.
139 # writeln 15 1 "Bitte den Pfad eingeben: "
142 [ "$PGHBA#" != "#" ] && [ -f $PGHBA ] && break
146 #writeln 16 1 ok. 'pg_hba.conf' gefunden
148 cnt=`grep $LXOUSER $PGHBA | wc -l `
150 if [ $cnt -eq 0 ]; then
152 echo "local all $LXOUSER password" > $PGHBA
153 echo "host all $LXOUSER 127.0.0.1 255.255.255.255 password" >> $PGHBA
154 cat $PGHBA.org >> $PGHBA
157 CONFDIR=`dirname $PGHBA`
159 #postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
160 if ! [ -f $CONFDIR/postgresql.conf ]; then
161 #doch nicht da, dann fragen
163 # writeln 13 1 'postgresql.conf' nicht gefunden.
165 # writeln 14 1 "Bitte den Pfad eingeben: "
168 [ "$PGCONF#" != "#" ] && [ -f $PGCONF ] && break
171 CONFDIR=`dirname $PGCONF`
174 mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
175 if ! [ $v7 -eq 0 ]; then
176 #Nur bei der V7.x: tcpip_socket = true
177 sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
178 cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
179 if [ $cnt -eq 0 ]; then
180 cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
181 echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
184 #Bei der V8.x OID einschalten.
185 sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
186 cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
187 if [ $cnt -eq 0 ]; then
188 cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
189 echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
194 tmp=`ls /etc/init.d/postgres*`
195 PGSQL=`echo $tmp | cut -d " " -f 1`
197 #writeln 18 1 Datenbank neu starten
202 #writeln 20 12 ok. Das sollte es gewesen sein.