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.