====== 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 {$sogod{'DbPassword'}} jdbc:mysql://localhost/sogo sogo text/x-vevent 1 sogo-cal sogo-cal 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/sogo sogo text/x-vcard 1 sogo-card sogo-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/sogo sogo text/x-vtodo 1 sogo-todo sogo-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 localhost 20000 EOF ===== Redémarrer le serveur Funambol ===== Dernière étape: /etc/init.d/funambol restart