Scalix Update 11.x: Unterschied zwischen den Versionen

Aus Neobikers Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 49: Zeile 49:
</pre>
</pre>


Hier ist das Update-Script, das am Ende ein Script zur Rekonfiguration von Scalix aufruft, da die Konfig-Files beim Update überschrieben werden.
Hier ist das Scalix Update-Script.
'''/usr/src/scx-update.sh'''
'''/usr/src/scx-update.sh'''
<pre>
<pre>
Zeile 55: Zeile 55:
#
#


main_progs="server postgres tomcat-connector tomcat_"
# Initialise some settings
web_apps="swa sac mobile platform"
# get scalix pakage filenames: main_files, web_files, other_files
 
# define config files etc.
scx_pkg ()
scx_initvars ()
{
{
    dpkg -I $1 | awk '/Package/ {print $2}'
  main_progs="server postgres tomcat- tomcat_"
}
  web_apps="swa sac mobile platform"


reconfigure=`dirname $0`/scx-reconfigure.sh
  for f in ${main_progs}; do
      main_files="${main_files} "`ls scalix-${f}*.deb`
      dropme="${dropme} | grep -v $f"
  done


  if [ -n "${main_files}" ]; then
    for f in ${web_apps}; do
        web_files="${web_files} "`ls scalix-${f}*.deb`
        dropme="${dropme} | grep -v $f"
    done


# get actual scalix pakage filenames
    other_files=`eval "ls -1 scalix-*.deb ${dropme}"`
# main_files, web_files, other_files


for f in ${main_progs}; do
    pid=$$
     main_files="${main_files} "`ls scalix-${f}*.deb`
    host=$(hostname)
    dropme="${dropme} | grep -v $f"
    fqdn=$(hostname -f)
done
    short=${host:0:1}${host: -1:1}
for f in ${web_apps}; do
     base=/var/opt/scalix/${short}
    web_files="${web_files} "`ls scalix-${f}*.deb`
    config_files="${base}/webmail/swa.properties \
    dropme="${dropme} | grep -v $f"
      ${base}/caa/scalix.res/config/ubermanager.properties \
done
      ${base}/res/config/res.properties \
other_files=`eval "ls -1 scalix-*.deb ${dropme}"`
      ${base}/platform/platform.properties \
      ${base}/mobile/mobile.properties \
      ${base}/sis/sis.properties"
  else
    echo 'Sorry, no scalix-\*.deb pakages found.'
    echo "Please change to the directory which contains the files and try again."
    exit 1
  fi
}


 
scx_update ()
# Now Update the scalix pakages
{
# The Web applications will be removed first
 
if [ -n "${main_files}" ]; then
     echo "Updating Scalix Server"
     echo "Updating Scalix Server"
     dpkg -i -E ${main_files}
     dpkg -i -E ${main_files}
Zeile 91: Zeile 103:
     echo "Reinstalling Scalix Webapplications:"
     echo "Reinstalling Scalix Webapplications:"
     for file in ${web_files}; do
     for file in ${web_files}; do
         pkg=`scx_pkg ${file}`
         pkg=`scx_pkgname ${file}`
         echo "updating ${pkg}: ${file}"
         echo "updating ${pkg}: ${file}"
         dpkg -r ${pkg}
         dpkg -r ${pkg}
Zeile 100: Zeile 112:
     done
     done


else
    echo "Scalix Configuration files must be reconfigured."
     echo 'Sorry, no scalix-\*.deb pakages found.'
}
     echo "Please change to the directory which contains the files and try again."
 
     exit 1
# reconfigure scalix config files
fi
scx_reconfigure ()
{
    echo "Scalix configuration:"
    echo "---------------------"
     echo "Scalix Password ? "
    read geheim
 
    dbpwd=$geheim
    ldappwd=$geheim
 
    tomcatport=80
 
    for file in ${config_files}; do
      sed -e "s;%LOCALDOMAIN%;$ldomain;g" \
          -e "s;%LOCALHOST%;$fqdn;g" \
          -e "s;%IMAPHOST%;$fqdn;g" \
          -e "s;%SMTPHOST%;$fqdn;g" \
          -e "s;%DBHOST%;$fqdn:5733;g" \
          -e "s;%DBPASSWD%;$dbpwd;g" \
          -e "s;%LDAPPORT%;389;g" \
          -e "s;http://%PLATFORMURL%:8080/api;http://$fqdn/api;g" \
          -e "s;%PLATFORMURL%;http://$fqdn/api;g" \
          -e "s;swa.platform.enabled=false;swa.platform.enabled=true;g" \
          -e "s;__SECURED_MODE__;false;g" \
          -e "s;ubermanager/__FQHN_HOST__@__KERBEROS_REALM__;;g" \
          -e "s;__KERBEROS_REALM__;;g" \
          -e "s;__FQHN_FOR_KDC_HOST__;;g" \
          -e "s;__FQHN_QUERY_SERVER_NAME__;$fqdn;g" \
          -e "s;__UBERMGR_USE_EXTERNAL_AUTH__;false;g" \
          -e "s;__UBERMGR_ALLOW_EXTERNAL_AUTH__;false;g" \
          -e "s;__UBERMGR_MAXLIST_SIZE__;100;g" \
          -e "s;__UBERMGR_MAIL_DOMAINS_LIST__;$ldomain;g" \
          -e "s;__UBERMGR_EXTERNAL_DOMAIN_AUTH_LIST__;;g" \
          -e "s;__CONFIGURED__;true;g" \
          -e "s;__FQHN_FOR_UBERMANAGER__;$fqdn;g" \
          -e "s;__TOMCAT_PORT__;$tomcatport;g" \
          -e "s;localhost;$fqdn;g" \
          -e "s;%SIS-LANGUAGE%;German;g" \
          -e "s;%INDEX-WHITELIST%;$fqdn;g" \
          -e "s;%SEARCH-WHITELIST%;$fqdn;g" \
          ${file} > ${file}.new
        mv $file.new $file
    done
 
    # If SAC Login doesn't work, try this
    # Write Ldappassword to psdata
    if [ ! -e ${base}/caa/scalix.res/config/psdata ]; then
        echo "${ldappwd}" > ${base}/caa/scalix.res/config/psdata
        chown root:root ${base}/caa/scalix.res/config/psdata
        chmod 400 ${base}/caa/scalix.res/config/psdata
    fi
 
    echo "Scalix Config-files are reconfigured."
}
 
# backup scalix config files
scx_backup_config ()
{
    for f in ${config_files}; do
      mkdir -p `dirname ${base}/scalix-config-backup-${pid}${f}`
      cp ${f} ${base}/scalix-config-backup-${pid}${f}
      cp ${f} ${f}.bak
    done
}
 
scx_diff_config ()
{
    for file in ${config_files}; do
 
      sed -e 's/#.*//g' \
          -e '/^$/ D' \
          ${file} | sort > ${file}.new
 
      sed -e 's/#.*//g' \
          -e '/^$/ D' \
          ${base}/scalix-config-backup-${pid}${file} | sort > ${file}.old
 
      if ! diff -q ${file}.old ${file}.new; then
          echo "-------------------------------------------------"
          echo "Check changes in ${file}:"
          diff ${file}.old ${file}.new
          echo ">>> Restore old Configfile [y] ?"
          read a
          if [ -z "$a" -o "$a" == "y" -o "$a" == "Y" ]; then
            cp ${file} ${file}.new.update
            cp ${base}/scalix-config-backup-${pid}${file} ${file}
            echo "restored ${file} !!! <<<"
          fi
          echo "-------------------------------------------------"
          echo ""
      fi
 
    done
 
    echo ">>> Remove temp. Backupfiles (${base}/scalix-config-backup-${pid}) [y] ?"
    read a
    if [ -z "$a" -o "$a" == "y" -o "$a" == "Y" ]; then
          rm -rf ${base}/scalix-config-backup-${pid}
          echo "${base}/scalix-config-backup-${pid} deleted"
    fi
}
 
scx_restart ()
{
    echo "Scalix restart..."
    for f in /etc/rc1.d/K*scalix*; do $f stop; done
    for f in /etc/rc2.d/S*scalix*; do $f start; done
     echo "Scalix restarted."
}
 
# get pakage name (used by dpkg -r <package>)
scx_pkgname ()
{
     dpkg -I $1 | awk '/Package/ {print $2}'
}


echo "We have to reconfigure the Scalix Configuration files."
# Update scalix pakages:
${reconfigure}
# backup config-files
# update scalix pakages: Web applications need 'remove' first
# reconfigure scalix


echo "Scalix Config-files are reconfigured."
scx_initvars
scx_backup_config
scx_update
scx_reconfigure
scx_diff_config
scx_restart
</pre>
</pre>


Dieses Skript rekonfiguriert Scalix nach Änderungen, da die Konfig-Files beim Update überschrieben werden:
Dieses Skript konfiguriert Scalix, z.B. nach einem update, da die Konfig-Files beim Update überschrieben werden.


'''/usr/src/scx-reconfigure.sh'''
'''/usr/src/scx-reconfigure.sh'''

Version vom 20. Juli 2008, 16:43 Uhr

Scalix Update

Scalix Sourcen laden und updaten.

scx:~# cd /usr/src
wget -c http://downloads.scalix.com/.community/11.4/scalix-11.4.0-GA-unsupported-debian-intel.bin
sh ./scalix-11.4.0-GA-unsupported-debian-intel.bin

cd scalix-debian-11.4.0-GA/software/scalix_server

/usr/src/scx-update.sh

Bei 11.4 war mal wieder ein Paket leicht fehlerhaft, ich zeige hier beispielhaft, wie solche Fehler korrigiert werden können. Nach Fehlerbereinigung einfach das Paket entfernen und neu installieren.

scx:/usr/src# cd scalix-debian-11.4.0-GA/software/scalix_server/

mkdir -p old new/DEBIAN
mv scalix-iconv-extras_1.2-1_i386.deb old
dpkg -x old/scalix-iconv-extras_1.2-1_i386.deb new
dpkg -e old/scalix-iconv-extras_1.2-1_i386.deb new/DEBIAN

vi new/DEBIAN/preinst
# ... Zeile 3 korrigieren
    if [ -n "$1" ]; then
# ...

vi new/DEBIAN/postrm
# ... Zeile 2 korrigieren
    if [ -z "$1" ]; then
# ...

# Jetzt das korrigierte Paket bauen
dpkg -b new scalix-iconv-extras_1.2-1_i386.deb 

# Fertig :-)
dpkg -r scalix-iconv-extras
dpkg -i scalix-iconv-extras_1.2-1_i386.deb

Das Update-Script scx-update.sh (und scx-reconfigure.sh) habe ich unter /usr/src liegen, da ich dort auch die verschiedenen scalix-sourcen installiert habe:

scx:/usr/src# ls
scalix-11.3.0-U1-GA-unsupported-debian-intel.bin
scalix-11.4.0-GA-unsupported-debian-intel.bin
scalix-debian-11.3.0-GA/
scalix-debian-11.4.0-GA/
scx-install.sh*
scx-reconfigure.sh*
scx-update.sh*

Hier ist das Scalix Update-Script. /usr/src/scx-update.sh

#!/bin/sh
#

# Initialise some settings
# get scalix pakage filenames: main_files, web_files, other_files
# define config files etc.
scx_initvars ()
{
  main_progs="server postgres tomcat- tomcat_"
  web_apps="swa sac mobile platform"

  for f in ${main_progs}; do
      main_files="${main_files} "`ls scalix-${f}*.deb`
      dropme="${dropme} | grep -v $f"
  done

  if [ -n "${main_files}" ]; then
    for f in ${web_apps}; do
        web_files="${web_files} "`ls scalix-${f}*.deb`
        dropme="${dropme} | grep -v $f"
    done

    other_files=`eval "ls -1 scalix-*.deb ${dropme}"`

    pid=$$
    host=$(hostname)
    fqdn=$(hostname -f)
    short=${host:0:1}${host: -1:1}
    base=/var/opt/scalix/${short}
    config_files="${base}/webmail/swa.properties \
       ${base}/caa/scalix.res/config/ubermanager.properties \
       ${base}/res/config/res.properties \
       ${base}/platform/platform.properties \
       ${base}/mobile/mobile.properties \
       ${base}/sis/sis.properties"
  else
    echo 'Sorry, no scalix-\*.deb pakages found.'
    echo "Please change to the directory which contains the files and try again."
    exit 1
  fi
}

scx_update ()
{
    echo "Updating Scalix Server"
    dpkg -i -E ${main_files}
    dpkg -i -E ${other_files}

    echo ""
    echo "Reinstalling Scalix Webapplications:"
    for file in ${web_files}; do
        pkg=`scx_pkgname ${file}`
        echo "updating ${pkg}: ${file}"
        dpkg -r ${pkg}
        if ! dpkg -i ${file} ; then
          echo ">>> Warning: dpkg returned an error. <<<"
          echo ""
        fi
    done

    echo "Scalix Configuration files must be reconfigured."
}

# reconfigure scalix config files
scx_reconfigure ()
{
    echo "Scalix configuration:"
    echo "---------------------"
    echo "Scalix Password ? "
    read geheim

    dbpwd=$geheim
    ldappwd=$geheim

    tomcatport=80

    for file in ${config_files}; do
      sed -e "s;%LOCALDOMAIN%;$ldomain;g" \
          -e "s;%LOCALHOST%;$fqdn;g" \
          -e "s;%IMAPHOST%;$fqdn;g" \
          -e "s;%SMTPHOST%;$fqdn;g" \
          -e "s;%DBHOST%;$fqdn:5733;g" \
          -e "s;%DBPASSWD%;$dbpwd;g" \
          -e "s;%LDAPPORT%;389;g" \
          -e "s;http://%PLATFORMURL%:8080/api;http://$fqdn/api;g" \
          -e "s;%PLATFORMURL%;http://$fqdn/api;g" \
          -e "s;swa.platform.enabled=false;swa.platform.enabled=true;g" \
          -e "s;__SECURED_MODE__;false;g" \
          -e "s;ubermanager/__FQHN_HOST__@__KERBEROS_REALM__;;g" \
          -e "s;__KERBEROS_REALM__;;g" \
          -e "s;__FQHN_FOR_KDC_HOST__;;g" \
          -e "s;__FQHN_QUERY_SERVER_NAME__;$fqdn;g" \
          -e "s;__UBERMGR_USE_EXTERNAL_AUTH__;false;g" \
          -e "s;__UBERMGR_ALLOW_EXTERNAL_AUTH__;false;g" \
          -e "s;__UBERMGR_MAXLIST_SIZE__;100;g" \
          -e "s;__UBERMGR_MAIL_DOMAINS_LIST__;$ldomain;g" \
          -e "s;__UBERMGR_EXTERNAL_DOMAIN_AUTH_LIST__;;g" \
          -e "s;__CONFIGURED__;true;g" \
          -e "s;__FQHN_FOR_UBERMANAGER__;$fqdn;g" \
          -e "s;__TOMCAT_PORT__;$tomcatport;g" \
          -e "s;localhost;$fqdn;g" \
          -e "s;%SIS-LANGUAGE%;German;g" \
          -e "s;%INDEX-WHITELIST%;$fqdn;g" \
          -e "s;%SEARCH-WHITELIST%;$fqdn;g" \
          ${file} > ${file}.new
        mv $file.new $file
    done

    # If SAC Login doesn't work, try this
    # Write Ldappassword to psdata
    if [ ! -e ${base}/caa/scalix.res/config/psdata ]; then
        echo "${ldappwd}" > ${base}/caa/scalix.res/config/psdata
        chown root:root ${base}/caa/scalix.res/config/psdata
        chmod 400 ${base}/caa/scalix.res/config/psdata
    fi

    echo "Scalix Config-files are reconfigured."
}

# backup scalix config files
scx_backup_config ()
{
    for f in ${config_files}; do
       mkdir -p `dirname ${base}/scalix-config-backup-${pid}${f}`
       cp ${f} ${base}/scalix-config-backup-${pid}${f}
       cp ${f} ${f}.bak
    done
}

scx_diff_config ()
{
    for file in ${config_files}; do

      sed -e 's/#.*//g' \
          -e '/^$/ D' \
          ${file} | sort > ${file}.new

      sed -e 's/#.*//g' \
          -e '/^$/ D' \
          ${base}/scalix-config-backup-${pid}${file} | sort > ${file}.old

      if ! diff -q ${file}.old ${file}.new; then
          echo "-------------------------------------------------"
          echo "Check changes in ${file}:"
          diff ${file}.old ${file}.new
          echo ">>> Restore old Configfile [y] ?"
          read a
          if [ -z "$a" -o "$a" == "y" -o "$a" == "Y" ]; then
            cp ${file} ${file}.new.update
            cp ${base}/scalix-config-backup-${pid}${file} ${file}
            echo "restored ${file} !!! <<<"
          fi
          echo "-------------------------------------------------"
          echo ""
      fi

    done

    echo ">>> Remove temp. Backupfiles (${base}/scalix-config-backup-${pid}) [y] ?"
    read a
    if [ -z "$a" -o "$a" == "y" -o "$a" == "Y" ]; then
          rm -rf ${base}/scalix-config-backup-${pid}
          echo "${base}/scalix-config-backup-${pid} deleted"
    fi
}

scx_restart ()
{
    echo "Scalix restart..."
    for f in /etc/rc1.d/K*scalix*; do $f stop; done
    for f in /etc/rc2.d/S*scalix*; do $f start; done
    echo "Scalix restarted."
}

# get pakage name (used by dpkg -r <package>)
scx_pkgname ()
{
    dpkg -I $1 | awk '/Package/ {print $2}'
}

# Update scalix pakages:
# backup config-files
# update scalix pakages: Web applications need 'remove' first
# reconfigure scalix

scx_initvars
scx_backup_config
scx_update
scx_reconfigure
scx_diff_config
scx_restart

Dieses Skript konfiguriert Scalix, z.B. nach einem update, da die Konfig-Files beim Update überschrieben werden.

/usr/src/scx-reconfigure.sh

#!/bin/sh
#

echo "Scalix Password ? "
read geheim

dbpwd=$geheim
ldappwd=$geheim

tomcatport=80
ldomain=$(hostname -d)
host=$(hostname)
fqdn=$(hostname -f)
short=${host:0:1}${host: -1:1}

base=/var/opt/scalix/${short}
files="$base/webmail/swa.properties \
       $base/caa/scalix.res/config/ubermanager.properties \
       $base/res/config/res.properties \
       $base/platform/platform.properties \
       $base/mobile/mobile.properties \
       $base/sis/sis.properties"

for file in $files; do
  sed -e "s;%LOCALDOMAIN%;$ldomain;g" \
    -e "s;%LOCALHOST%;$fqdn;g" \
    -e "s;%IMAPHOST%;$fqdn;g" \
    -e "s;%SMTPHOST%;$fqdn;g" \
    -e "s;%DBHOST%;$fqdn:5733;g" \
    -e "s;%DBPASSWD%;$dbpwd;g" \
    -e "s;%LDAPPORT%;389;g" \
    -e "s;http://%PLATFORMURL%:8080/api;http://$fqdn/api;g" \
    -e "s;%PLATFORMURL%;http://$fqdn/api;g" \
    -e "s;swa.platform.enabled=false;swa.platform.enabled=true;g" \
    -e "s;__SECURED_MODE__;false;g" \
    -e "s;ubermanager/__FQHN_HOST__@__KERBEROS_REALM__;;g" \
    -e "s;__KERBEROS_REALM__;;g" \
    -e "s;__FQHN_FOR_KDC_HOST__;;g" \
    -e "s;__FQHN_QUERY_SERVER_NAME__;$fqdn;g" \
    -e "s;__UBERMGR_USE_EXTERNAL_AUTH__;false;g" \
    -e "s;__UBERMGR_ALLOW_EXTERNAL_AUTH__;false;g" \
    -e "s;__UBERMGR_MAXLIST_SIZE__;100;g" \
    -e "s;__UBERMGR_MAIL_DOMAINS_LIST__;$ldomain;g" \
    -e "s;__UBERMGR_EXTERNAL_DOMAIN_AUTH_LIST__;;g" \
    -e "s;__CONFIGURED__;true;g" \
    -e "s;__FQHN_FOR_UBERMANAGER__;$fqdn;g" \
    -e "s;__TOMCAT_PORT__;$tomcatport;g" \
    -e "s;localhost;$fqdn;g" \
    -e "s;%SIS-LANGUAGE%;German;g" \
    -e "s;%INDEX-WHITELIST%;$fqdn;g" \
    -e "s;%SEARCH-WHITELIST%;$fqdn;g" \
    $file > $file.neu
  mv $file.neu $file
done

# If SAC Login doesn't work, try this
# Write Ldappassword to psdata
if [ ! -e ${base}/caa/scalix.res/config/psdata ]; then
    echo "$ldappwd" > ${base}/caa/scalix.res/config/psdata
    chown root:root ${base}/caa/scalix.res/config/psdata
    chmod 400 ${base}/caa/scalix.res/config/psdata
fi

for f in /etc/rc1.d/K*scalix*; do $f stop; done
for f in /etc/rc2.d/S*scalix*; do $f start; done