====== Installer le connecteur funambol pour SOGo ======
Source: http://wiki.contribs.org/Funambol
===== Installation du serveur Funambol =====
* Télécharger le serveur funambol
mkdir -p ./funambol
cd ./funambol
wget http://download.forge.objectweb.org/sync4j/funambol-9.0.0.bin
* Puis l'exécuter
chmod +x funambol-9.0.0.bin
./funambol-9.0.0.bin
* Accepter la licence, et valider le choix du répertoire de destination (/opt)
* À la fin, l'installateur vous demande si vous voulez démarrer, le serveur, il faut choisir **no**
===== Installation du driver MySQL =====
Pour que le connecteur SOGo fonctionne, funambol doit utiliser une base MySQL. Il faut donc installer le driver MySQL.
* Télécharger le driver depuis http://dev.mysql.com/downloads/connector/j/5.0.html
mkdir -p /opt/Funambol/tools/mysql/lib
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.8.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvzf mysql-connector-java-5.0.8.tar.gz
mv mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar /opt/Funambol/tools/mysql/lib
rm -rf mysql-connector-java-5.0.8/
* Créer une base de données mysql pour funambol
/usr/bin/openssl rand -base64 60 | tr -c -d '[:alnum:]' > my.pw
chmod 600 my.pw
db configuration setprop mysqld InnoDB enabled LocalNetworkingOnly no
expand-template /etc/my.cnf
sv t /service/mysqld
sleep 10
mysqladmin create funamboldb --default-character-set=utf8
mysql -e "grant all privileges on funamboldb.* to 'funamboluser'@'localhost' identified by '$(cat my.pw)'"
mysql -e 'flush privileges'
* Configurer funambol pour utiliser cette base de donnée
pw=$(cat my.pw)
sed -i -e "s/^dbms=.*/dbms=mysql/" \
-e "s/^jdbc\.classpath=.*/jdbc\.classpath=\.\.\/tools\/mysql\/lib\/mysql-connector-java-5.0.8-bin\.jar/" \
-e "s/^jdbc\.driver=.*/jdbc\.driver=com.mysql.jdbc.Driver/" \
-e "s/^jdbc\.url=.*/jdbc\.url=jdbc:mysql:\/\/localhost\/funamboldb?characterEncoding=UTF-8/" \
-e "s/^jdbc\.user=.*/jdbc\.user=funamboluser/" \
-e "s/^jdbc\.password=.*/jdbc\.password=$pw/" \
/opt/Funambol/ds-server/install.properties
dos2unix /opt/Funambol/ds-server/install.properties
* Désactiver le driver hypersonyc
sed -i -e "s/COMED=.*/COMED=false/" /opt/Funambol/bin/funambol
===== Création d'un utilisateur funambol =====
useradd -d /opt/Funambol -s /bin/false -c 'Funambol user' funambol
===== Démarrage automatique de funambol =====
db configuration set funambol service status enabled access private TCPPort 8080
Attention: par défaut, funambol utilise le port TCP 8080 et peut donc entrer en conflit avec dansguardian par exemple
Créer le script de démarrage:
cat <<'EOF' > /etc/init.d/funambol
#! /bin/bash
#
# funambol Start the funambol services
#
NAME="Funambol Server"
FUNAMBOL_HOME=/opt/Funambol/bin
FUNAMBOL_USER=funambol
FUNAMBOL_BIN=$FUNAMBOL_HOME"/funambol"
. /etc/rc.d/init.d/functions
#cd $FUNAMBOL_HOME
case "$1" in
start)
action "Starting $NAME" \
/bin/su -s /bin/bash -l $FUNAMBOL_USER $FUNAMBOL_BIN start
;;
stop)
action "Stopping $NAME" \
/bin/su -s /bin/bash -l $FUNAMBOL_USER $FUNAMBOL_BIN stop
;;
restart)
action "Restarting $NAME" \
/bin/su -s /bin/bash -l $FUNAMBOL_USER $FUNAMBOL_BIN stop && \
/bin/su -s /bin/bash -l $FUNAMBOL_USER $FUNAMBOL_BIN start
;;
*)
echo "Usage: /etc/init.d/funambol {start|stop|restart}"
exit 1
;;
esac
exit 0
EOF
chmod 755 /etc/init.d/funambol
* Créer les liens de démarrage et d'arrêt
ln -s /etc/init.d/e-smith-service /etc/rc.d/rc7.d/S98funambol
ln -s /etc/init.d/e-smith-service /etc/rc.d/rc6.d/K02funambol
ln -s /etc/init.d/e-smith-service /etc/rc.d/rc2.d/K02funambol
ln -s /etc/init.d/e-smith-service /etc/rc.d/rc1.d/K02funambol
ln -s /etc/init.d/e-smith-service /etc/rc.d/rc0.d/K02funambol
===== Installation du connecteur SOGo =====
Maintenant que le cœur du serveur funambol est installé, il faut mettre en place le connecteur SOGo
==== Installation des dépendances du connecteur ====
Le connecteur SOGo nécessite plusieurs composants java supplémentaires
wget http://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.1-bin.zip
unzip commons-collections-3.2.1-bin.zip
cp -p commons-collections-3.2.1/commons-collections-3.2.1.jar /opt/Funambol/tools/tomcat/lib/
rm -rf commons-collections-3.2.1
wget http://www.apache.org/dist/commons/configuration/binaries/commons-configuration-1.6.zip
unzip commons-configuration-1.6.zip
cp -p commons-configuration-1.6/commons-configuration-1.6.jar /opt/Funambol/tools/tomcat/lib/
rm -rf commons-configuration-1.6
wget http://www.apache.org/dist/commons/logging/binaries/commons-logging-1.1.1-bin.zip
unzip commons-logging-1.1.1-bin.zip
cp -p commons-logging-1.1.1/commons-logging-1.1.1.jar /opt/Funambol/tools/tomcat/lib/
rm -rf commons-logging-1.1.1
wget http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.zip
unzip commons-lang-2.5-bin.zip
cp -p commons-lang-2.5/commons-lang-2.5.jar /opt/Funambol/tools/tomcat/lib/
rm -rf commons-lang-2.5
wget http://json-simple.googlecode.com/files/json_simple.jar
cp json_simple.jar /opt/Funambol/tools/tomcat/lib/
==== Installation du connecteur ====
Maintenant que les dépendances sont installées, on peut nstaller le connecteur lui-même. Il faut vérifier la dernière version disponible sur http://www.sogo.nu/downloads/backend.html
* Téléchargement
wget http://www.sogo.nu/uploads/Funambol/funambol-sogo-1.0.8.s4j
cp funambol-sogo-1.0.8.s4j /opt/Funambol/ds-server/modules
* Configuration pour installation
Il faut éditer le fichier install.properties, et ajouter le module sogo sur la ligne modules-to-install
sed -i -r -e "s/^modules\-to\-install=(.*)$/modules\-to\-install=\1,funambol\-sogo\-1.0.8/" \
/opt/Funambol/ds-server/install.properties
===== Installation des modules et création des tables de la base de données =====
/opt/Funambol/bin/install
Et répondre oui (y) à toutes les questions
On peut maintenant modifier les droits sur l'ensemble de l'installation de funambol
chown -R funambol:funambol /opt/Funambol/
chmod 750 /opt/Funambol/
===== Démarrage du serveur funambol =====
On peut maintenant démarrer le serveur funambol
/etc/init.d/funambol start
qui devrait retourner OK si tout s'est bien passé
Si on accède à la page http://:8080/funambol/ds on devrait voir les informations du serveur.
===== Changer le mot de passe admin de funambol =====
sed -i -e "s/^JDBC_JAR=.*/JDBC_JAR=\/opt\/Funambol\/tools\/mysql\/lib\/mysql-connector-java-5.0.8-bin.jar/" \
/opt/Funambol/bin/admin-passwd
Puis:
/opt/Funambol/bin/admin-passwd
Et suivre les instructions (le mot de passe par défaut est **sa**)
===== Configuration du proxypass =====
Plutôt que d'ouvrir le serveur funambol directement sur l'interface externe, nous allons configurer un proxypass (apache redirigera les requêtes /funambol vers le serveur funambol)
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts
cat <<'EOF' > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/VirtualHosts/28funambolProxyPass
{
$haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ? 'yes' : 'no';
$access = (($funambol{'PublicAccess'} || 'no') eq 'yes') ? "all" : "$localAccess $externalSSLAccess";
$OUT = '';
if (($funambol{'status'} || 'disabled') eq 'enabled'){
if (($port eq ${'httpd-e-smith'}{'TCPPort'}) && ($haveSSL eq 'yes')){
$OUT .= " RewriteRule ^/funambol(/.*|\$) https://%{HTTP_HOST}/funambol/ds\$1 [L,R]\n";
}
else{
$OUT .= " ProxyPass /funambol http://127.0.0.1:$funambol{TCPPort}/funambol/ds\n";
$OUT .= " ProxyPassReverse /funambol http://127.0.0.1:$funambol{TCPPort}/funambol/ds\n";
}
$OUT .=<<"HERE";
SSLRequireSSL on
order deny,allow
deny from all
allow from $access
HERE
}
}
EOF
Puis on régénère la configuration d'apache, on vérifie que tout est ok, et on relance apache:
expand-template /etc/httpd/conf/httpd.conf
httpd -t
Si aucune erreur de syntaxe n'est détectée, on relance apache:
sv t /service/httpd-e-smith
===== Création des sources de synchronisation pour SOGo =====
cat <<'EOF' > sogo-sync-source-insert.sql
INSERT INTO `fnbl_sync_source` (`uri`, `config`, `name`, `sourcetype`) VALUES
('sogo-cal', 'sogo/sogo/sogo/sogo-cal.xml', 'sogo-cal', 'sogo'),
('sogo-card', 'sogo/sogo/sogo/sogo-card.xml', 'sogo-card', 'sogo'),
('sogo-todo', 'sogo/sogo/sogo/sogo-todo.xml', 'sogo-todo', 'sogo');
EOF
mysql funamboldb < sogo-sync-source-insert.sql
==== Calendrier ====
mkdir -p /opt/Funambol/config/sogo/sogo/sogo
mkdir -p /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml
touch /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml/template-begin
cat <<'EOF' > /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml/all
EOF
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-cal.xml
==== Carnet d'adresses ====
mkdir -p /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml
touch /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml/template-begin
cat <<'EOF' > /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml/all
{$sogod{'DbPassword'}}jdbc:mysql://localhost/sogosogotext/x-vcard1sogo-cardsogo-card
EOF
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-card.xml
==== Tâches ====
mkdir -p /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml
touch /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml/template-begin
cat <<'EOF' > /etc/e-smith/templates-custom/opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml/all
{$sogod{'DbPassword'}}jdbc:mysql://localhost/sogosogotext/x-vtodo1sogo-todosogo-todo
EOF
expand-template /opt/Funambol/config/sogo/sogo/sogo/sogo-todo.xml
===== Création automatique des utilisateurs funambol =====
sed -i -e "s|com/funambol/server/security/UserProvisioningOfficer.xml|ca/inverse/sogo/security/SOGoOfficer.xml|" \
/opt/Funambol/config/Funambol.xml
cat <<'EOF' > /opt/Funambol/config/ca/inverse/sogo/security/SOGoOfficer.xml
localhost20000
EOF
===== Redémarrer le serveur Funambol =====
Dernière étape:
/etc/init.d/funambol restart