Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:webapps:horde:postinstall]] 

Postinstall-Script zu Horde 5

Das Script geht von einer frisch installierten Horde 5.1.4 in /var/www/horde aus. Ggf. müssen noch alte, horde3-Konfigurationen bei Apache gelöscht werden.
Das Script legt von der Horde-Konfiguration eine Backup-Datei an, die man ggf. zurückspielen kann: /etc/horde5/horde/conf.bak.php.

Benutzung auf eigenes Risiko!
horde-postinstall.sh
#! /bin/bash
#
# Version 0.2 - Mai 2014
# Script verschiebt alle Conf-Dateien von Horde nach /etc/horde5
# und richtet die Konfiguration von Horde5 fuer linuxmuster-net 6.0 ein.
# Getestet für Horde 5 Version 5.1.4
#
# Pfade "wwwdir" und "etcdir" koennen angepasst werden.
 
wwwdir="/var/www/horde"
etcdir="/etc/horde5"
 
###########################################################################
 
if [ ! -d "$wwwdir" ]; then
  echo "WARNING: Verzeichnis $wwwdir existiert nicht, Script wird beendet."
  exit 1
fi
if [ -d "$etcdir" ]; then
  echo "WARNING: Verzeichnis $etcdir existiert schon, Script wird beendet."
  echo "Ein mehrfach-Ausfuehren des Scriptes macht die Installation unbrauchbar."
  exit 1
fi
if [ "$(id -u)" != "0" ]; then
   echo "Script muss als root ausgefuehrt werden!" 1>&2
   exit 1
fi
###########################################################################
echo "Lege $etcdir an ..."
mkdir "$etcdir"
chown root:www-data -R "$etcdir"
chmod 755 "$etcdir"
 
###########################################################################
echo "Setze Rechte ..."
chown root:www-data "$wwwdir/static"
chmod 775 "$wwwdir/static"
 
###########################################################################
echo "Starte Conf-Verzeichnisse zu verschieben und verlinken ..."
verzliste="/horde /gollem /imp /ingo /kronolith /mnemo /nag /turba /trean"
for verz in $verzliste ; do
  if [ $verz == "/horde" ] ; then
    wverz="$wwwdir/config"
  else
    wverz="$wwwdir$verz/config"
  fi
  everz="$etcdir$verz"
  echo "  Verschieben von $wverz --> $everz"
  mv $wverz $everz
  ln -s $everz $wverz
  chown root:www-data -R $everz
  chmod 755 $everz
done
###########################################################################
echo "Richte Apache ein ..."
text="\
Alias /horde $wwwdir\n\
<Directory $wwwdir>\n\
  Options Indexes FollowSymLinks MultiViews\n\
  AllowOverride All\n\
  AcceptPathInfo On\n\
  Order allow,deny\n\
  allow from all\n\
</Directory>\n"
 
echo -e "$text" > "$etcdir/apache.conf"
ln -s "$etcdir/apache.conf" "/etc/apache2/conf.d/horde5.conf"
 
###########################################################################
echo "Richte php ein ..."
pecl install lzf
echo "extension=lzf.so" > /etc/php5/apache2/conf.d/lzf.ini
pear install horde/horde_lz4
echo "extension=horde_lz4.so" > /etc/php5/apache2/conf.d/lz4.ini
echo "extension=msgpack.so" > /etc/php5/apache2/conf.d/msgpack.ini
sed -i 's|session\.gc_divisor.*|session\.gc_divisor  = 10000|' /etc/php5/apache2/php.ini
service apache2 restart
 
###########################################################################
configfile="$etcdir/horde/conf.php"
cp $configfile "$etcdir/horde/conf.bak.php"
base=`awk '/BASE/ { print $2 } ' /etc/ldap/ldap.conf`
echo "Verwende Base-DN: $base"
###########################################################################
echo "Setze LDAP-Authentifizierung ..."
echo "Installiere horde_ldap ... bitte warten ..."
pear install -a horde/horde_ldap
 
sed -i "/\$conf\W\Wldap\W.*/ d" $configfile
 
text="\
\$conf['ldap']['hostspec'] = 'localhost';\n\
\$conf['ldap']['tls'] = false;\n\
\$conf['ldap']['version'] = 3;\n\
\$conf['ldap']['bindas'] = 'anon';\n\
\$conf['ldap']['useldap'] = true;"
 
sed -i "/\/\* CONFIG END\./ i $text" $configfile
 
z1=`grep "'count_bad_logins'" $configfile`
z2=`grep "'login_block'" $configfile`
z3=`grep "'login_block_count'" $configfile`
z4=`grep "'login_block_time'" $configfile`
 
sed -i "/\$conf\W\Wauth\W\W\W\Wparams\W.*/ d" $configfile
sed -i "/\$conf\W\Wauth\W\W\W\Wdriver\W.*/ d" $configfile
 
text="\
\$conf['auth']['params']['basedn'] = '$base';\n\
\$conf['auth']['params']['scope'] = 'sub';\n\
\$conf['auth']['params']['ad'] = false;\n\
\$conf['auth']['params']['uid'] = 'uid';\n\
\$conf['auth']['params']['encryption'] = 'ssha';\n\
\$conf['auth']['params']['newuser_objectclass'] = array('shadowAccount', 'inetOrgPerson');\n\
\$conf['auth']['params']['filter'] = '(objectclass=posixAccount)';\n\
\$conf['auth']['params']['password_expiration'] = 'no';\n\
\$conf['auth']['params']['driverconfig'] = 'horde';\n\
\$conf['auth']['driver'] = 'ldap';"
 
sed -i "/\/\* CONFIG END\./ i $text" $configfile
 
sed -i "/\/\* CONFIG END\./ i $z1" $configfile
sed -i "/\/\* CONFIG END\./ i $z2" $configfile
sed -i "/\/\* CONFIG END\./ i $z3" $configfile
sed -i "/\/\* CONFIG END\./ i $z4" $configfile
 
echo "Richte LDAP-Groups ein ..."
 
sed -i "/\$conf\W\Wgroup\W.*/ d" $configfile
 
text="\
\$conf['group']['params']['basedn'] = '$base';\n\
\$conf['group']['params']['scope'] = 'sub';\n\
\$conf['group']['params']['gid'] = 'cn';\n\
\$conf['group']['params']['memberuid'] = 'memberUID';\n\
\$conf['group']['params']['attrisdn'] = false;\n\
\$conf['group']['params']['newgroup_objectclass'] = array('posixGroup', 'hordeGroup');\n\
\$conf['group']['params']['search']['objectclass'] = array('posixGroup');\n\
\$conf['group']['params']['search']['filter_type'] = 'objectclass';\n\
\$conf['group']['params']['driverconfig'] = 'horde';\n\
\$conf['group']['driver'] = 'Ldap';"
 
sed -i "/\/\* CONFIG END\./ i $text" $configfile
 
echo "<?php" > "$etcdir/imp/backends.local.php"
echo -e "\$servers['imap']['hordeauth'] = true;" >> "$etcdir/imp/backends.local.php"
 
###########################################################################
echo "Richte Dateimanager Gollem ein ..."
text="\
<?php\n\
\$backends['ftp']['disabled'] = true;\n\
\$backends['smb'] = array(\n\
     'disabled' => false,'name' => 'Server','driver' => 'smb','hordeauth' => true,\n\
     'params' => array('hostspec' => 'localhost', 'port' => 139, 'share' => 'homes', 'smbclient' => '/usr/bin/smbclient','ipaddress' => '127.0.0.1'),\n\
     'loginparams' => array(),\n\
     'attributes' => array('type','name','edit','download','modified','size')\n\
);"
echo -e "$text" > "$etcdir/gollem/backends.d/samba.php"
rm "$etcdir/gollem/backends.d/10-webmail.php"
 
###########################################################################
echo "Richte Log-Datei ein ..."
mkdir /var/log/horde
chown www-data:www-data /var/log/horde
sed -i "s/\$conf.*.log.*.type.*/\$conf\[\'log\'\]\[\'type\'\] = \'file\';/" $configfile
sed -i "s/\$conf.*.log.*.name.*/\$conf\[\'log\'\]\[\'name\'\] = \'\/var\/log\/horde\/horde5\.log\';/" $configfile
 
###########################################################################
echo "Richte neues sicheres Kennwort für mysql ein ..."
kennwort=`pwgen -s 20 1`
sed -i "s/\$conf.*.sql.*.password\W.*/\$conf\[\'sql\'\]\[\'password\'\] = '$kennwort';/" $configfile
mysql -e "SET PASSWORD FOR h5admin@localhost = PASSWORD ('$kennwort');"
 
###########################################################################
 
exit 0
 [[anwenderwiki:webapps:horde:postinstall]] anwenderwiki/webapps/horde/postinstall.txt · Zuletzt geändert: 2014/08/03 08:39 (Externe Bearbeitung)