+++ /dev/null
-#!/bin/bash
-#set -x
-function writeln()
-{
- tput cup $1 $2 # Cursor positionieren
- tput el # Rest der Zeile löschen
- shift 2 # Parameter für die Koordinaten entfernen
- echo -n $*" " # Rest der Parameterliste ausgeben
-}
-
-tput clear
-
-#Als root anmelden
-if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
-
-writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
-writeln 2 1 1. plpgsql.so suchen
-PLPGSQL=""
-#Datei plpgsql.so suchen
-
-#Mit Paketmanager (RPM oder APT) suchen
-#PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
-#PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
-
-if [ "$PLPGSQL#" == "#" ]; then
- #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
- writeln 3 3 --locate
- tmp=`locate plpgsql.so 2>/dev/null`
- PLPGSQL=`echo $tmp | cut -d " " -f 1`
-fi
-if [ "$PLPGSQL#" == "#" ]; then
- #noch nicht gefunden, also mit find suchen
- writeln 3 15 --find /usr/lib
- tmp=`find /usr/lib -name plpgsql.so -type f`
- PLPGSQL=`echo $tmp | cut -d " " -f 1`
-fi
-if [ "$PLPGSQL#" == "#" ]; then
- while :; do
- writeln 4 1 'plpgsql.so' nicht gefunden.
- tput bold
- writeln 5 1 "Bitte den Pfad eingeben: "
- tput rmso
- read PLPGSQL
- [ "$PLPGSQL#" != "#" ] && [ -f $PLPGSQL ] && break
- tput bel
- done
-fi
-writeln 6 1 ok. 'plpgsql.so' gefunden
-
-#Kann der User postgres die db erreichen
-cnt=`ps aux | grep postgres | wc -l`
-if [ $cnt -eq 0 ]; then
- tput bel
- tput bold
- echo Die postgreSQL-Datebbank ist nicht gestartet
- tput rmso
- exit 1
-fi
-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"`
-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"`
-#cnt=`echo $v7 + $v8 | bc -l`
-if [ $v8 -eq 0 ]; then
- if [ $v7 -eq 0 ]; then
- tput bel
- tput bold
- echo User postgres konnte die Datenbank nicht ansprechen
- tput rmso
- exit 1;
- else
- tput clear
- writeln 1 1 Datenbank Version 7x konnte erreicht werden.
- fi
-else
- tput clear
- writeln 1 1 Datenbank Verion 8x konnte erreicht werden.
-fi
-
-echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
-echo "AS '$PLPGSQL', 'plpgsql_call_handler'" >> lxdbinst.sql
-echo "LANGUAGE c;" >> lxdbinst.sql
-echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
-
-writeln 2 1 Datebankbenutzer einrichten
-tput bold
-writeln 3 1 "Bitte den Datenbank-Benutzernamen eingeben [lxoffice]: "
-tput rmso
-read LXOUSER
-if [ "$LXOUSER#" == "#" ]; then LXOUSER="lxoffice"; fi
-while :; do
- tput bold
- writeln 4 1 "Bitte ein Kennwort eingeben : "
- tput rmso
- read USRPWD
- if ! [ "$USRPWD#" == "#" ]; then break; fi
- tput bel
-done;
-
-echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
-echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
-echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
-
-su postgres -c "psql template1 < lxdbinst.sql"
-
-echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
-
-writeln 11 1 Datenbank fuer Lx-Office vorbereitet
-
-writeln 12 1 Datenbankberechtigung einrichten
-#wo ist die pg_hba.conf
-writeln 13 3 --find erst /etc dann /var/lib
-tmp=`find /etc -name pg_hba.conf -type f`
-[ "$tmp#" == "#" ] && tmp=`find /var/lib -name pg_hba.conf -type f`
-PGHBA=`echo $tmp | cut -d " " -f 1`
-
-if [ "$PGHBA#" == "#" ]; then
- while :; do
- writeln 14 1 'pg_hba.conf' nicht gefunden.
- tput bold
- writeln 15 1 "Bitte den Pfad eingeben: "
- tput rmso
- read PGHBA
- [ "$PGHBA#" != "#" ] && [ -f $PGHBA ] && break
- tput bel
- done
-fi
-writeln 16 1 ok. 'pg_hba.conf' gefunden
-
-cnt=`grep $LXOUSER $PGHBA | wc -l `
-
-if [ $cnt -eq 0 ]; then
- mv $PGHBA $PGHBA.org
- echo "local all $LXOUSER password" > $PGHBA
- echo "host all $LXOUSER 127.0.0.1 255.255.255.255 password" >> $PGHBA
- cat $PGHBA.org >> $PGHBA
-fi
-
-CONFDIR=`dirname $PGHBA`
-
-#postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
-if ! [ -f $CONFDIR/postgresql.conf ]; then
- #doch nicht da, dann fragen
- while :; do
- writeln 13 1 'postgresql.conf' nicht gefunden.
- tput bold
- writeln 14 1 "Bitte den Pfad eingeben: "
- tput rmso
- read PGCONF
- [ "$PGCONF#" != "#" ] && [ -f $PGCONF ] && break
- tput bel
- done
- CONFDIR=`dirname $PGCONF`
-fi
-
-mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
-if ! [ $v7 -eq 0 ]; then
- #Nur bei der V7.x: tcpip_socket = true
- sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
- cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
- if [ $cnt -eq 0 ]; then
- cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
- echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
- fi
-else
- #Bei der V8.x OID einschalten.
- sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
- cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
- if [ $cnt -eq 0 ]; then
- cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
- echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
- fi
-fi
-
-
-tmp=`ls /etc/init.d/postgres*`
-PGSQL=`echo $tmp | cut -d " " -f 1`
-
-writeln 18 1 Datenbank neu starten
-$PGSQL restart
-
-tput bold
-tput smso
-writeln 20 12 ok. Das solltes es gewesen sein.
-tput rmso
-tput rmso
-echo